97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test cookie database schema 14
|
|
"use strict";
|
|
|
|
add_task(async function test_schema_14_migration() {
|
|
// Set up a profile.
|
|
let profile = do_get_profile();
|
|
|
|
// Start the cookieservice, to force creation of a database.
|
|
Services.cookies.sessionCookies;
|
|
|
|
// Close the profile.
|
|
await promise_close_profile();
|
|
|
|
// Remove the cookie file in order to create another database file.
|
|
do_get_cookie_file(profile).remove(false);
|
|
|
|
// Create a schema 13 database.
|
|
let schema13db = new CookieDatabaseConnection(
|
|
do_get_cookie_file(profile),
|
|
13
|
|
);
|
|
|
|
let now = Math.round(Date.now() / 1000);
|
|
|
|
let N = 20;
|
|
// Populate db with N unexpired, unique cookies.
|
|
for (let i = 0; i < N; ++i) {
|
|
let cookie = new Cookie(
|
|
"test" + i,
|
|
"Some data",
|
|
"foo.com",
|
|
"/",
|
|
now + (i % 2 ? 34560000 * 2 : 0),
|
|
now,
|
|
now,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_UNSET,
|
|
!!(i % 2) // isPartitioned
|
|
);
|
|
schema13db.insertCookie(cookie);
|
|
}
|
|
|
|
schema13db.close();
|
|
schema13db = null;
|
|
|
|
// Check if we have the right entries
|
|
{
|
|
const dbConnection = Services.storage.openDatabase(
|
|
do_get_cookie_file(profile)
|
|
);
|
|
const stmt = dbConnection.createStatement(
|
|
"SELECT count(name) FROM moz_cookies WHERE expiry > unixepoch() + 34560000"
|
|
);
|
|
const success = stmt.executeStep();
|
|
Assert.ok(success);
|
|
|
|
const count = stmt.getInt32(0);
|
|
Assert.equal(count, 10);
|
|
stmt.finalize();
|
|
dbConnection.close();
|
|
}
|
|
|
|
// Reload profile.
|
|
await promise_load_profile();
|
|
|
|
// Assert inserted cookies are in the db and correctly handled by services.
|
|
Assert.equal(Services.cookies.countCookiesFromHost("foo.com"), N);
|
|
|
|
// Check if the time was reset
|
|
{
|
|
const dbConnection = Services.storage.openDatabase(
|
|
do_get_cookie_file(profile)
|
|
);
|
|
const stmt = dbConnection.createStatement(
|
|
"SELECT COUNT(name) FROM moz_cookies WHERE expiry <= unixepoch() + 34560000"
|
|
);
|
|
const success = stmt.executeStep();
|
|
Assert.ok(success);
|
|
|
|
const count = stmt.getInt32(0);
|
|
Assert.equal(count, 20);
|
|
stmt.finalize();
|
|
dbConnection.close();
|
|
}
|
|
|
|
// Cleanup
|
|
Services.cookies.removeAll();
|
|
do_close_profile();
|
|
});
|