Branch data Line data Source code
1 [ + ]: 2 : import assert from 'node:assert/strict'; 2 : 2 : import { XMLHttpRequest } from '../../../lib/whatwg-xhr.js'; 3 : 2 : 4 [ + ]: 2 : export default (activeURL) => { 5 : 1 : 6 : 1 : noContentTypeTest('POST'); // 'No content type (POST)'; 7 : 1 : noContentTypeTest('PUT'); // 'No content type (PUT)'; 8 : 1 : noContentTypeTest('HEAD'); // 'No content type (HEAD)'; 9 : 1 : 10 [ + ]: 1 : function noContentTypeTest(method){ 11 : 3 : 12 : 3 : let xhr = new XMLHttpRequest(); 13 : 3 : 14 : 3 : xhr.open(method, `${activeURL}/content.py`, false); 15 : 3 : 16 : 3 : xhr.upload.onloadstart = () => { 17 : 0 : assert(false, 'this event should not fire for null'); 18 : 3 : }; 19 : 3 : 20 : 3 : xhr.send(null); 21 : 3 : 22 [ + ][ + ]: 3 : let expectedLength = method == 'HEAD' ? 'NO' : '0'; 23 : 3 : 24 : 3 : assert.strictEqual(xhr.getResponseHeader('x-request-content-length'), expectedLength); 25 : 3 : assert.strictEqual(xhr.getResponseHeader('x-request-content-type'), 'NO'); 26 : 3 : } 27 : 1 : 28 : 1 : explicitContentTypeTest('POST'); // 'Explicit content type (POST)'; 29 : 1 : explicitContentTypeTest('PUT'); // 'Explicit content type (PUT)'); 30 : 1 : explicitContentTypeTest('HEAD'); // 'Explicit content type (HEAD)'); 31 : 1 : 32 [ + ]: 1 : function explicitContentTypeTest(method){ 33 : 3 : 34 : 3 : let xhr = new XMLHttpRequest(); 35 : 3 : 36 : 3 : xhr.open(method, `${activeURL}/content.py`, false); 37 : 3 : 38 : 3 : let content_type = 'application/x-foo'; 39 : 3 : xhr.setRequestHeader('Content-Type', content_type); 40 : 3 : xhr.send(null); 41 : 3 : 42 [ + ][ + ]: 3 : let expectedLength = method == 'HEAD' ? 'NO' : '0'; 43 : 3 : assert.strictEqual(xhr.getResponseHeader('x-request-content-length'), expectedLength); 44 : 3 : assert.strictEqual(xhr.getResponseHeader('x-request-content-type'), content_type); 45 : 3 : } 46 : 1 : } 47 : 2 : 48 : 2 : /* 49 : 2 : * send-entity-body-none.htm 50 : 2 : * 51 : 2 : 52 : 2 : <!doctype html> 53 : 2 : <html> 54 : 2 : <head> 55 : 2 : <title>XMLHttpRequest: send(null) - no entity body</title> 56 : 2 : <script src="/resources/testharness.js"></script> 57 : 2 : <script src="/resources/testharnessreport.js"></script> 58 : 2 : <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::ol[1]/li[4] following::ol[1]/li[7]" /> 59 : 2 : </head> 60 : 2 : <body> 61 : 2 : <div id="log"></div> 62 : 2 : <script> 63 : 2 : function noContentTypeTest(method) { 64 : 2 : var client = new XMLHttpRequest() 65 : 2 : client.open(method, "resources/content.py", false) 66 : 2 : client.upload.onloadstart = function(){assert_unreached('this event should not fire for null')} 67 : 2 : client.send(null) 68 : 2 : var expectedLength = method == "HEAD" ? "NO" : "0"; 69 : 2 : assert_equals(client.getResponseHeader("x-request-content-length"), expectedLength) 70 : 2 : assert_equals(client.getResponseHeader("x-request-content-type"), "NO") 71 : 2 : } 72 : 2 : test(function() { noContentTypeTest("POST"); }, "No content type (POST)"); 73 : 2 : test(function() { noContentTypeTest("PUT"); }, "No content type (PUT)"); 74 : 2 : test(function() { noContentTypeTest("HEAD"); }, "No content type (HEAD)"); 75 : 2 : 76 : 2 : function explicitContentTypeTest(method) { 77 : 2 : var client = new XMLHttpRequest() 78 : 2 : client.open(method, "resources/content.py", false) 79 : 2 : var content_type = 'application/x-foo' 80 : 2 : client.setRequestHeader('Content-Type', content_type) 81 : 2 : client.send(null) 82 : 2 : var expectedLength = method == "HEAD" ? "NO" : "0"; 83 : 2 : assert_equals(client.getResponseHeader("x-request-content-length"), expectedLength) 84 : 2 : assert_equals(client.getResponseHeader("x-request-content-type"), content_type) 85 : 2 : } 86 : 2 : test(function() { explicitContentTypeTest("POST"); }, "Explicit content type (POST)"); 87 : 2 : test(function() { explicitContentTypeTest("PUT"); }, "Explicit content type (PUT)"); 88 : 2 : test(function() { explicitContentTypeTest("HEAD"); }, "Explicit content type (HEAD)"); 89 : 2 : </script> 90 : 2 : </body> 91 : 2 : </html> 92 : 2 : 93 : 2 : * 94 : 2 : * send-entity-body-none.htm 95 : 2 : */