tor-browser

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

test_getCookieSince.js (2170B)


      1 const { NetUtil } = ChromeUtils.importESModule(
      2  "resource://gre/modules/NetUtil.sys.mjs"
      3 );
      4 
      5 function setCookie(name, url) {
      6  let value = `${name}=${Math.random()}; Path=/; Max-Age=1000; sameSite=none; Secure`;
      7  info(`Setting cookie ${value} for ${url.spec}`);
      8 
      9  let channel = NetUtil.newChannel({
     10    uri: url,
     11    loadUsingSystemPrincipal: true,
     12    contentPolicyType: Ci.nsIContentPolicy.TYPE_DOCUMENT,
     13  });
     14 
     15  Services.cookies.setCookieStringFromHttp(url, value, channel);
     16 }
     17 
     18 async function sleep() {
     19  await new Promise(resolve => do_timeout(1000, resolve));
     20 }
     21 
     22 function checkSorting(cookies) {
     23  for (let i = 1; i < cookies.length; ++i) {
     24    Assert.greater(
     25      cookies[i].creationTime,
     26      cookies[i - 1].creationTime,
     27      "Cookie " + cookies[i].name
     28    );
     29  }
     30 }
     31 
     32 add_task(async function () {
     33  Services.prefs.setBoolPref(
     34    "network.cookieJarSettings.unblocked_for_testing",
     35    true
     36  );
     37 
     38  await setCookie("A", Services.io.newURI("https://example.com/A/"));
     39  await sleep();
     40 
     41  await setCookie("B", Services.io.newURI("https://foo.bar/B/"));
     42  await sleep();
     43 
     44  await setCookie("C", Services.io.newURI("https://example.org/C/"));
     45  await sleep();
     46 
     47  await setCookie("D", Services.io.newURI("https://example.com/D/"));
     48  await sleep();
     49 
     50  Assert.equal(Services.cookies.cookies.length, 4, "Cookie check");
     51 
     52  const cookies = Services.cookies.getCookiesSince(0);
     53  Assert.equal(cookies.length, 4, "We retrieve all the 4 cookies");
     54  checkSorting(cookies);
     55 
     56  let someCookies = Services.cookies.getCookiesSince(
     57    cookies[0].creationTime + 1
     58  );
     59  Assert.equal(someCookies.length, 3, "We retrieve some cookies");
     60  checkSorting(someCookies);
     61 
     62  someCookies = Services.cookies.getCookiesSince(cookies[1].creationTime + 1);
     63  Assert.equal(someCookies.length, 2, "We retrieve some cookies");
     64  checkSorting(someCookies);
     65 
     66  someCookies = Services.cookies.getCookiesSince(cookies[2].creationTime + 1);
     67  Assert.equal(someCookies.length, 1, "We retrieve some cookies");
     68  checkSorting(someCookies);
     69 
     70  someCookies = Services.cookies.getCookiesSince(cookies[3].creationTime + 1);
     71  Assert.equal(someCookies.length, 0, "We retrieve some cookies");
     72 });