tor-browser

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

test_cookie_partitioned_attribute.js (2475B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 function count_IsPartitioned(bool) {
      5  var cookieCountIsPartitioned = 0;
      6  Services.cookies.cookies.forEach(cookie => {
      7    if (cookie.isPartitioned === bool) {
      8      cookieCountIsPartitioned += 1;
      9    }
     10  });
     11  return cookieCountIsPartitioned;
     12 }
     13 
     14 add_task(async function test_IsPartitioned() {
     15  let profile = do_get_profile();
     16  let dbFile = do_get_cookie_file(profile);
     17  Assert.ok(!dbFile.exists());
     18 
     19  let schema13db = new CookieDatabaseConnection(dbFile, 13);
     20  let now = Date.now() * 1000; // date in microseconds
     21 
     22  // add some non-partitioned cookies for key
     23  let nUnpartitioned = 5;
     24  let hostNonPartitioned = "cookie-host-non-partitioned.com";
     25  for (let i = 0; i < nUnpartitioned; i++) {
     26    let cookie = new Cookie(
     27      "cookie-name" + i,
     28      "cookie-value" + i,
     29      hostNonPartitioned,
     30      "/", // path
     31      now, // expiry
     32      now, // last accessed
     33      now, // creation time
     34      false, // session
     35      false, // secure
     36      false, // http-only
     37      false, // inBrowserElement
     38      {} // OA
     39    );
     40    schema13db.insertCookie(cookie);
     41  }
     42 
     43  // add some partitioned cookies
     44  let nPartitioned = 5;
     45  let hostPartitioned = "host-partitioned.com";
     46  for (let i = 0; i < nPartitioned; i++) {
     47    let cookie = new Cookie(
     48      "cookie-name" + i,
     49      "cookie-value" + i,
     50      hostPartitioned,
     51      "/", // path
     52      now, // expiry
     53      now, // last accessed
     54      now, // creation time
     55      false, // session
     56      false, // secure
     57      false, // http-only
     58      false, // inBrowserElement
     59      { partitionKey: "(https,example.com)" }
     60    );
     61    schema13db.insertCookie(cookie);
     62  }
     63 
     64  Assert.equal(do_count_cookies_in_db(schema13db.db), 10);
     65 
     66  // Startup the cookie service and check the cookie counts by OA
     67  let cookieCountNonPart =
     68    Services.cookies.countCookiesFromHost(hostNonPartitioned); // includes expired cookies
     69  Assert.equal(cookieCountNonPart, nUnpartitioned);
     70  let cookieCountPart = Services.cookies.getCookiesFromHost(hostPartitioned, {
     71    partitionKey: "(https,example.com)",
     72  }).length; // includes expired cookies
     73  Assert.equal(cookieCountPart, nPartitioned);
     74 
     75  // Startup the cookie service and check the cookie counts by isPartitioned (IsPartitioned())
     76  Assert.equal(count_IsPartitioned(false), nUnpartitioned);
     77  Assert.equal(count_IsPartitioned(true), nPartitioned);
     78 
     79  schema13db.close();
     80 });