Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: LayoutTests/http/tests/fetch/resources/fetch-access-control-util.js

Issue 1267263003: Rename fetch layout tests. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/http/tests/fetch/resources/fetch-access-control-util.js
diff --git a/LayoutTests/http/tests/fetch/resources/fetch-access-control-util.js b/LayoutTests/http/tests/fetch/resources/fetch-access-control-util.js
deleted file mode 100644
index b37537f2c3588a821c6cb71f20b04839ce0497df..0000000000000000000000000000000000000000
--- a/LayoutTests/http/tests/fetch/resources/fetch-access-control-util.js
+++ /dev/null
@@ -1,406 +0,0 @@
-var SCOPE = BASE_ORIGIN +
- '/fetch/resources/fetch-access-control-iframe.html?' + TEST_OPTIONS;
-var IFRAME_ORIGIN = BASE_ORIGIN;
-var BASE_URL = BASE_ORIGIN +
- '/serviceworker/resources/fetch-access-control.php?';
-var OTHER_BASE_URL = OTHER_ORIGIN +
- '/serviceworker/resources/fetch-access-control.php?';
-var REDIRECT_URL = BASE_ORIGIN +
- '/serviceworker/resources/redirect.php?Redirect=';
-var OTHER_REDIRECT_URL = OTHER_ORIGIN +
- '/serviceworker/resources/redirect.php?Redirect=';
-var REDIRECT_LOOP_URL = BASE_ORIGIN +
- '/fetch/resources/redirect-loop.php?Redirect=';
-var OTHER_REDIRECT_LOOP_URL = OTHER_ORIGIN +
- '/fetch/resources/redirect-loop.php?Redirect=';
-var IFRAME_URL = SCOPE;
-var WORKER_URL = BASE_ORIGIN +
- '/fetch/resources/fetch-access-control-worker.js?' +
- TEST_OPTIONS;
-
-function onlyOnServiceWorkerProxiedTest(checkFuncs) {
- return [];
-}
-
-// Functions to check the result from the ServiceWorker.
-var checkFetchResult = function(expected, url, data) {
- assert_equals(data.fetchResult, expected, url + ' should be ' + expected);
-};
-var checkFetchResponseBody = function(hasBody, url, data) {
- assert_equals(data.fetchResult,
- 'resolved',
- 'fetchResult must be resolved. url: ' + url);
- if (hasBody) {
- assert_not_equals(data.body, '',
- 'response must have body. url: ' + url);
- } else {
- assert_equals(data.body, '',
- 'response must not have body. url: ' + url);
- }
-};
-var checkFetchResponseHeader = function(name, expected, url, data) {
- assert_equals(data.fetchResult,
- 'resolved',
- 'fetchResult must be resolved. url: ' + url);
- var exist = false;
- for (var i = 0; i < data.headers.length; ++i) {
- if (data.headers[i][0] === name) {
- exist = true;
- }
- }
- assert_equals(exist,
- expected,
- 'header check failed url: ' + url + ' name: ' + name);
-};
-var checkFetchResponseType = function(type, url, data) {
- assert_equals(data.fetchResult,
- 'resolved',
- 'fetchResult must be resolved. url = ' + url);
- assert_equals(data.type,
- type,
- 'type must match. url: ' + url);
-};
-
-var showComment = function(url, data) {
- assert_true(!data.comment, 'Show comment: ' + data.comment + ' url: ' + url);
-}
-
-var fetchIgnored = checkFetchResult.bind(this, 'ignored');
-var fetchResolved = checkFetchResult.bind(this, 'resolved');
-var fetchRejected = checkFetchResult.bind(this, 'rejected');
-var fetchError = checkFetchResult.bind(this, 'error');
-var hasBody = checkFetchResponseBody.bind(this, true);
-var noBody = checkFetchResponseBody.bind(this, false);
-var hasContentLength =
- checkFetchResponseHeader.bind(this, 'content-length', true);
-var noContentLength =
- checkFetchResponseHeader.bind(this, 'content-length', false);
-var hasServerHeader =
- checkFetchResponseHeader.bind(this, 'x-serviceworker-serverheader', true);
-var noServerHeader =
- checkFetchResponseHeader.bind(this, 'x-serviceworker-serverheader', false);
-var typeBasic = checkFetchResponseType.bind(this, 'basic');
-var typeCors = checkFetchResponseType.bind(this, 'cors');
-var typeOpaque = checkFetchResponseType.bind(this, 'opaque');
-
-// Functions to check the result of JSONP which is evaluated in
-// fetch-access-control-iframe.html by appending <script> element.
-var checkJsonpResult = function(expected, url, data) {
- assert_equals(data.jsonpResult,
- expected,
- url + ' jsonpResult should match');
-};
-var checkJsonpHeader = function(name, value, url, data) {
- assert_equals(data.jsonpResult,
- 'success',
- url + ' jsonpResult must be success');
- assert_equals(data.headers[name],
- value,
- 'Request header check failed url:' + url + ' name:' + name);
-};
-var checkJsonpMethod = function(method, url, data) {
- assert_equals(data.jsonpResult,
- 'success',
- url + ' jsonpResult must be success');
- assert_equals(data.method,
- method,
- 'Method must match url:' + url);
-};
-var checkJsonpAuth = function(username, password, cookie, url, data) {
- assert_equals(data.jsonpResult,
- 'success',
- url + ' jsonpResult must be success');
- assert_equals(data.username,
- username,
- 'Username must match. url: ' + url);
- assert_equals(data.password,
- password,
- 'Password must match. url: ' + url);
- assert_equals(data.cookie,
- cookie,
- 'Cookie must match. url: ' + url);
-};
-var checkJsonpCookie = function(cookie, url, data) {
- assert_equals(data.jsonpResult,
- 'success',
- url + ' jsonpResult must be success');
- assert_equals(data.cookie,
- cookie,
- 'Cookie must match. url: ' + url);
-};
-var checkJsonpError = checkJsonpResult.bind(this, 'error');
-var checkJsonpSuccess = checkJsonpResult.bind(this, 'success');
-var checkJsonpNoRedirect = checkJsonpResult.bind(this, 'noredirect');
-var hasCustomHeader =
- checkJsonpHeader.bind(this, 'x-serviceworker-test', 'test');
-var hasCustomHeader2 = function(url, data) {
- checkJsonpHeader('x-serviceworker-s', 'test1', url, data);
- checkJsonpHeader('x-serviceworker-test', 'test2,test3', url, data);
- checkJsonpHeader('x-serviceworker-ua', 'test4', url, data);
- checkJsonpHeader('x-serviceworker-u', 'test5', url, data);
- checkJsonpHeader('x-serviceworker-v', 'test6', url, data);
-};
-var noCustomHeader =
- checkJsonpHeader.bind(this, 'x-serviceworker-test', undefined);
-var methodIsGET = checkJsonpMethod.bind(this, 'GET');
-var methodIsPOST = checkJsonpMethod.bind(this, 'POST');
-var methodIsPUT = checkJsonpMethod.bind(this, 'PUT');
-var methodIsXXX = checkJsonpMethod.bind(this, 'XXX');
-var authCheckNone =
- checkJsonpAuth.bind(this, 'undefined', 'undefined', 'undefined');
-var authCheck1 = checkJsonpAuth.bind(this, 'username1', 'password1', 'cookie1');
-var authCheck2 = checkJsonpAuth.bind(this, 'username2', 'password2', 'cookie2');
-
-var cookieCheck1 = checkJsonpCookie.bind(this, 'cookie1');
-var cookieCheck2 = checkJsonpCookie.bind(this, 'cookie2');
-var cookieCheckA = checkJsonpCookie.bind(this, 'cookieA');
-var cookieCheckB = checkJsonpCookie.bind(this, 'cookieB');
-var cookieCheckC = checkJsonpCookie.bind(this, 'cookieC');
-var cookieCheckNone = checkJsonpCookie.bind(this, 'undefined');
-
-if (location.href.indexOf('base-https') >= 0)
- authCheck1 = checkJsonpAuth.bind(this, 'username1s', 'password1s', 'cookie1');
-
-if (location.href.indexOf('other-https') >= 0)
- authCheck2 = checkJsonpAuth.bind(this, 'username2s', 'password2s', 'cookie2');
-
-function executeServiceWorkerProxiedTests(test_targets) {
- var test = async_test('Verify access control of fetch() in a Service Worker');
- test.step(function() {
- var worker = undefined;
- var frameWindow = {};
- var counter = 0;
- window.addEventListener('message', test.step_func(onMessage), false);
-
- Promise.resolve()
- .then(function() {
- return service_worker_unregister_and_register(test,
- WORKER_URL,
- SCOPE);
- })
- .then(function(registration) {
- worker = registration.installing;
- var messageChannel = new MessageChannel();
- messageChannel.port1.onmessage = test.step_func(onWorkerMessage);
- worker.postMessage(
- {port: messageChannel.port2}, [messageChannel.port2]);
- return wait_for_state(test, worker, 'activated');
- })
- .then(function() {
- return with_iframe(SCOPE);
- })
- .then(function(frame) {
- frameWindow = frame.contentWindow;
- // Start tests.
- loadNext();
- })
- .catch(unreached_rejection(test));
-
- var readyFromWorkerReceived = undefined;
- var resultFromWorkerReceived = undefined;
- var resultFromIframeReceived = undefined;
-
- function onMessage(e) {
- // The message is sent from fetch-access-control-iframe.html in report()
- // which is called by appending <script> element which source code is
- // generated by fetch-access-control.php.
- if (test_targets[counter][2]) {
- test_targets[counter][2].forEach(function(checkFunc) {
- checkFunc.call(this, test_targets[counter][0], e.data);
- });
- }
- resultFromIframeReceived();
- }
-
- function onWorkerMessage(e) {
- // The message is sent from the ServiceWorker.
- var message = e.data;
- if (message.msg === 'READY') {
- readyFromWorkerReceived();
- return;
- }
- var checks = test_targets[counter][1].concat(showComment);
- checks.forEach(function(checkFunc) {
- checkFunc.call(this, test_targets[counter][0], message);
- });
- resultFromWorkerReceived();
- }
-
- function loadNext() {
- var workerPromise = new Promise(function(resolve, reject) {
- resultFromWorkerReceived = resolve;
- });
- var iframePromise = new Promise(function(resolve, reject) {
- resultFromIframeReceived = resolve;
- });
- Promise.all([workerPromise, iframePromise])
- .then(test.step_func(function() {
- ++counter;
- if (counter === test_targets.length) {
- service_worker_unregister_and_done(test, SCOPE);
- } else {
- loadNext();
- }
- }));
- (new Promise(function(resolve, reject) {
- readyFromWorkerReceived = resolve;
- worker.postMessage({msg: 'START TEST CASE'});
- }))
- .then(test.step_func(function() {
- frameWindow.postMessage(
- {url: test_targets[counter][0]},
- IFRAME_ORIGIN);
- }));
- }
- });
-}
-
-function getQueryParams(url) {
- var search = (new URL(url)).search;
- if (!search) {
- return {};
- }
- var ret = {};
- var params = search.substring(1).split('&');
- params.forEach(function(param) {
- var element = param.split('=');
- ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]);
- });
- return ret;
-}
-
-function getRequestInit(params) {
- var init = {};
- if (params['method']) {
- init['method'] = params['method'];
- }
- if (params['mode']) {
- init['mode'] = params['mode'];
- }
- if (params['credentials']) {
- init['credentials'] = params['credentials'];
- }
- if (params['headers'] === 'CUSTOM') {
- init['headers'] = {'X-ServiceWorker-Test': 'test'};
- } else if (params['headers'] === 'CUSTOM2') {
- init['headers'] = [['X-ServiceWorker-Test', 'test2'],
- ['X-ServiceWorker-ua', 'test4'],
- ['X-ServiceWorker-V', 'test6'],
- ['X-ServiceWorker-s', 'test1'],
- ['X-ServiceWorker-Test', 'test3'],
- ['X-ServiceWorker-U', 'test5']];
- } else if (params['headers'] === '{}') {
- init['headers'] = {};
- }
- return init;
-}
-
-function headersToArray(headers) {
- var ret = [];
-
- // Workaround for Firefox. iterable is not implemented yet.
- // This is used only by checkFetchResponseHeader, and
- // checkFetchResponseHeader is used only for the header names listed below.
- // FIXME: Replace it with the original code below when Firefox supports
- // iterable.
- ['content-length', 'x-serviceworker-serverheader'].forEach(function(name) {
- for (var value of headers.getAll(name))
- ret.push([name, value]);
- });
-
- // Original code:
- // for (var header of headers) {
- // ret.push(header);
- // }
-
- return ret;
-}
-
-function doFetch(request) {
- var originalURL = request.url;
- var params = getQueryParams(originalURL);
- var init = getRequestInit(params);
- var url = params['url'];
- try {
- if (url) {
- request = new Request(url, init);
- } else {
- request = new Request(request, init);
- }
- var response;
- return fetch(request)
- .then(function(res) {
- response = res;
- return res.clone().text()
- .then(function(body) {
- return Promise.resolve({
- // Setting a comment will fail the test and show the
- // comment in the result. Use this for debugging
- // tests.
- comment: undefined,
-
- fetchResult: 'resolved',
- body: body,
- status: response.status,
- headers: headersToArray(response.headers),
- type: response.type,
- response: response,
- originalURL: originalURL
- });
- })
- .catch(function(e) {
- return Promise.resolve({fetchResult: 'error'});
- });
- })
- .catch(function(e) {
- return Promise.resolve({fetchResult: 'rejected'});
- });
- } catch (e) {
- return Promise.resolve({fetchResult: 'error'});
- }
-}
-
-var report_data = {};
-function report(data) {
- report_data = data;
-}
-
-function executeTest(test_target) {
- if (test_target.length == 0) {
- return Promise.resolve();
- }
- return doFetch(new Request(test_target[0],
- {credentials: 'same-origin', mode: 'no-cors'}))
- .then(function(message) {
- var checks = test_target[1].concat(showComment);
- checks.forEach(function(checkFunc) {
- checkFunc.call(this, test_target[0], message);
- });
-
- if (test_target[2]) {
- report_data = {};
- if (message.fetchResult !== 'resolved' ||
- message.body === '' ||
- 400 <= message.status) {
- report({jsonpResult:'error'});
- } else {
- eval(message.body);
- }
- assert_not_equals(report_data, {}, 'data should be set');
-
- test_target[2].forEach(function(checkFunc) {
- checkFunc.call(this, test_target[0], report_data);
- });
- }
- });
-}
-
-function executeTests(test_targets) {
- for (var i = 0; i < test_targets.length; ++i) {
- sequential_promise_test(
- function(counter, t) {
- return executeTest(test_targets[counter]);
- }.bind(this, i),
- "executeTest-" + i);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698