mirror of
https://github.com/servo/servo.git
synced 2025-06-23 16:44:33 +01:00
134 lines
3.9 KiB
HTML
134 lines
3.9 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Request structure</title>
|
|
<meta name="help" href="https://fetch.spec.whatwg.org/#request">
|
|
<meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
var request = new Request("");
|
|
var methods = ["clone",
|
|
//Request implements Body
|
|
"arrayBuffer",
|
|
"blob",
|
|
"formData",
|
|
"json",
|
|
"text"
|
|
];
|
|
var attributes = ["method",
|
|
"url",
|
|
"headers",
|
|
"type",
|
|
"destination",
|
|
"referrer",
|
|
"referrerPolicy",
|
|
"mode",
|
|
"credentials",
|
|
"cache",
|
|
"redirect",
|
|
"integrity",
|
|
//Request implements Body
|
|
"bodyUsed"
|
|
];
|
|
|
|
function IsreadOnly(request, attributeToCheck) {
|
|
var defaultValue = undefined;
|
|
var newValue = undefined;
|
|
switch (attributeToCheck) {
|
|
case "method":
|
|
defaultValue = "GET";
|
|
newValue = "POST";
|
|
break;
|
|
|
|
case "url":
|
|
//default value is base url
|
|
//i.e http://web-platform.test:8000/fetch/api/request-structure.html
|
|
newValue = "http://url.test";
|
|
break;
|
|
|
|
case "headers":
|
|
request.headers = new Headers ({"name":"value"});
|
|
assert_false(request.headers.has("name"), "Headers attribute is read only");
|
|
return;
|
|
break;
|
|
|
|
case "type":
|
|
defaultValue = "";
|
|
newValue = "style";
|
|
break;
|
|
|
|
case "destination":
|
|
defaultValue = "";
|
|
newValue = "worker";
|
|
break;
|
|
|
|
case "referrer":
|
|
defaultValue = "about:client";
|
|
newValue = "http://url.test";
|
|
break;
|
|
|
|
case "referrerPolicy":
|
|
defaultValue = "";
|
|
newValue = "unsafe-url";
|
|
break;
|
|
|
|
case "mode":
|
|
defaultValue = "cors";
|
|
newValue = "navigate";
|
|
break;
|
|
|
|
case "credentials":
|
|
defaultValue = "omit";
|
|
newValue = "cors";
|
|
break;
|
|
|
|
case "cache":
|
|
defaultValue = "default";
|
|
newValue = "reload";
|
|
break;
|
|
|
|
case "redirect":
|
|
defaultValue = "follow";
|
|
newValue = "manual";
|
|
break;
|
|
|
|
case "integrity":
|
|
newValue = "CannotWriteIntegrity";
|
|
break;
|
|
|
|
case "bodyUsed":
|
|
defaultValue = false;
|
|
newValue = true;
|
|
break;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
|
|
request[attributeToCheck] = newValue;
|
|
if (defaultValue === undefined)
|
|
assert_not_equals(request[attributeToCheck], newValue, "Attribute " + attributeToCheck + " is read only");
|
|
else
|
|
assert_equals(request[attributeToCheck], defaultValue,
|
|
"Attribute " + attributeToCheck + " is read only. Default value is " + defaultValue);
|
|
}
|
|
|
|
for (var idx in methods) {
|
|
test(function() {
|
|
assert_true(methods[idx] in request, "request has " + methods[idx] + " method");
|
|
}, "Request has " + methods[idx] + " method");
|
|
}
|
|
|
|
for (var idx in attributes) {
|
|
test(function() {
|
|
assert_true(attributes[idx] in request, "request has " + attributes[idx] + " attribute");
|
|
IsreadOnly(request, attributes[idx]);
|
|
}, "Check " + attributes[idx] + " attribute");
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|