summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_cookies_purge_counting_per_host.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/unit/test_cookies_purge_counting_per_host.js')
-rw-r--r--netwerk/test/unit/test_cookies_purge_counting_per_host.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_cookies_purge_counting_per_host.js b/netwerk/test/unit/test_cookies_purge_counting_per_host.js
new file mode 100644
index 0000000000..83a10c75ac
--- /dev/null
+++ b/netwerk/test/unit/test_cookies_purge_counting_per_host.js
@@ -0,0 +1,81 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+add_setup(function test_setup() {
+ // FOG needs a profile directory to put its data in.
+ do_get_profile();
+
+ // FOG needs to be initialized in order for data to flow.
+ Services.fog.initializeFOG();
+});
+
+add_task(async function test_purge_counting_per_host() {
+ let profile = do_get_profile();
+ let dbFile = do_get_cookie_file(profile);
+ Assert.ok(!dbFile.exists());
+
+ let schema12db = new CookieDatabaseConnection(dbFile, 12);
+
+ let now = Date.now() * 1000; // date in microseconds
+ let pastExpiry = Math.round(now / 1e6 - 1000);
+ let futureExpiry = Math.round(now / 1e6 + 1000);
+
+ let host = "cookie-host1.com";
+
+ let manyCookies = 180;
+ let cookieMax = 150;
+ let cookiesPurged = manyCookies - cookieMax;
+
+ // add many expired cookies for a single host
+ for (let i = 0; i < manyCookies; i++) {
+ let cookie = new Cookie(
+ "cookie-name" + i,
+ "cookie-value" + i,
+ host,
+ "/", // path
+ pastExpiry,
+ now, // last accessed
+ now, // creation time
+ false,
+ false,
+ false
+ );
+ schema12db.insertCookie(cookie);
+ }
+
+ // check that the cookies were added to the db
+ Assert.equal(do_count_cookies_in_db(schema12db.db), manyCookies);
+ Assert.equal(
+ do_count_cookies_in_db(schema12db.db, "cookie-host1.com"),
+ manyCookies
+ );
+
+ // startup the cookie service and check the cookie count
+ let validCookies = Services.cookies.countCookiesFromHost(host); // includes expired cookies
+ Assert.equal(validCookies, manyCookies);
+
+ // add a cookie - this will trigger the purge
+ Services.cookies.add(
+ host,
+ "/", // path
+ "cookie-name-x",
+ "cookie-value-x",
+ false, // secure
+ true, // http-only
+ true, // isSession
+ futureExpiry,
+ {}, // OA
+ Ci.nsICookie.SAMESITE_NONE, // SameSite
+ Ci.nsICookie.SCHEME_HTTPS
+ );
+
+ // check that we purge down to the cookieMax (plus the cookie added)
+ validCookies = Services.cookies.countCookiesFromHost(host);
+ Assert.equal(validCookies, cookieMax + 1);
+
+ // check that the telemetry fired
+ let cpem = await Glean.networking.cookiePurgeEntryMax.testGetValue();
+ Assert.equal(cpem.sum, cookiesPurged, "Purge the expected number of cookies");
+
+ schema12db.close();
+});