diff options
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/credentials.https.html')
-rw-r--r-- | testing/web-platform/tests/service-workers/service-worker/credentials.https.html | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/credentials.https.html b/testing/web-platform/tests/service-workers/service-worker/credentials.https.html new file mode 100644 index 0000000000..0a90dc2897 --- /dev/null +++ b/testing/web-platform/tests/service-workers/service-worker/credentials.https.html @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Credentials for service worker scripts</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="/common/utils.js"></script> +<script src="/cookies/resources/cookie-helper.sub.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<body> +<script> +// Check if the service worker's script has appropriate credentials for a new +// worker and byte-for-byte checking. + +const SCOPE = 'resources/in-scope'; +const COOKIE_NAME = `service-worker-credentials-${Math.random()}`; + +promise_test(async t => { + // Set-Cookies for path=/. + await fetch( + `/cookies/resources/set-cookie.py?name=${COOKIE_NAME}&path=%2F`); +}, 'Set cookies as initialization'); + +async function get_cookies(worker) { + worker.postMessage('get cookie'); + const message = await new Promise(resolve => + navigator.serviceWorker.addEventListener('message', resolve)); + return message.data; +} + +promise_test(async t => { + const key = token(); + const registration = await service_worker_unregister_and_register( + t, `resources/echo-cookie-worker.py?key=${key}`, SCOPE); + t.add_cleanup(() => registration.unregister()); + const worker = registration.installing; + + const cookies = await get_cookies(worker); + assert_equals(cookies[COOKIE_NAME], '1', 'new worker has credentials'); + + await registration.update(); + const updated_worker = registration.installing; + const updated_cookies = await get_cookies(updated_worker); + assert_equals(updated_cookies[COOKIE_NAME], '1', + 'updated worker has credentials'); +}, 'Main script should have credentials'); + +promise_test(async t => { + const key = token(); + const registration = await service_worker_unregister_and_register( + t, `resources/import-echo-cookie-worker.js?key=${key}`, SCOPE); + t.add_cleanup(() => registration.unregister()); + const worker = registration.installing; + + const cookies = await get_cookies(worker); + assert_equals(cookies[COOKIE_NAME], '1', 'new worker has credentials'); + + await registration.update(); + const updated_worker = registration.installing; + const updated_cookies = await get_cookies(updated_worker); + assert_equals(updated_cookies[COOKIE_NAME], '1', + 'updated worker has credentials'); +}, 'Imported script should have credentials'); + +promise_test(async t => { + const key = token(); + const registration = await service_worker_unregister_and_register( + t, `resources/import-echo-cookie-worker-module.py?key=${key}`, SCOPE, {type: 'module'}); + t.add_cleanup(() => registration.unregister()); + const worker = registration.installing; + + const cookies = await get_cookies(worker); + assert_equals(cookies[COOKIE_NAME], undefined, 'new module worker should not have credentials'); + + await registration.update(); + const updated_worker = registration.installing; + const updated_cookies = await get_cookies(updated_worker); + assert_equals(updated_cookies[COOKIE_NAME], undefined, + 'updated worker should not have credentials'); +}, 'Module with an imported statement should not have credentials'); + +promise_test(async t => { + const key = token(); + const registration = await service_worker_unregister_and_register( +t, `resources/echo-cookie-worker.py?key=${key}`, SCOPE, {type: 'module'}); + t.add_cleanup(() => registration.unregister()); + const worker = registration.installing; + + const cookies = await get_cookies(worker); + assert_equals(cookies[COOKIE_NAME], undefined, 'new module worker should not have credentials'); + + await registration.update(); + const updated_worker = registration.installing; + const updated_cookies = await get_cookies(updated_worker); + assert_equals(updated_cookies[COOKIE_NAME], undefined, + 'updated worker should not have credentials'); +}, 'Script with service worker served as modules should not have credentials'); + +</script> +</body> |