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 : const url = `${activeURL.replace('/xhr/resources', '')}/fetch/api/resources/bad-chunk-encoding.py?ms=1&count=2`; 7 : 1 : 8 : 1 : // Synchronous XMLHttpRequest should throw on bad chunk 9 [ + ]: 1 : (() => { 10 : 1 : const xhr = new XMLHttpRequest; 11 : 1 : 12 : 1 : xhr.open('GET', url, false); 13 : 1 : assert.throws( 14 [ + ]: 1 : () => { 15 : 1 : xhr.send(); 16 : 1 : }, 17 [ + ]: 1 : (err) => { 18 : 1 : assert(err instanceof DOMException, 'DOMException expected'); 19 : 1 : assert(err.name === 'NetworkError', 'NetworkError expected'); 20 : 1 : 21 : 1 : return true; 22 : 1 : } 23 : 1 : ); 24 : 1 : })(); 25 : 1 : 26 : 1 : // Asynchronous XMLHttpRequest should clear response on bad chunk 27 [ + ]: 1 : (() => { 28 : 1 : const xhr = new XMLHttpRequest; 29 : 1 : 30 : 1 : xhr.open('GET', url, true); 31 : 1 : 32 [ + ]: 1 : xhr.onreadystatechange = () => { 33 [ - ]: 2 : if(xhr.readyState === 3){ 34 : 0 : assert(xhr.responseText.indexOf('TEST_CHUNK') !== -1); 35 : 0 : } 36 : 1 : }; 37 : 1 : 38 [ + ]: 1 : xhr.onerror = () => { 39 : 1 : assert.strictEqual(xhr.responseText, ''); 40 : 1 : }; 41 : 1 : 42 : 1 : xhr.onload = () => { 43 : 0 : assert(false, 'unreached'); 44 : 1 : }; 45 : 1 : 46 : 1 : xhr.send(); 47 : 1 : })(); 48 : 1 : } 49 : 2 : 50 : 2 : /* 51 : 2 : * response-body-errors.any.js 52 : 2 : * 53 : 2 : 54 : 2 : // This will transmit two chunks TEST_CHUNK and then garbage, which should result in an error. 55 : 2 : const url = "/fetch/api/resources/bad-chunk-encoding.py?ms=1&count=2"; 56 : 2 : 57 : 2 : test(() => { 58 : 2 : client = new XMLHttpRequest(); 59 : 2 : client.open("GET", url, false); 60 : 2 : assert_throws_dom("NetworkError", () => client.send()); 61 : 2 : }, "Synchronous XMLHttpRequest should throw on bad chunk"); 62 : 2 : 63 : 2 : async_test(t => { 64 : 2 : client = new XMLHttpRequest(); 65 : 2 : client.open("GET", url, true); 66 : 2 : client.onreadystatechange = t.step_func(() => { 67 : 2 : if (client.readyState === 3) { 68 : 2 : assert_true(client.responseText.indexOf("TEST_CHUNK") !== -1); 69 : 2 : } 70 : 2 : }); 71 : 2 : client.onerror = t.step_func_done(() => { 72 : 2 : assert_equals(client.responseText, ""); 73 : 2 : }); 74 : 2 : client.onload = t.unreached_func(); 75 : 2 : client.send(); 76 : 2 : }, "Asynchronous XMLHttpRequest should clear response on bad chunk"); 77 : 2 : 78 : 2 : * 79 : 2 : * response-body-errors.any.js 80 : 2 : */