summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js')
-rw-r--r--testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js206
1 files changed, 206 insertions, 0 deletions
diff --git a/testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js b/testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js
new file mode 100644
index 0000000000..2028df5b4b
--- /dev/null
+++ b/testing/web-platform/tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.js
@@ -0,0 +1,206 @@
+// META: title=Cookie Store API: Observing 'change' events in document when cookies set via Set-Cookie header
+// META: script=resources/cookie-test-helpers.js
+
+'use strict';
+
+cookie_test(async t => {
+ let eventPromise = observeNextCookieChangeEvent();
+ await setCookieStringHttp('HTTP-cookie=value; path=/');
+ assert_equals(
+ await getCookieString(),
+ 'HTTP-cookie=value',
+ 'Cookie we wrote using HTTP in cookie jar');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'HTTP-cookie=value',
+ 'Cookie we wrote using HTTP in HTTP cookie jar');
+ await verifyCookieChangeEvent(
+ eventPromise, {changed: [{name: 'HTTP-cookie', value: 'value'}]},
+ 'Cookie we wrote using HTTP is observed');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await setCookieStringHttp('HTTP-cookie=new-value; path=/');
+ assert_equals(
+ await getCookieString(),
+ 'HTTP-cookie=new-value',
+ 'Cookie we overwrote using HTTP in cookie jar');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'HTTP-cookie=new-value',
+ 'Cookie we overwrote using HTTP in HTTP cookie jar');
+ await verifyCookieChangeEvent(
+ eventPromise, {changed: [{name: 'HTTP-cookie', value: 'new-value'}]},
+ 'Cookie we overwrote using HTTP is observed');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await setCookieStringHttp('HTTP-cookie=DELETED; path=/; max-age=0');
+ assert_equals(
+ await getCookieString(),
+ undefined,
+ 'Empty cookie jar after HTTP cookie-clearing using max-age=0');
+ assert_equals(
+ await getCookieStringHttp(),
+ undefined,
+ 'Empty HTTP cookie jar after HTTP cookie-clearing using max-age=0');
+ await verifyCookieChangeEvent(
+ eventPromise, {deleted: [{name: 'HTTP-cookie'}]},
+ 'Deletion observed after HTTP cookie-clearing using max-age=0');
+}, 'HTTP set/overwrite/delete observed in CookieStore');
+
+
+cookie_test(async t => {
+ let eventPromise = observeNextCookieChangeEvent();
+ await setCookieStringHttp('HTTP-🍪=🔵; path=/');
+ assert_equals(
+ await getCookieString(),
+ 'HTTP-🍪=🔵',
+ 'Cookie we wrote using HTTP in cookie jar');
+ await verifyCookieChangeEvent(
+ eventPromise, {changed: [{name: 'HTTP-🍪', value: '🔵'}]},
+ 'Cookie we wrote using HTTP is observed');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await setCookieStringHttp('HTTP-🍪=DELETED; path=/; max-age=0');
+ assert_equals(
+ await getCookieString(),
+ undefined,
+ 'Empty cookie jar after HTTP cookie-clearing using max-age=0');
+ await verifyCookieChangeEvent(
+ eventPromise, {deleted: [{name: 'HTTP-🍪'}]},
+ 'Deletion observed after HTTP cookie-clearing using max-age=0');
+
+}, 'CookieStore agreed with HTTP headers agree on encoding non-ASCII cookies');
+
+
+cookie_test(async t => {
+ let eventPromise = observeNextCookieChangeEvent();
+ await cookieStore.set('TEST', 'value0');
+ assert_equals(
+ await getCookieString(),
+ 'TEST=value0',
+ 'Cookie jar contains only cookie we set');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'TEST=value0',
+ 'HTTP cookie jar contains only cookie we set');
+ await verifyCookieChangeEvent(
+ eventPromise,
+ {changed: [{name: 'TEST', value: 'value0'}]},
+ 'Observed value that was set');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await cookieStore.set('TEST', 'value');
+ assert_equals(
+ await getCookieString(),
+ 'TEST=value',
+ 'Cookie jar contains only cookie we set');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'TEST=value',
+ 'HTTP cookie jar contains only cookie we set');
+ await verifyCookieChangeEvent(
+ eventPromise,
+ {changed: [{name: 'TEST', value: 'value'}]},
+ 'Observed value that was overwritten');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await cookieStore.delete('TEST');
+ assert_equals(
+ await getCookieString(),
+ undefined,
+ 'Cookie jar does not contain cookie we deleted');
+ assert_equals(
+ await getCookieStringHttp(),
+ undefined,
+ 'HTTP cookie jar does not contain cookie we deleted');
+ await verifyCookieChangeEvent(
+ eventPromise,
+ {deleted: [{name: 'TEST'}]},
+ 'Observed cookie that was deleted');
+}, 'CookieStore set/overwrite/delete observed in HTTP headers');
+
+
+cookie_test(async t => {
+ await cookieStore.set('🍪', '🔵');
+ assert_equals(
+ await getCookieStringHttp(),
+ '🍪=🔵',
+ 'HTTP cookie jar contains only cookie we set');
+
+ await cookieStore.delete('🍪');
+ assert_equals(
+ await getCookieStringHttp(),
+ undefined,
+ 'HTTP cookie jar does not contain cookie we deleted');
+}, 'HTTP headers agreed with CookieStore on encoding non-ASCII cookies');
+
+
+cookie_test(async t => {
+ // Non-UTF-8 byte sequences cause the Set-Cookie to be dropped.
+ let eventPromise = observeNextCookieChangeEvent();
+ await setCookieBinaryHttp(
+ unescape(encodeURIComponent('HTTP-cookie=value')) + '\xef\xbf\xbd; path=/');
+ assert_equals(
+ await getCookieString(),
+ 'HTTP-cookie=value\ufffd',
+ 'Binary cookie we wrote using HTTP in cookie jar');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'HTTP-cookie=value\ufffd',
+ 'Binary cookie we wrote using HTTP in HTTP cookie jar');
+ assert_equals(
+ decodeURIComponent(escape(await getCookieBinaryHttp())),
+ 'HTTP-cookie=value\ufffd',
+ 'Binary cookie we wrote in binary HTTP cookie jar');
+ assert_equals(
+ await getCookieBinaryHttp(),
+ unescape(encodeURIComponent('HTTP-cookie=value')) + '\xef\xbf\xbd',
+ 'Binary cookie we wrote in binary HTTP cookie jar');
+ await verifyCookieChangeEvent(
+ eventPromise, {changed: [{name: 'HTTP-cookie', value: 'value\ufffd'}]},
+ 'Binary cookie we wrote using HTTP is observed');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await setCookieBinaryHttp(
+ unescape(encodeURIComponent('HTTP-cookie=new-value')) + '\xef\xbf\xbd; path=/');
+ assert_equals(
+ await getCookieString(),
+ 'HTTP-cookie=new-value\ufffd',
+ 'Binary cookie we overwrote using HTTP in cookie jar');
+ assert_equals(
+ await getCookieStringHttp(),
+ 'HTTP-cookie=new-value\ufffd',
+ 'Binary cookie we overwrote using HTTP in HTTP cookie jar');
+ assert_equals(
+ decodeURIComponent(escape(await getCookieBinaryHttp())),
+ 'HTTP-cookie=new-value\ufffd',
+ 'Binary cookie we overwrote in binary HTTP cookie jar');
+ assert_equals(
+ await getCookieBinaryHttp(),
+ unescape(encodeURIComponent('HTTP-cookie=new-value')) + '\xef\xbf\xbd',
+ 'Binary cookie we overwrote in binary HTTP cookie jar');
+ await verifyCookieChangeEvent(
+ eventPromise, {changed: [{name: 'HTTP-cookie', value: 'new-value\ufffd'}]},
+ 'Binary cookie we overwrote using HTTP is observed');
+
+ eventPromise = observeNextCookieChangeEvent();
+ await setCookieBinaryHttp(
+ unescape(encodeURIComponent('HTTP-cookie=DELETED; path=/; max-age=0')));
+ assert_equals(
+ await getCookieString(),
+ undefined,
+ 'Empty cookie jar after binary HTTP cookie-clearing using max-age=0');
+ assert_equals(
+ await getCookieStringHttp(),
+ undefined,
+ 'Empty HTTP cookie jar after' +
+ ' binary HTTP cookie-clearing using max-age=0');
+ assert_equals(
+ await getCookieBinaryHttp(),
+ undefined,
+ 'Empty binary HTTP cookie jar after' +
+ ' binary HTTP cookie-clearing using max-age=0');
+ await verifyCookieChangeEvent(
+ eventPromise, {deleted: [{name: 'HTTP-cookie'}]},
+ 'Deletion observed after binary HTTP cookie-clearing using max-age=0');
+}, 'Binary HTTP set/overwrite/delete observed in CookieStore');