Skip to content

Commit

Permalink
Bug 1455613 [wpt PR 10548] - Parsing Content-Length, a=testonly
Browse files Browse the repository at this point in the history
Automatic update from web-platform-tests
Fetch: parsing Content-Length

For whatwg/fetch#1183.
--

wpt-commits: 3a48a22074a41e7817a17dfbf5cb6c61277f8877
wpt-pr: 10548

UltraBlame original commit: 5c299636aa6340c1499f89538f61c57c9ea2c615
  • Loading branch information
marco-c committed Mar 15, 2021
1 parent b48f94f commit 0da42a7
Show file tree
Hide file tree
Showing 4 changed files with 158 additions and 0 deletions.
19 changes: 19 additions & 0 deletions testing/web-platform/tests/fetch/content-length/parsing.window.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
promise_test(() => {
return fetch("resources/content-lengths.json").then(res => res.json()).then(runTests);
}, "Loading JSON…");

function runTests(testUnits) {
testUnits.forEach(testUnit => {
const input = encodeURIComponent(testUnit.input);
promise_test(t => {
const result = fetch("resources/content-length.py?length=" + input);
if (testUnit.output === null) {
return promise_rejects_js(t, TypeError, result);
} else {
return result.then(res => res.text()).then(text => {
assert_equals(text.length, testUnit.output);
});
}
}, input);
});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
def main(request, response):
response.add_required_headers = False
output = b"HTTP/1.1 200 OK\r\n"
output += b"Content-Type: text/plain;charset=UTF-8\r\n"
output += request.GET.first(b"length") + b"\r\n"
output += b"\r\n"
output += b"Fact: this is really forty-two bytes long."
response.writer.write(output)
response.close_connection = True
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
[
{
"input": "Content-Length: 42",
"output": 42
},
{
"input": "Content-Length: 42,42",
"output": 42
},
{
"input": "Content-Length: 42\r\nContent-Length: 42",
"output": 42
},
{
"input": "Content-Length: 42\r\nContent-Length: 42,42",
"output": 42
},
{
"input": "Content-Length: 30",
"output": 30
},
{
"input": "Content-Length: 30,30",
"output": 30
},
{
"input": "Content-Length: 30\r\nContent-Length: 30",
"output": 30
},
{
"input": "Content-Length: 30\r\nContent-Length: 30,30",
"output": 30
},
{
"input": "Content-Length: 42,30",
"output": null
},
{
"input": "Content-Length: 30,42",
"output": null
},
{
"input": "Content-Length: 42\r\nContent-Length: 30",
"output": null
},
{
"input": "Content-Length: 30\r\nContent-Length: 42",
"output": null
},
{
"input": "Content-Length: 30,",
"output": null
},
{
"input": "Content-Length: ,30",
"output": null
},
{
"input": "Content-Length: 30\r\nContent-Length: \t",
"output": null
},
{
"input": "Content-Length: \r\nContent-Length: 30",
"output": null
},
{
"input": "Content-Length: aaaah\r\nContent-Length: nah",
"output": null
},
{
"input": "Content-Length: aaaah, nah",
"output": null
},
{
"input": "Content-Length: aaaah\r\nContent-Length: aaaah",
"output": 42
},
{
"input": "Content-Length: aaaah, aaaah",
"output": 42
},
{
"input": "Content-Length: aaaah",
"output": 42
},
{
"input": "Content-Length: 42s",
"output": 42
},
{
"input": "Content-Length: 30s",
"output": 42
},
{
"input": "Content-Length: -1",
"output": 42
},
{
"input": "Content-Length: 0x20",
"output": 42
},
{
"input": "Content-Length: 030",
"output": 30
},
{
"input": "Content-Length: 030\r\nContent-Length: 30",
"output": null
},
{
"input": "Content-Length: 030, 30",
"output": null
},
{
"input": "Content-Length: \"30\"",
"output": 42
},
{
"input": "Content-Length:30\r\nContent-Length:,\r\nContent-Length:30",
"output": null
},
{
"input": "Content-Length: ",
"output": 42
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
promise_test(async t => {
const result = await fetch(`resources/content-length.py?length=${encodeURIComponent("Content-Length: 50")}`);
await promise_rejects_js(t, TypeError, result.text());
}, "Content-Length header value of network response exceeds response body");

0 comments on commit 0da42a7

Please sign in to comment.