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 redirect_codes = new Set([301, 302, 303, 307, 308]);
7 : 1 :
8 [ + ]: 1 : for(let number of [300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 350, 399]){
9 : 13 : redirect(number);
10 : 13 : }
11 : 1 :
12 [ + ]: 1 : function redirect(code){
13 : 13 :
14 : 13 : let xhr = new XMLHttpRequest();
15 [ + ]: 13 : xhr.onreadystatechange = () => {
16 : 46 :
17 [ + ]: 46 : if(xhr.readyState === 4){
18 [ + ]: 13 : if(redirect_codes.has(code)){
19 : 5 : assert.strictEqual(xhr.getResponseHeader('x-request-method'), 'GET');
20 : 5 : assert.strictEqual(xhr.getResponseHeader('x-request-content-type'), 'application/x-pony');
21 : 5 : assert.strictEqual(xhr.status, 200);
22 [ + ]: 5 : }
23 : 8 : else{
24 : 8 : assert.strictEqual(xhr.getResponseHeader('x-request-method'), null);
25 : 8 : assert.strictEqual(xhr.getResponseHeader('x-request-content-type'), null);
26 : 8 : assert.strictEqual(xhr.status, code);
27 : 8 : }
28 : 13 : xhr.onreadystatechange = null;
29 : 13 : }
30 : 13 : };
31 : 13 :
32 : 13 : xhr.open('GET', `${activeURL}/redirect.py?location=/xhr/resources/content.py&code=${code}`);
33 : 13 : xhr.setRequestHeader('Content-Type', 'application/x-pony');
34 : 13 : xhr.send();
35 : 13 : }
36 : 1 : }
37 : 2 :
38 : 2 : /*
39 : 2 : * send-redirect.htm
40 : 2 : *
41 : 2 :
42 : 2 : <!doctype html>
43 : 2 : <html>
44 : 2 : <head>
45 : 2 : <title>XMLHttpRequest: send() - Redirects (basics)</title>
46 : 2 : <script src="/resources/testharness.js"></script>
47 : 2 : <script src="/resources/testharnessreport.js"></script>
48 : 2 : <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following::dl[1]/dt[2] following::dl[1]/dd[2]/ol/li[1] following::dl[1]/dd[2]/ol/li[2]" />
49 : 2 : </head>
50 : 2 : <body>
51 : 2 : <div id="log"></div>
52 : 2 : <script>
53 : 2 : // https://fetch.spec.whatwg.org/#statuses
54 : 2 : var redirect_codes = new Set([301, 302, 303, 307, 308]);
55 : 2 : function redirect(code) {
56 : 2 : var test = async_test(`${document.title} (${code} does ${redirect_codes.has(code)? "redirect": "not redirect"})`);
57 : 2 : test.step(function() {
58 : 2 : var client = new XMLHttpRequest();
59 : 2 : client.onreadystatechange = function() {
60 : 2 : test.step(function() {
61 : 2 : if(client.readyState == 4) {
62 : 2 : if (redirect_codes.has(code)) {
63 : 2 : assert_equals(client.getResponseHeader("x-request-method"), "GET");
64 : 2 : assert_equals(client.getResponseHeader("x-request-content-type"), "application/x-pony");
65 : 2 : assert_equals(client.status, 200);
66 : 2 : } else {
67 : 2 : assert_equals(client.getResponseHeader("x-request-method"), null);
68 : 2 : assert_equals(client.getResponseHeader("x-request-content-type"), null);
69 : 2 : assert_equals(client.status, code);
70 : 2 : }
71 : 2 : test.done();
72 : 2 : }
73 : 2 : })
74 : 2 : }
75 : 2 : client.open("GET", "resources/redirect.py?location=content.py&code=" + code);
76 : 2 : client.setRequestHeader("Content-Type", "application/x-pony");
77 : 2 : client.send(null);
78 : 2 : })
79 : 2 : }
80 : 2 :
81 : 2 : for (var number of [300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 350, 399]) {
82 : 2 : redirect(number);
83 : 2 : }
84 : 2 : </script>
85 : 2 : </body>
86 : 2 : </html>
87 : 2 :
88 : 2 : *
89 : 2 : * send-redirect.htm
90 : 2 : */
|