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 : let blobTests = [ 7 : 1 : ['no mime type', new Blob(['data'])], 8 : 1 : ['invalid mime type', new Blob(['data'], {type: 'Invalid \r\n mime \r\n type'})] 9 : 1 : ]; 10 : 1 : 11 [ + ]: 1 : blobTests.forEach((item) => { 12 : 2 : doSyncTest(item, 'POST'); 13 : 2 : doAsyncTest(item, 'POST'); 14 : 2 : 15 : 2 : doSyncTest(item, 'PUT'); 16 : 2 : doAsyncTest(item, 'PUT'); 17 : 1 : }); 18 : 1 : 19 [ + ]: 1 : function doSyncTest(testItem, method){ 20 : 4 : 21 : 4 : let xhr = new XMLHttpRequest(); 22 : 4 : 23 : 4 : xhr.open(method, `${activeURL}/content.py`, false); 24 : 4 : xhr.send(testItem[1]); 25 : 4 : 26 : 4 : assert.strictEqual(xhr.getResponseHeader('X-Request-Content-Length'), '4'); 27 : 4 : assert.strictEqual(xhr.getResponseHeader('X-Request-Content-Type'), 'NO'); 28 : 4 : } 29 : 1 : 30 [ + ]: 1 : function doAsyncTest(testItem, method) { 31 : 4 : 32 : 4 : let xhr = new XMLHttpRequest(); 33 : 4 : 34 [ + ]: 4 : xhr.onreadystatechange = () => { 35 [ + ]: 16 : if(xhr.readyState == 4){ 36 : 4 : 37 : 4 : assert.strictEqual(xhr.getResponseHeader('X-Request-Content-Length'), '4'); 38 : 4 : assert.strictEqual(xhr.getResponseHeader('X-Request-Content-Type'), 'NO'); 39 : 4 : 40 : 4 : xhr.onreadystatechange = null; 41 : 4 : } 42 : 4 : }; 43 : 4 : 44 : 4 : xhr.open(method, `${activeURL}/content.py`, true); 45 : 4 : xhr.send(testItem[1]); 46 : 4 : } 47 : 1 : } 48 : 2 : 49 : 2 : /* 50 : 2 : * send-blob-with-no-mime-type.html 51 : 2 : * 52 : 2 : 53 : 2 : <!DOCTYPE html> 54 : 2 : <html> 55 : 2 : <head> 56 : 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[4]/dl[1]/dd[2]/p[3]"/> 57 : 2 : <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute" data-tested-assertations="following::ol[1]/li[3]"/> 58 : 2 : <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetype-attribute" data-tested-assertations="following::ol[1]/li[4]"/> 59 : 2 : <link rel="help" href="https://xhr.spec.whatwg.org/#the-response-attribute" data-tested-assertations="following::a[contains(@href,'#blob-response-entity-body')]/.."/> 60 : 2 : 61 : 2 : <script src="/resources/testharness.js"></script> 62 : 2 : <script src="/resources/testharnessreport.js"></script> 63 : 2 : <title>XMLHttpRequest: The send() method: Blob data with no mime type</title> 64 : 2 : </head> 65 : 2 : 66 : 2 : <body> 67 : 2 : <div id="log"></div> 68 : 2 : 69 : 2 : <script type="text/javascript"> 70 : 2 : var blobTests = [ 71 : 2 : ["no mime type", new Blob(["data"])], 72 : 2 : ["invalid mime type", new Blob(["data"], {type: "Invalid \r\n mime \r\n type"})] 73 : 2 : ]; 74 : 2 : 75 : 2 : function doSyncTest(testItem, method) { 76 : 2 : test(function() { 77 : 2 : var xhr = new XMLHttpRequest(); 78 : 2 : xhr.open(method, "./resources/content.py", false); 79 : 2 : xhr.send(testItem[1]); 80 : 2 : 81 : 2 : assert_equals(xhr.getResponseHeader("X-Request-Content-Length"), "4"); 82 : 2 : assert_equals(xhr.getResponseHeader("X-Request-Content-Type"), "NO"); 83 : 2 : }, "Synchronous blob loading with " + testItem[0] + " [" + method + "]"); 84 : 2 : } 85 : 2 : 86 : 2 : function doAsyncTest(testItem, method) { 87 : 2 : var atest = async_test("Asynchronous blob loading with " + testItem[0] + " [" + method + "]"); 88 : 2 : atest.step(function() { 89 : 2 : var xhr = new XMLHttpRequest(); 90 : 2 : xhr.onreadystatechange = function() { 91 : 2 : if (xhr.readyState == 4) { 92 : 2 : atest.step(function() { 93 : 2 : assert_equals(xhr.getResponseHeader("X-Request-Content-Length"), "4"); 94 : 2 : assert_equals(xhr.getResponseHeader("X-Request-Content-Type"), "NO"); 95 : 2 : }); 96 : 2 : atest.done(); 97 : 2 : } 98 : 2 : } 99 : 2 : xhr.open(method, "./resources/content.py", true); 100 : 2 : xhr.send(testItem[1]); 101 : 2 : }); 102 : 2 : } 103 : 2 : 104 : 2 : blobTests.forEach(function(item){ 105 : 2 : doSyncTest(item, "POST"); 106 : 2 : doAsyncTest(item, "POST"); 107 : 2 : 108 : 2 : doSyncTest(item, "PUT"); 109 : 2 : doAsyncTest(item, "PUT"); 110 : 2 : }); 111 : 2 : </script> 112 : 2 : </body> 113 : 2 : </html> 114 : 2 : 115 : 2 : * 116 : 2 : * send-blob-with-no-mime-type.html 117 : 2 : */