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 : do_test('GET', 'data:text/plain,Hello, World!');
7 : 1 : do_test('GET', 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==', undefined, ' (base64)');
8 : 1 : do_test('GET', 'data:text/html,Hello, World!', 'text/html');
9 : 1 : do_test('GET', 'data:text/html;charset=UTF-8,Hello, World!', 'text/html;charset=UTF-8');
10 : 1 : do_test('GET', 'data:image/png,Hello, World!', 'image/png');
11 : 1 : do_test('POST', 'data:text/plain,Hello, World!');
12 : 1 : do_test('PUT', 'data:text/plain,Hello, World!');
13 : 1 : do_test('DELETE', 'data:text/plain,Hello, World!');
14 : 1 : do_test('HEAD', 'data:text/plain,Hello, World!');
15 : 1 : do_test('UNICORN', 'data:text/plain,Hello, World!');
16 : 1 :
17 [ + ]: 1 : function do_test(method, url, mimeType, testNamePostfix){
18 : 10 :
19 [ + ]: 10 : if(typeof mimeType === 'undefined' || mimeType === null)
20 [ + ]: 10 : mimeType = 'text/plain';
21 : 10 :
22 : 10 : let xhr = new XMLHttpRequest();
23 [ + ][ + ]: 10 : let body = method === 'HEAD' ? '' : 'Hello, World!';
24 : 10 :
25 [ + ]: 10 : xhr.onreadystatechange = () => {
26 : 40 : if(xhr.readyState !== 4)
27 [ + ][ + ]: 40 : return;
28 : 10 :
29 : 10 : assert.strictEqual(xhr.responseText, body);
30 : 10 : assert.strictEqual(xhr.status, 200);
31 : 10 : assert.strictEqual(xhr.getResponseHeader('Content-Type'), mimeType);
32 : 10 :
33 : 10 : let allHeaders = xhr.getAllResponseHeaders();
34 : 10 :
35 : 10 : assert(/content\-type\:/i.test(allHeaders), 'getAllResponseHeaders() includes Content-Type');
36 : 10 : assert(!/content\-length\:/i.test(allHeaders), 'getAllResponseHeaders() must not include Content-Length');
37 : 10 :
38 : 10 : xhr.onreadystatechange = null;
39 : 10 : };
40 : 10 :
41 : 10 : xhr.open(method, url);
42 : 10 : xhr.send(null);
43 : 10 : }
44 : 1 : }
45 : 2 :
46 : 2 : /*
47 : 2 : * data-uri.htm
48 : 2 : *
49 : 2 :
50 : 2 : <!doctype html>
51 : 2 : <meta charset=utf-8>
52 : 2 : <title>XMLHttpRequest: data URLs</title>
53 : 2 : <script src="/resources/testharness.js"></script>
54 : 2 : <script src="/resources/testharnessreport.js"></script>
55 : 2 : <div id="log"></div>
56 : 2 :
57 : 2 : <script>
58 : 2 : function do_test(method, url, mimeType, testNamePostfix) {
59 : 2 : if (typeof mimeType === 'undefined' || mimeType === null) mimeType = 'text/plain';
60 : 2 : var test = async_test("XHR method " + method + " with MIME type " + mimeType + (testNamePostfix||''));
61 : 2 : test.step(function() {
62 : 2 : var client = new XMLHttpRequest(),
63 : 2 : body = method === "HEAD" ? "" : "Hello, World!";
64 : 2 : client.onreadystatechange = test.step_func(function () {
65 : 2 : if (client.readyState !== 4) {
66 : 2 : return;
67 : 2 : }
68 : 2 : assert_equals(client.responseText, body);
69 : 2 : assert_equals(client.status, 200);
70 : 2 : assert_equals(client.getResponseHeader('Content-Type'), mimeType);
71 : 2 : var allHeaders = client.getAllResponseHeaders();
72 : 2 : assert_regexp_match(allHeaders, /content\-type\:/i, 'getAllResponseHeaders() includes Content-Type');
73 : 2 : assert_false(/content\-length\:/i.test(allHeaders), 'getAllResponseHeaders() must not include Content-Length');
74 : 2 : test.done();
75 : 2 : });
76 : 2 : client.open(method, url);
77 : 2 : client.send(null);
78 : 2 : });
79 : 2 : }
80 : 2 : do_test('GET', "data:text/plain,Hello, World!");
81 : 2 : do_test('GET', "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==", undefined, " (base64)");
82 : 2 : do_test('GET', "data:text/html,Hello, World!", 'text/html');
83 : 2 : do_test('GET', "data:text/html;charset=UTF-8,Hello, World!", 'text/html;charset=UTF-8');
84 : 2 : do_test('GET', "data:image/png,Hello, World!", 'image/png');
85 : 2 : do_test('POST', "data:text/plain,Hello, World!");
86 : 2 : do_test('PUT', "data:text/plain,Hello, World!");
87 : 2 : do_test('DELETE', "data:text/plain,Hello, World!");
88 : 2 : do_test('HEAD', "data:text/plain,Hello, World!");
89 : 2 : do_test('UNICORN', "data:text/plain,Hello, World!");
90 : 2 : </script>
91 : 2 :
92 : 2 : *
93 : 2 : * data-uri.htm
94 : 2 : */
|