/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ // Test cookie database schema 17 "use strict"; add_task(async function test_schema_17_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 16 database. let schema16db = new CookieDatabaseConnection( do_get_cookie_file(profile), 16 ); let nowInUSec = Date.now() * 1000; let futureInMSec = Date.now() + 60 * 60 * 24 * 1000; schema16db.insertCookie( new Cookie( "test1", "Some data", "foo.com", "/", futureInMSec, nowInUSec, nowInUSec, false, false, false, false, {}, Ci.nsICookie.SAMESITE_NONE, Ci.nsICookie.SCHEME_UNSET ) ); schema16db.close(); schema16db = null; // 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"), 1); // Check if the time was reset { const dbConnection = Services.storage.openDatabase( do_get_cookie_file(profile) ); const stmt = dbConnection.createStatement( "SELECT updateTime FROM moz_cookies" ); const results = []; while (stmt.executeStep()) { results.push(stmt.getInt64(0)); } Assert.equal(results.length, 1); Assert.greater(results[0], 0); stmt.finalize(); dbConnection.close(); } // Cleanup Services.cookies.removeAll(); do_close_profile(); });