test-helpers.js (2338B)
1 // Test that a partitioned cookie set by |origin| with name |cookieName| is 2 // or is not sent in a request to |origin|. 3 // 4 // If |expectsCookie| is true, then the test cookie should be present in the 5 // request. 6 function testHttpPartitionedCookies({origin, cookieNames, expectsCookie}) { 7 promise_test(async () => { 8 const resp = await credFetch(`${origin}/cookies/resources/list.py`); 9 const cookies = await resp.json(); 10 for (const cookieName of cookieNames) { 11 assert_equals( 12 cookies.hasOwnProperty(cookieName), expectsCookie, 13 getPartitionedCookieAssertDesc(expectsCookie, cookieName)); 14 } 15 }, getPartitionedCookieTestName(expectsCookie, "HTTP")); 16 } 17 18 function getPartitionedCookieTestName(expectsCookie, cookieType) { 19 if (expectsCookie) { 20 return "Partitioned cookies accessible on the top-level site they are " + 21 `created in via ${cookieType}`; 22 } 23 return "Partitioned cookies are not accessible on a different top-level " + 24 `site via ${cookieType}`; 25 } 26 27 function getPartitionedCookieAssertDesc(expectsCookie, cookieName) { 28 if (expectsCookie) { 29 return `Expected ${cookieName} to be available on the top-level site it ` + 30 "was created in"; 31 } 32 return `Expected ${cookieName} to not be available on a different ` + 33 "top-level site"; 34 } 35 36 function testDomPartitionedCookies({cookieNames, expectsCookie}) { 37 test(() => { 38 for (const cookieName of cookieNames) { 39 assert_equals( 40 document.cookie.includes(cookieName), expectsCookie, 41 getPartitionedCookieAssertDesc(expectsCookie, cookieName)); 42 } 43 }, getPartitionedCookieTestName(expectsCookie, "DOM")); 44 } 45 46 function testCookieStorePartitionedCookies({cookieNames, expectsCookie}) { 47 if (!window.cookieStore) return; 48 promise_test(async () => { 49 const cookies = await cookieStore.getAll({partitioned: true}); 50 for (const cookieName of cookieNames) { 51 assert_equals( 52 !!cookies.find(c => c.name === cookieName), expectsCookie, 53 getPartitionedCookieAssertDesc(expectsCookie, cookieName)); 54 } 55 }, getPartitionedCookieTestName(expectsCookie, "CookieStore")); 56 } 57 58 function getCookieNames() { 59 const cookieNames = ["__Host-pchttp", "__Host-pcdom"]; 60 if (window.cookieStore) { 61 cookieNames.push("__Host-pccookiestore"); 62 } 63 return cookieNames; 64 }