| <!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 = "same-origin"; | |
| 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> |