Changeset 238664 in webkit


Ignore:
Timestamp:
Nov 29, 2018 2:30:29 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

Import fetch/api/cors tests
https://bugs.webkit.org/show_bug.cgi?id=192092

Patch by Rob Buis <rbuis@igalia.com> on 2018-11-29
Reviewed by Frédéric Wang.

Import to most recent checkout since some old
tests like cors-multiple-origins.js were incorrect.

  • resources/import-expectations.json:
  • web-platform-tests/fetch/api/cors/cors-expose-star-worker.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-expose-star.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-expose-star.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-expected.txt.
  • web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.html: Added.
  • web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.js.

(sharedHeaders.string_appeared_here.promise_test):
(string_appeared_here.promise_test):

  • web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-worker-expected.txt.
  • web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.worker.html: Added.
  • web-platform-tests/fetch/api/cors/cors-filtering-worker.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-filtering.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-filtering.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt.
  • web-platform-tests/fetch/api/cors/cors-filtering.sub.any.html: Added.
  • web-platform-tests/fetch/api/cors/cors-filtering.sub.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js.

(corsFilter):
(corsExposeFilter):

  • web-platform-tests/fetch/api/cors/cors-filtering.sub.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt.
  • web-platform-tests/fetch/api/cors/cors-filtering.sub.any.worker.html: Added.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins-worker-expected.txt: Removed.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins-worker.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.html: Removed.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.js: Removed.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.html: Added.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.js: Added.

(corsMultipleOrigins):

  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.worker.html: Added.
  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any-expected.txt: Added.
  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.html: Added.
  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js: Added.

(runTests):

  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker-expected.txt: Added.
  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker.html: Added.
  • web-platform-tests/fetch/api/cors/cors-preflight.any.js:

(headerNames): Deleted.
(): Deleted.
(corsPreflight): Deleted.

  • web-platform-tests/fetch/api/cors/resources/corspreflight.js: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js.

(headerNames):
(corsPreflight):

  • web-platform-tests/fetch/api/cors/resources/not-cors-safelisted.json: Added.
  • web-platform-tests/fetch/api/cors/resources/w3c-import.log: Added.
  • web-platform-tests/fetch/api/cors/sandboxed-iframe-expected.txt: Added.
  • web-platform-tests/fetch/api/cors/sandboxed-iframe.html: Added.
  • web-platform-tests/fetch/api/cors/w3c-import.log:
Location:
trunk/LayoutTests/imported/w3c
Files:
18 added
8 deleted
4 edited
1 copied
7 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r238628 r238664  
     12018-11-29  Rob Buis  <rbuis@igalia.com>
     2
     3        Import fetch/api/cors tests
     4        https://bugs.webkit.org/show_bug.cgi?id=192092
     5
     6        Reviewed by Frédéric Wang.
     7
     8        Import to most recent checkout since some old
     9        tests like cors-multiple-origins.js were incorrect.
     10
     11        * resources/import-expectations.json:
     12        * web-platform-tests/fetch/api/cors/cors-expose-star-worker.html: Removed.
     13        * web-platform-tests/fetch/api/cors/cors-expose-star.html: Removed.
     14        * web-platform-tests/fetch/api/cors/cors-expose-star.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-expected.txt.
     15        * web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.html: Added.
     16        * web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.js.
     17        (sharedHeaders.string_appeared_here.promise_test):
     18        (string_appeared_here.promise_test):
     19        * web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-worker-expected.txt.
     20        * web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.worker.html: Added.
     21        * web-platform-tests/fetch/api/cors/cors-filtering-worker.html: Removed.
     22        * web-platform-tests/fetch/api/cors/cors-filtering.html: Removed.
     23        * web-platform-tests/fetch/api/cors/cors-filtering.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt.
     24        * web-platform-tests/fetch/api/cors/cors-filtering.sub.any.html: Added.
     25        * web-platform-tests/fetch/api/cors/cors-filtering.sub.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js.
     26        (corsFilter):
     27        (corsExposeFilter):
     28        * web-platform-tests/fetch/api/cors/cors-filtering.sub.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt.
     29        * web-platform-tests/fetch/api/cors/cors-filtering.sub.any.worker.html: Added.
     30        * web-platform-tests/fetch/api/cors/cors-multiple-origins-worker-expected.txt: Removed.
     31        * web-platform-tests/fetch/api/cors/cors-multiple-origins-worker.html: Removed.
     32        * web-platform-tests/fetch/api/cors/cors-multiple-origins.html: Removed.
     33        * web-platform-tests/fetch/api/cors/cors-multiple-origins.js: Removed.
     34        * web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt.
     35        * web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.html: Added.
     36        * web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.js: Added.
     37        (corsMultipleOrigins):
     38        * web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.worker-expected.txt: Added.
     39        * web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.worker.html: Added.
     40        * web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any-expected.txt: Added.
     41        * web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.html: Added.
     42        * web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js: Added.
     43        (runTests):
     44        * web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker-expected.txt: Added.
     45        * web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker.html: Added.
     46        * web-platform-tests/fetch/api/cors/cors-preflight.any.js:
     47        (headerNames): Deleted.
     48        (): Deleted.
     49        (corsPreflight): Deleted.
     50        * web-platform-tests/fetch/api/cors/resources/corspreflight.js: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js.
     51        (headerNames):
     52        (corsPreflight):
     53        * web-platform-tests/fetch/api/cors/resources/not-cors-safelisted.json: Added.
     54        * web-platform-tests/fetch/api/cors/resources/w3c-import.log: Added.
     55        * web-platform-tests/fetch/api/cors/sandboxed-iframe-expected.txt: Added.
     56        * web-platform-tests/fetch/api/cors/sandboxed-iframe.html: Added.
     57        * web-platform-tests/fetch/api/cors/w3c-import.log:
     58
    1592018-11-28  Rob Buis  <rbuis@igalia.com>
    260
  • trunk/LayoutTests/imported/w3c/resources/import-expectations.json

    r238592 r238664  
    150150    "web-platform-tests/fetch": "import",
    151151    "web-platform-tests/fetch/api": "import",
     152    "web-platform-tests/fetch/api/cors": "import",
    152153    "web-platform-tests/fetch/range": "import",
    153154    "web-platform-tests/fullscreen": "skip",
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.js

    r238663 r238664  
    1 if (this.document === undefined) {
    2   importScripts("/resources/testharness.js");
    3   importScripts("../resources/utils.js");
    4 }
     1// META: script=../resources/utils.js
    52
    63const url = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt",
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.sub.any.js

    r238663 r238664  
    1 if (this.document === undefined) {
    2   importScripts("/resources/testharness.js");
    3   importScripts("../resources/utils.js");
    4 }
     1// META: script=../resources/utils.js
    52
    63function corsFilter(corsUrl, headerName, headerValue, isFiltered) {
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any-expected.txt

    r238663 r238664  
    1212CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=%2C%20http%3A%2F%2Fexample.com%2C%20https%3A%2F%2Fexample2.com due to access control checks.
    1313
    14 FAIL 3 origins allowed, match the 3rd (http://localhost:8800) promise_test: Unhandled rejection with value: object "TypeError: Access-Control-Allow-Origin cannot contain more than one origin."
    15 FAIL 3 origins allowed, match the 3rd ("*") promise_test: Unhandled rejection with value: object "TypeError: Access-Control-Allow-Origin cannot contain more than one origin."
    16 FAIL 3 origins allowed, match twice (http://localhost:8800) promise_test: Unhandled rejection with value: object "TypeError: Access-Control-Allow-Origin cannot contain more than one origin."
    17 FAIL 3 origins allowed, match twice ("*") promise_test: Unhandled rejection with value: object "TypeError: Access-Control-Allow-Origin cannot contain more than one origin."
    18 FAIL 3 origins allowed, match twice ("*" and http://localhost:8800) promise_test: Unhandled rejection with value: object "TypeError: Access-Control-Allow-Origin cannot contain more than one origin."
    19 PASS 3 origins allowed, no match
     14PASS Listing multiple origins is illegal: "",http://example.com,http://localhost:8800
     15PASS Listing multiple origins is illegal: "",http://example.com,*
     16PASS Listing multiple origins is illegal: "",http://localhost:8800,http://localhost:8800
     17PASS Listing multiple origins is illegal: *,http://example.com,*
     18PASS Listing multiple origins is illegal: *,http://example.com,http://localhost:8800
     19PASS Listing multiple origins is illegal: ,http://example.com,https://example2.com
    2020
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js

    r232470 r238664  
    22// META: script=../resources/utils.js
    33// META: script=/common/get-host-info.sub.js
    4 
    5 function headerNames(headers)
    6 {
    7     let names = [];
    8     for (let header of headers)
    9         names.push(header[0].toLowerCase());
    10     return names
    11 }
    12 
    13 /*
    14   Check preflight is done
    15   Control if server allows method and headers and check accordingly
    16   Check control access headers added by UA (for method and headers)
    17 */
    18 function corsPreflight(desc, corsUrl, method, allowed, headers, safeHeaders) {
    19   return promise_test(function(test) {
    20     var uuid_token = token();
    21     return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(response) {
    22       var url = corsUrl + (corsUrl.indexOf("?") === -1 ? "?" : "&");
    23       var urlParameters = "token=" + uuid_token + "&max_age=0";
    24       var requestInit = {"mode": "cors", "method": method};
    25       var requestHeaders = [];
    26       if (headers)
    27         requestHeaders.push.apply(requestHeaders, headers);
    28       if (safeHeaders)
    29         requestHeaders.push.apply(requestHeaders, safeHeaders);
    30       requestInit["headers"] = requestHeaders;
    31 
    32       if (allowed) {
    33         urlParameters += "&allow_methods=" + method + "&control_request_headers";
    34         if (headers) {
    35           //Make the server allow the headers
    36           urlParameters += "&allow_headers=" + headerNames(headers).join("%20%2C");
    37         }
    38         return fetch(url + urlParameters, requestInit).then(function(resp) {
    39           assert_equals(resp.status, 200, "Response's status is 200");
    40           assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made");
    41           if (headers) {
    42             var actualHeaders = resp.headers.get("x-control-request-headers").toLowerCase().split(",");
    43             for (var i in actualHeaders)
    44               actualHeaders[i] = actualHeaders[i].trim();
    45             for (var header of headers)
    46               assert_in_array(header[0].toLowerCase(), actualHeaders, "Preflight asked permission for header: " + header);
    47 
    48             let accessControlAllowHeaders = headerNames(headers).sort().join(",");
    49             assert_equals(resp.headers.get("x-control-request-headers"), accessControlAllowHeaders, "Access-Control-Allow-Headers value");
    50             return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token);
    51           } else {
    52             assert_equals(resp.headers.get("x-control-request-headers"), null, "Access-Control-Request-Headers should be omitted")
    53           }
    54         });
    55       } else {
    56         return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)).then(function(){
    57           return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token);
    58         });
    59       }
    60     });
    61   }, desc);
    62 }
     4// META: script=resources/corspreflight.js
    635
    646var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py";
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/resources/corspreflight.js

    r238663 r238664  
    1 // META: script=/common/utils.js
    2 // META: script=../resources/utils.js
    3 // META: script=/common/get-host-info.sub.js
    4 
    5 function headerNames(headers)
    6 {
    7     let names = [];
    8     for (let header of headers)
    9         names.push(header[0].toLowerCase());
    10     return names
     1function headerNames(headers) {
     2  let names = [];
     3  for (let header of headers) {
     4    names.push(header[0].toLowerCase());
     5  }
     6  return names;
    117}
    128
     
    6157  }, desc);
    6258}
    63 
    64 var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py";
    65 
    66 corsPreflight("CORS [DELETE], server allows", corsUrl, "DELETE", true);
    67 corsPreflight("CORS [DELETE], server refuses", corsUrl, "DELETE", false);
    68 corsPreflight("CORS [PUT], server allows", corsUrl, "PUT", true);
    69 corsPreflight("CORS [PUT], server allows, check preflight has user agent", corsUrl + "?checkUserAgentHeaderInPreflight", "PUT", true);
    70 corsPreflight("CORS [PUT], server refuses", corsUrl, "PUT", false);
    71 corsPreflight("CORS [PATCH], server allows", corsUrl, "PATCH", true);
    72 corsPreflight("CORS [PATCH], server refuses", corsUrl, "PATCH", false);
    73 corsPreflight("CORS [NEW], server allows", corsUrl, "NEW", true);
    74 corsPreflight("CORS [NEW], server refuses", corsUrl, "NEW", false);
    75 
    76 corsPreflight("CORS [GET] [x-test-header: allowed], server allows", corsUrl, "GET", true, [["x-test-header1", "allowed"]]);
    77 corsPreflight("CORS [GET] [x-test-header: refused], server refuses", corsUrl, "GET", false, [["x-test-header1", "refused"]]);
    78 
    79 var headers = [
    80     ["x-test-header1", "allowedOrRefused"],
    81     ["x-test-header2", "allowedOrRefused"],
    82     ["X-test-header3", "allowedOrRefused"],
    83     ["x-test-header-b", "allowedOrRefused"],
    84     ["x-test-header-D", "allowedOrRefused"],
    85     ["x-test-header-C", "allowedOrRefused"],
    86     ["x-test-header-a", "allowedOrRefused"],
    87     ["Content-Type", "allowedOrRefused"],
    88 ];
    89 var safeHeaders= [
    90     ["Accept", "*"],
    91     ["Accept-Language", "bzh"],
    92     ["Content-Language", "eu"],
    93 ];
    94 
    95 corsPreflight("CORS [GET] [several headers], server allows", corsUrl, "GET", true, headers, safeHeaders);
    96 corsPreflight("CORS [GET] [several headers], server refuses", corsUrl, "GET", false, headers, safeHeaders);
    97 corsPreflight("CORS [PUT] [several headers], server allows", corsUrl, "PUT", true, headers, safeHeaders);
    98 corsPreflight("CORS [PUT] [several headers], server refuses", corsUrl, "PUT", false, headers, safeHeaders);
    99 
    100 corsPreflight("CORS [PUT] [only safe headers], server allows", corsUrl, "PUT", true, null, safeHeaders);
  • trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/w3c-import.log

    r222307 r238664  
    22Do NOT modify these tests directly in WebKit.
    33Instead, create a pull request on the WPT github:
    4         https://github.com/w3c/web-platform-tests
     4        https://github.com/web-platform-tests/wpt
    55
    66Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
     
    1616List of files:
    1717/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js
     18/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-redirect.any.js
    1819/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js
    19 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-worker.html
    20 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.html
    21 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.js
    22 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker.html
    23 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.html
    24 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js
    25 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-worker.html
    26 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.html
    27 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.js
     20/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.sub.any.js
     21/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.sub.any.js
     22/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.js
    2823/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js
    2924/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js
    3025/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-cache.any.js
     26/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js
    3127/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js
    3228/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js
     
    3733/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js
    3834/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js
     35/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/sandboxed-iframe.html
Note: See TracChangeset for help on using the changeset viewer.