blob: 7f144d61b87a4c3fce390b86110bf467b3ce166c [file] [log] [blame]
if (self.importScripts) {
importScripts('/fetch/resources/fetch-test-helpers.js');
importScripts('/fetch/resources/thorough-util.js');
}
// Tests for CORS preflight fetch (simple methods).
// Spec: https://fetch.spec.whatwg.org/#cors-preflight-fetch
var TEST_TARGETS = [];
var {BASE_ORIGIN, OTHER_BASE_URL} = get_thorough_test_options();
['GET', 'POST'].forEach(function(method) {
var checkMethod = checkJsonpMethod.bind(this, method);
TEST_TARGETS.push(
// Tests for Access-Control-Allow-Headers header.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM',
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*',
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=' + BASE_ORIGIN,
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=' + BASE_ORIGIN +
'&ACAHeaders=x-serviceworker-test',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test' +
'&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
[fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=' + BASE_ORIGIN +
'&ACAHeaders=x-serviceworker-test' +
'&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
[fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
// Test that Access-Control-Allow-Headers is checked in
// CORS preflight fetch.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PreflightTest=200',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&ACAHeaders=x-serviceworker-test&PreflightTest=200',
[fetchRejected]],
// Test that CORS check is done in both preflight and main fetch.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAHeaders=x-serviceworker-test' +
'&PreflightTest=200',
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&PACAOrigin=*&PACAHeaders=x-serviceworker-test' +
'&PreflightTest=200',
[fetchRejected]],
// Test that Access-Control-Expose-Headers of CORS preflight is ignored.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PACEHeaders=Content-Length, X-ServiceWorker-ServerHeader&PreflightTest=200',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
// Test that CORS preflight with Status 2XX succeeds.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PreflightTest=201',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
// Test that CORS preflight with Status other than 2XX fails.
// https://crbug.com/452394
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PreflightTest=301',
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PreflightTest=401',
[fetchRejected]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PreflightTest=500',
[fetchRejected]],
// Test CORS preflight with multiple request headers.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM2&ACAOrigin=*' +
'&PACAOrigin=*&PACAHeaders=x-servicEworker-u,x-servicEworker-ua,x-servicewOrker-test,x-sErviceworker-s,x-sErviceworker-v&PreflightTest=200',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader2]],
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM2&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-servicewOrker-test&PreflightTest=200',
[fetchRejected]],
// Test request headers sent in CORS preflight requests.
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-serviceworker-test&PACRMethod=' + method +
'&PACRHeaders=x-serviceworker-test&PreflightTest=200',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader]],
// Test Access-Control-Request-Headers is sorted https://crbug.com/452391
[OTHER_BASE_URL + 'mode=cors&credentials=same-origin&method=' + method +
'&headers=CUSTOM2&ACAOrigin=*&PACAOrigin=*' +
'&PACAHeaders=x-servicEworker-u,x-servicEworker-ua,x-servicewOrker-test,x-sErviceworker-s,x-sErviceworker-v&PACRMethod=' + method +
'&PACRHeaders=x-serviceworker-s,x-serviceworker-test,x-serviceworker-u,x-serviceworker-ua,x-serviceworker-v&PreflightTest=200',
[fetchResolved, hasContentLength, noServerHeader, hasBody, typeCors],
[checkMethod, hasCustomHeader2]]);
});
if (self.importScripts) {
executeTests(TEST_TARGETS);
done();
}