74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
/* 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() {
|
|
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 manyHosts = 50;
|
|
let manyCookies = 140;
|
|
let totalCookies = manyHosts * manyCookies;
|
|
|
|
// add many expired cookies for each host
|
|
for (let hostNum = 0; hostNum < manyHosts; hostNum++) {
|
|
let host = "cookie-host" + hostNum + ".com";
|
|
for (let i = 0; i < manyCookies; i++) {
|
|
let cookie = new Cookie(
|
|
"cookie-name" + i,
|
|
"cookie-value" + i,
|
|
host,
|
|
"/", // path
|
|
pastExpiry,
|
|
pastExpiry, // needed to get the cookie by the db init
|
|
now,
|
|
false,
|
|
false,
|
|
false
|
|
);
|
|
schema12db.insertCookie(cookie);
|
|
}
|
|
}
|
|
|
|
let validCookies = Services.cookies.cookies.length; // includes expired cookies
|
|
Assert.equal(validCookies, totalCookies);
|
|
|
|
// add a valid cookie - this triggers the purge
|
|
Services.cookies.add(
|
|
"cookie-host0.com", // any 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 all the expired cookies and not the unexpired
|
|
validCookies = Services.cookies.cookies.length;
|
|
Assert.equal(validCookies, 1);
|
|
|
|
// check that the telemetry fired
|
|
let cpm = await Glean.networking.cookiePurgeMax.testGetValue();
|
|
Assert.equal(cpm.sum, totalCookies, "Purge the expected number of cookies");
|
|
|
|
schema12db.close();
|
|
});
|