64 lines
2.3 KiB
JavaScript
64 lines
2.3 KiB
JavaScript
// Test that a partitioned cookie set by |origin| with name |cookieName| is
|
|
// or is not sent in a request to |origin|.
|
|
//
|
|
// If |expectsCookie| is true, then the test cookie should be present in the
|
|
// request.
|
|
function testHttpPartitionedCookies({origin, cookieNames, expectsCookie}) {
|
|
promise_test(async () => {
|
|
const resp = await credFetch(`${origin}/cookies/resources/list.py`);
|
|
const cookies = await resp.json();
|
|
for (const cookieName of cookieNames) {
|
|
assert_equals(
|
|
cookies.hasOwnProperty(cookieName), expectsCookie,
|
|
getPartitionedCookieAssertDesc(expectsCookie, cookieName));
|
|
}
|
|
}, getPartitionedCookieTestName(expectsCookie, "HTTP"));
|
|
}
|
|
|
|
function getPartitionedCookieTestName(expectsCookie, cookieType) {
|
|
if (expectsCookie) {
|
|
return "Partitioned cookies accessible on the top-level site they are " +
|
|
`created in via ${cookieType}`;
|
|
}
|
|
return "Partitioned cookies are not accessible on a different top-level " +
|
|
`site via ${cookieType}`;
|
|
}
|
|
|
|
function getPartitionedCookieAssertDesc(expectsCookie, cookieName) {
|
|
if (expectsCookie) {
|
|
return `Expected ${cookieName} to be available on the top-level site it ` +
|
|
"was created in";
|
|
}
|
|
return `Expected ${cookieName} to not be available on a different ` +
|
|
"top-level site";
|
|
}
|
|
|
|
function testDomPartitionedCookies({cookieNames, expectsCookie}) {
|
|
test(() => {
|
|
for (const cookieName of cookieNames) {
|
|
assert_equals(
|
|
document.cookie.includes(cookieName), expectsCookie,
|
|
getPartitionedCookieAssertDesc(expectsCookie, cookieName));
|
|
}
|
|
}, getPartitionedCookieTestName(expectsCookie, "DOM"));
|
|
}
|
|
|
|
function testCookieStorePartitionedCookies({cookieNames, expectsCookie}) {
|
|
if (!window.cookieStore) return;
|
|
promise_test(async () => {
|
|
const cookies = await cookieStore.getAll({partitioned: true});
|
|
for (const cookieName of cookieNames) {
|
|
assert_equals(
|
|
!!cookies.find(c => c.name === cookieName), expectsCookie,
|
|
getPartitionedCookieAssertDesc(expectsCookie, cookieName));
|
|
}
|
|
}, getPartitionedCookieTestName(expectsCookie, "CookieStore"));
|
|
}
|
|
|
|
function getCookieNames() {
|
|
const cookieNames = ["__Host-pchttp", "__Host-pcdom"];
|
|
if (window.cookieStore) {
|
|
cookieNames.push("__Host-pccookiestore");
|
|
}
|
|
return cookieNames;
|
|
}
|