diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/preload/preload-nonce.sub.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/preload/preload-nonce.sub.html')
-rw-r--r-- | testing/web-platform/tests/preload/preload-nonce.sub.html | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/preload/preload-nonce.sub.html b/testing/web-platform/tests/preload/preload-nonce.sub.html new file mode 100644 index 0000000000..325c8a2e82 --- /dev/null +++ b/testing/web-platform/tests/preload/preload-nonce.sub.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-wpt' 'nonce-script'; default-src 'none'; style-src 'nonce-style'; connect-src 'self';"> +<title>Makes sure that preload requests use their nonce for the CSP</title> +<script src="/resources/testharness.js" nonce="wpt"></script> +<script src="/resources/testharnessreport.js" nonce="wpt"></script> +<script src="/preload/resources/preload_helper.js" nonce="wpt"></script> +<link rel=preload href="/preload/resources/stash-put.py?key={{uuid()}}" as=style> +<link rel=preload href="/preload/resources/stash-put.py?key={{uuid()}}" as=style nonce="style"> +<link rel=preload href="/preload/resources/stash-put.py?key={{uuid()}}" as=script> +<link rel=preload href="/preload/resources/stash-put.py?key={{uuid()}}" as=script nonce="script"> +<body> +<script nonce="wpt"> +promise_test(async (t) => { + verifyPreloadAndRTSupport(); + const keys = []; + const links = document.querySelectorAll('link:not([nonce])'); + for (const link of links) { + if (link.rel === 'preload') { + const r = /\?key=([a-zA-Z0-9\-]+)$/; + keys.push(link.href.match(r)[1]); + } + } + await new Promise((resolve) => step_timeout(resolve, 3000)); + + for (const key of keys) { + assert_false(await hasArrivedAtServer(key)); + } +}, 'Preload requests without a nonce are blocked by CSP.'); + +promise_test(async (t) => { + verifyPreloadAndRTSupport(); + const keys = []; + const links = document.querySelectorAll('link[nonce]'); + for (const link of links) { + if (link.rel === 'preload') { + const r = /\?key=([a-zA-Z0-9\-]+)$/; + keys.push(link.href.match(r)[1]); + } + } + await new Promise((resolve) => step_timeout(resolve, 3000)); + + for (const key of keys) { + assert_true(await hasArrivedAtServer(key)); + } +}, 'Preload requests with a correct nonce are allowed by CSP.'); +</script> + |