| Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d2c53e79fd63dc168867f76ea0aa6fcb25cf47bb
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/cors/cors-filtering.js
|
| @@ -0,0 +1,66 @@
|
| +if (this.document === undefined) {
|
| + importScripts("/resources/testharness.js");
|
| + importScripts("../resources/utils.js");
|
| +}
|
| +
|
| +function corsFilter(corsUrl, headerName, headerValue, isFiltered) {
|
| + var url = corsUrl + "?pipe=header(" + headerName + "," + encodeURIComponent(headerValue) +")|header(Access-Control-Allow-Origin,*)";
|
| + promise_test(function(test) {
|
| + return fetch(url).then(function(resp) {
|
| + assert_equals(resp.status, 200, "Fetch success with code 200");
|
| + assert_equals(resp.type , "cors", "CORS fetch's response has cors type");
|
| + if (!isFiltered) {
|
| + assert_equals(resp.headers.get(headerName), headerValue,
|
| + headerName + " header should be included in response with value: " + headerValue);
|
| + } else {
|
| + assert_false(resp.headers.has(headerName), "UA should exclude " + headerName + " header from response");
|
| + }
|
| + test.done();
|
| + });
|
| + }, "CORS filter on " + headerName + " header");
|
| +}
|
| +
|
| +function corsExposeFilter(corsUrl, headerName, headerValue, isForbidden) {
|
| + var url = corsUrl + "?pipe=header(" + headerName + "," + encodeURIComponent(headerValue) +")|" +
|
| + "header(Access-Control-Allow-Origin,*)" +
|
| + "header(Access-Control-Expose-Headers," + headerName + ")";
|
| +
|
| + promise_test(function(test) {
|
| + return fetch(url).then(function(resp) {
|
| + assert_equals(resp.status, 200, "Fetch success with code 200");
|
| + assert_equals(resp.type , "cors", "CORS fetch's response has cors type");
|
| + if (!isForbidden) {
|
| + assert_equals(resp.headers.get(headerName), headerValue,
|
| + headerName + " header should be included in response with value: " + headerValue);
|
| + } else {
|
| + assert_false(resp.headers.has(headerName), "UA should exclude " + headerName + " header from response");
|
| + }
|
| + test.done();
|
| + });
|
| + }, "CORS filter on " + headerName + " header, header is exposed");
|
| +}
|
| +
|
| +var url = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt";
|
| +
|
| +corsFilter(url, "Cache-Control", "no-cache", false);
|
| +corsFilter(url, "Content-Language", "fr", false);
|
| +corsFilter(url, "Content-Type", "text/html", false);
|
| +corsFilter(url, "Expires","04 May 1988 22:22:22 GMT" , false);
|
| +corsFilter(url, "Last-Modified", "04 May 1988 22:22:22 GMT", false);
|
| +corsFilter(url, "Pragma", "no-cache", false);
|
| +
|
| +corsFilter(url, "Age", "27", true);
|
| +corsFilter(url, "Server", "wptServe" , true);
|
| +corsFilter(url, "Warning", "Mind the gap" , true);
|
| +corsFilter(url, "Content-Length", "0" , true);
|
| +corsFilter(url, "Set-Cookie", "name=value" , true);
|
| +corsFilter(url, "Set-Cookie2", "name=value" , true);
|
| +
|
| +corsExposeFilter(url, "Age", "27", false);
|
| +corsExposeFilter(url, "Server", "wptServe" , false);
|
| +corsExposeFilter(url, "Warning", "Mind the gap" , false);
|
| +corsExposeFilter(url, "Content-Length", "0" , false);
|
| +corsExposeFilter(url, "Set-Cookie", "name=value" , true);
|
| +corsExposeFilter(url, "Set-Cookie2", "name=value" , true);
|
| +
|
| +done();
|
|
|