Skip to content

Commit e90a7fd

Browse files
KhafraDevronag
authored andcommitted
wpt: add header-values-normalize.any.js
1 parent 1061f6c commit e90a7fd

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed

test/wpt/status/fetch.status.json

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,5 +162,66 @@
162162
"XMLHttpRequest with all valid values",
163163
"fetch() with all valid values"
164164
]
165+
},
166+
"header-values-normalize.any.js": {
167+
"fail": [
168+
"XMLHttpRequest with value %00",
169+
"XMLHttpRequest with value %01",
170+
"XMLHttpRequest with value %02",
171+
"XMLHttpRequest with value %03",
172+
"XMLHttpRequest with value %04",
173+
"XMLHttpRequest with value %05",
174+
"XMLHttpRequest with value %06",
175+
"XMLHttpRequest with value %07",
176+
"XMLHttpRequest with value %08",
177+
"XMLHttpRequest with value %09",
178+
"XMLHttpRequest with value %0A",
179+
"XMLHttpRequest with value %0D",
180+
"XMLHttpRequest with value %0E",
181+
"XMLHttpRequest with value %0F",
182+
"XMLHttpRequest with value %10",
183+
"XMLHttpRequest with value %11",
184+
"XMLHttpRequest with value %12",
185+
"XMLHttpRequest with value %13",
186+
"XMLHttpRequest with value %14",
187+
"XMLHttpRequest with value %15",
188+
"XMLHttpRequest with value %16",
189+
"XMLHttpRequest with value %17",
190+
"XMLHttpRequest with value %18",
191+
"XMLHttpRequest with value %19",
192+
"XMLHttpRequest with value %1A",
193+
"XMLHttpRequest with value %1B",
194+
"XMLHttpRequest with value %1C",
195+
"XMLHttpRequest with value %1D",
196+
"XMLHttpRequest with value %1E",
197+
"XMLHttpRequest with value %1F",
198+
"XMLHttpRequest with value %20",
199+
"fetch() with value %01",
200+
"fetch() with value %02",
201+
"fetch() with value %03",
202+
"fetch() with value %04",
203+
"fetch() with value %05",
204+
"fetch() with value %06",
205+
"fetch() with value %07",
206+
"fetch() with value %08",
207+
"fetch() with value %0E",
208+
"fetch() with value %0F",
209+
"fetch() with value %10",
210+
"fetch() with value %11",
211+
"fetch() with value %12",
212+
"fetch() with value %13",
213+
"fetch() with value %14",
214+
"fetch() with value %15",
215+
"fetch() with value %16",
216+
"fetch() with value %17",
217+
"fetch() with value %18",
218+
"fetch() with value %19",
219+
"fetch() with value %1A",
220+
"fetch() with value %1B",
221+
"fetch() with value %1C",
222+
"fetch() with value %1D",
223+
"fetch() with value %1E",
224+
"fetch() with value %1F"
225+
]
165226
}
166227
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// META: title=Header value normalizing test
2+
// META: global=window,worker
3+
// META: timeout=long
4+
5+
"use strict";
6+
7+
for(let i = 0; i < 0x21; i++) {
8+
let fail = false,
9+
strip = false
10+
11+
// REMOVE 0x0B/0x0C exception once https://github.com/web-platform-tests/wpt/issues/8372 is fixed
12+
if(i === 0x0B || i === 0x0C)
13+
continue
14+
15+
if(i === 0) {
16+
fail = true
17+
}
18+
19+
if(i === 0x09 || i === 0x0A || i === 0x0D || i === 0x20) {
20+
strip = true
21+
}
22+
23+
let url = "../resources/inspect-headers.py?headers=val1|val2|val3",
24+
val = String.fromCharCode(i),
25+
expectedVal = strip ? "" : val,
26+
val1 = val,
27+
expectedVal1 = expectedVal,
28+
val2 = "x" + val,
29+
expectedVal2 = "x" + expectedVal,
30+
val3 = val + "x",
31+
expectedVal3 = expectedVal + "x"
32+
33+
// XMLHttpRequest is not available in service workers
34+
if (!self.GLOBAL.isWorker()) {
35+
async_test((t) => {
36+
let xhr = new XMLHttpRequest()
37+
xhr.open("POST", url)
38+
if(fail) {
39+
assert_throws_dom("SyntaxError", () => xhr.setRequestHeader("val1", val1))
40+
assert_throws_dom("SyntaxError", () => xhr.setRequestHeader("val2", val2))
41+
assert_throws_dom("SyntaxError", () => xhr.setRequestHeader("val3", val3))
42+
t.done()
43+
} else {
44+
xhr.setRequestHeader("val1", val1)
45+
xhr.setRequestHeader("val2", val2)
46+
xhr.setRequestHeader("val3", val3)
47+
xhr.onload = t.step_func_done(() => {
48+
assert_equals(xhr.getResponseHeader("x-request-val1"), expectedVal1)
49+
assert_equals(xhr.getResponseHeader("x-request-val2"), expectedVal2)
50+
assert_equals(xhr.getResponseHeader("x-request-val3"), expectedVal3)
51+
})
52+
xhr.send()
53+
}
54+
}, "XMLHttpRequest with value " + encodeURI(val))
55+
}
56+
57+
promise_test((t) => {
58+
if(fail) {
59+
return Promise.all([
60+
promise_rejects_js(t, TypeError, fetch(url, { headers: {"val1": val1} })),
61+
promise_rejects_js(t, TypeError, fetch(url, { headers: {"val2": val2} })),
62+
promise_rejects_js(t, TypeError, fetch(url, { headers: {"val3": val3} }))
63+
])
64+
} else {
65+
return fetch(url, { headers: {"val1": val1, "val2": val2, "val3": val3} }).then((res) => {
66+
assert_equals(res.headers.get("x-request-val1"), expectedVal1)
67+
assert_equals(res.headers.get("x-request-val2"), expectedVal2)
68+
assert_equals(res.headers.get("x-request-val3"), expectedVal3)
69+
})
70+
}
71+
}, "fetch() with value " + encodeURI(val))
72+
}

0 commit comments

Comments
 (0)