diff options
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities_move.js')
-rw-r--r-- | toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities_move.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities_move.js b/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities_move.js new file mode 100644 index 0000000000..0150ccf281 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities_move.js @@ -0,0 +1,99 @@ +"use strict"; + +AddonTestUtils.init(this); +AddonTestUtils.overrideCertDB(); + +add_setup(async () => { + await ExtensionTestUtils.startAddonManager(); +}); + +add_task(async function test_contextualIdentity_move() { + async function background() { + async function listCookieStoreIds() { + const contextualIds = await browser.contextualIdentities.query({}); + return contextualIds.map(ctxId => ctxId.cookieStoreId); + } + const containerIds = await listCookieStoreIds(); + browser.test.assertEq(containerIds.length, 4, "We start from 4 containers"); + await browser.test.assertRejects( + browser.contextualIdentities.move("foobar", 2), + "Invalid contextual identity: foobar", + "API should reject for moving unknown containers" + ); + await browser.test.assertRejects( + browser.contextualIdentities.move("firefox-container-123456", 2), + "Invalid contextual identity: firefox-container-123456", + "API should reject for moving unknown containers" + ); + const [id0, id1, id2, id3] = containerIds; + await browser.test.assertRejects( + browser.contextualIdentities.move([id0, id0], 2), + `Duplicate contextual identity: ${id0}`, + "API should reject moves with duplicate identities containers" + ); + await browser.test.assertRejects( + browser.contextualIdentities.move([id0], 4), + `Moving to invalid position 4`, + "API should reject moves with invalid destinations" + ); + await browser.test.assertRejects( + browser.contextualIdentities.move([id0, id1, id2, id3], 1), + `Moving to invalid position 1`, + "API should reject moves with invalid destinations" + ); + await browser.test.assertDeepEq( + [id0, id1, id2, id3], + await listCookieStoreIds(), + "Rejected calls should not have modified the list" + ); + await browser.contextualIdentities.move(id0, -1); + await browser.test.assertDeepEq( + [id1, id2, id3, id0], + await listCookieStoreIds(), + "Moving single value to last position works" + ); + await browser.test.assertRejects( + browser.contextualIdentities.move([id0], -2), + `Moving to invalid position -2`, + "API should reject moves with invalid destinations" + ); + await browser.contextualIdentities.move([id1, id3], 1); + await browser.test.assertDeepEq( + [id2, id1, id3, id0], + await listCookieStoreIds(), + "Moving bulk values to specified position works" + ); + await browser.contextualIdentities.move([], 2); + await browser.test.assertDeepEq( + [id2, id1, id3, id0], + await listCookieStoreIds(), + "Moving an empty list of values has no effect" + ); + await browser.contextualIdentities.move([id0, id3, id1, id2], -1); + await browser.test.assertDeepEq( + [id2, id1, id3, id0], + await listCookieStoreIds(), + "Moving all values to the end has no effect" + ); + browser.test.notifyPass("contextualIdentities_move"); + } + + function makeExtension(id) { + return ExtensionTestUtils.loadExtension({ + useAddonManager: "temporary", + background, + manifest: { + browser_specific_settings: { + gecko: { id }, + }, + permissions: ["contextualIdentities"], + }, + }); + } + + let extension = makeExtension("containers-test@mozilla.org"); + + await extension.startup(); + await extension.awaitFinish("contextualIdentities_move"); + await extension.unload(); +}); |