tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }