Bug 1670811 - Tests for browsingData.remove with cookieStoreId r=extension-reviewers,mixedpuppy,rpl

Depends on D93277

Differential Revision: https://phabricator.services.mozilla.com/D93332
This commit is contained in:
Tom Schuster
2020-11-03 13:18:58 +00:00
parent 394bba0c73
commit 2660e429f3
6 changed files with 406 additions and 44 deletions

View File

@@ -0,0 +1,192 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
/* eslint-disable mozilla/no-arbitrary-setTimeout */
"use strict";
// "Normal" cookie
const COOKIE_NORMAL = {
host: "example.com",
name: "test_cookie",
path: "/",
originAttributes: {},
};
// Private browsing cookie
const COOKIE_PRIVATE = {
host: "example.net",
name: "test_cookie",
path: "/",
originAttributes: {
privateBrowsingId: 1,
},
};
// "firefox-container-1" cookie
const COOKIE_CONTAINER = {
host: "example.org",
name: "test_cookie",
path: "/",
originAttributes: {
userContextId: 1,
},
};
function cookieExists(cookie) {
return Services.cookies.cookieExists(
cookie.host,
cookie.path,
cookie.name,
cookie.originAttributes
);
}
function addCookie(cookie) {
const THE_FUTURE = Date.now() + 5 * 60;
Services.cookies.add(
cookie.host,
cookie.path,
cookie.name,
"test",
false,
false,
false,
THE_FUTURE,
cookie.originAttributes,
Ci.nsICookie.SAMESITE_NONE,
Ci.nsICookie.SCHEME_HTTPS
);
ok(cookieExists(cookie), `Cookie ${cookie.name} was created.`);
}
async function setUpCookies() {
Services.cookies.removeAll();
addCookie(COOKIE_NORMAL);
addCookie(COOKIE_PRIVATE);
addCookie(COOKIE_CONTAINER);
}
add_task(async function testCookies() {
Services.prefs.setBoolPref("privacy.userContext.enabled", true);
function background() {
browser.test.onMessage.addListener(async (msg, options) => {
if (msg == "removeCookies") {
await browser.browsingData.removeCookies(options);
} else {
await browser.browsingData.remove(options, { cookies: true });
}
browser.test.sendMessage("cookiesRemoved");
});
}
let extension = ExtensionTestUtils.loadExtension({
background,
manifest: {
permissions: ["browsingData"],
},
});
async function testRemovalMethod(method) {
// Clear only "normal"/default cookies.
await setUpCookies();
extension.sendMessage(method, { cookieStoreId: "firefox-default" });
await extension.awaitMessage("cookiesRemoved");
ok(!cookieExists(COOKIE_NORMAL), "Normal cookie was removed");
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
// Clear container cookie
await setUpCookies();
extension.sendMessage(method, { cookieStoreId: "firefox-container-1" });
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
ok(!cookieExists(COOKIE_CONTAINER), "Container cookie was removed");
// Clear private cookie
await setUpCookies();
extension.sendMessage(method, { cookieStoreId: "firefox-private" });
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
// Clear container cookie with correct hostname
await setUpCookies();
extension.sendMessage(method, {
cookieStoreId: "firefox-container-1",
hostnames: ["example.org"],
});
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
ok(!cookieExists(COOKIE_CONTAINER), "Container cookie was removed");
// Clear container cookie with incorrect hostname; nothing is removed
await setUpCookies();
extension.sendMessage(method, {
cookieStoreId: "firefox-container-1",
hostnames: ["example.com"],
});
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
// Clear private cookie with correct hostname
await setUpCookies();
extension.sendMessage(method, {
cookieStoreId: "firefox-private",
hostnames: ["example.net"],
});
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
// Clear private cookie with incorrect hostname; nothing is removed
await setUpCookies();
extension.sendMessage(method, {
cookieStoreId: "firefox-private",
hostnames: ["example.com"],
});
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
// Clear private cookie by hostname
await setUpCookies();
extension.sendMessage(method, {
hostnames: ["example.net"],
});
await extension.awaitMessage("cookiesRemoved");
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
}
await extension.startup();
await testRemovalMethod("removeCookies");
await testRemovalMethod("remove");
await extension.unload();
});

View File

@@ -7,6 +7,7 @@ dupe-manifest =
[test_ext_bookmarks.js]
[test_ext_browsingData.js]
[test_ext_browsingData_cookies_cache.js]
[test_ext_browsingData_cookies_cookieStoreId.js]
[test_ext_browsingData_downloads.js]
[test_ext_browsingData_passwords.js]
skip-if = tsan # Times out, bug 1612707