Skip to content

Commit 21281de

Browse files
KhafraDevronag
authored andcommitted
wpt: add redirect-count.any.js
1 parent 923f777 commit 21281de

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

test/wpt/server/server.mjs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,18 @@ const server = createServer(async (req, res) => {
255255
res.end()
256256
return
257257
}
258+
case '/fetch/api/resources/clean-stash.py': {
259+
const token = fullUrl.searchParams.get('token')
260+
const took = stash.take(token)
261+
262+
if (took) {
263+
res.end('1')
264+
} else {
265+
res.end('0')
266+
}
267+
268+
break
269+
}
258270
default: {
259271
res.statusCode = 200
260272
res.end('body')
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// META: global=window,worker
2+
// META: script=../resources/utils.js
3+
// META: script=/common/utils.js
4+
// META: timeout=long
5+
6+
function redirectCount(desc, redirectUrl, redirectLocation, redirectStatus, maxCount, shouldPass) {
7+
var uuid_token = token();
8+
9+
var urlParameters = "?token=" + uuid_token + "&max_age=0";
10+
urlParameters += "&redirect_status=" + redirectStatus;
11+
urlParameters += "&max_count=" + maxCount;
12+
if (redirectLocation)
13+
urlParameters += "&location=" + encodeURIComponent(redirectLocation);
14+
15+
var url = redirectUrl;
16+
var requestInit = {"redirect": "follow"};
17+
18+
promise_test(function(test) {
19+
return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) {
20+
assert_equals(resp.status, 200, "Clean stash response's status is 200");
21+
22+
if (!shouldPass)
23+
return promise_rejects_js(test, TypeError, fetch(url + urlParameters, requestInit));
24+
25+
return fetch(url + urlParameters, requestInit).then(function(resp) {
26+
assert_equals(resp.status, 200, "Response's status is 200");
27+
return resp.text();
28+
}).then(function(body) {
29+
assert_equals(body, maxCount.toString(), "Redirected " + maxCount + " times");
30+
});
31+
});
32+
}, desc);
33+
}
34+
35+
var redirUrl = RESOURCES_DIR + "redirect.py";
36+
37+
for (var statusCode of [301, 302, 303, 307, 308]) {
38+
redirectCount("Redirect " + statusCode + " 20 times", redirUrl, redirUrl, statusCode, 20, true);
39+
redirectCount("Redirect " + statusCode + " 21 times", redirUrl, redirUrl, statusCode, 21, false);
40+
}
41+
42+
done();

0 commit comments

Comments
 (0)