summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js')
-rw-r--r--toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js161
1 files changed, 161 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js b/toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js
new file mode 100644
index 0000000000..0bb50f81c8
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/browser/browser_openPasswordManager.js
@@ -0,0 +1,161 @@
+const { sinon } = ChromeUtils.importESModule(
+ "resource://testing-common/Sinon.sys.mjs"
+);
+
+add_task(async function test_noFilter() {
+ let openingFunc = () =>
+ LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" });
+ let passwordManager = await openPasswordManager(openingFunc);
+
+ Assert.ok(passwordManager, "Login dialog was opened");
+ await passwordManager.close();
+ await TestUtils.waitForCondition(() => {
+ return Services.wm.getMostRecentWindow("Toolkit:PasswordManager") === null;
+ }, "Waiting for the password manager dialog to close");
+});
+
+add_task(async function test_filter() {
+ // Greek IDN for example.test
+ let domain = "παράδειγμα.δοκιμή";
+ let openingFunc = () =>
+ LoginHelper.openPasswordManager(window, {
+ filterString: domain,
+ entryPoint: "mainmenu",
+ });
+ let passwordManager = await openPasswordManager(openingFunc, true);
+ Assert.equal(
+ passwordManager.filterValue,
+ domain,
+ "search string to filter logins should match expectation"
+ );
+ await passwordManager.close();
+ await TestUtils.waitForCondition(() => {
+ return Services.wm.getMostRecentWindow("Toolkit:PasswordManager") === null;
+ }, "Waiting for the password manager dialog to close");
+});
+
+add_task(async function test_management_noFilter() {
+ let tabOpenPromise = BrowserTestUtils.waitForNewTab(gBrowser, "about:logins");
+ LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" });
+ let tab = await tabOpenPromise;
+ Assert.ok(tab, "Got the new tab");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_management_filter() {
+ let tabOpenPromise = BrowserTestUtils.waitForNewTab(
+ gBrowser,
+ "about:logins?filter=%CF%80%CE%B1%CF%81%CE%AC%CE%B4%CE%B5%CE%B9%CE%B3%CE%BC%CE%B1.%CE%B4%CE%BF%CE%BA%CE%B9%CE%BC%CE%AE"
+ );
+ // Greek IDN for example.test
+ LoginHelper.openPasswordManager(window, {
+ filterString: "παράδειγμα.δοκιμή",
+ entryPoint: "mainmenu",
+ });
+ let tab = await tabOpenPromise;
+ Assert.ok(tab, "Got the new tab with a domain filter");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(
+ async function test_url_when_opening_password_manager_without_a_filterString() {
+ sinon.spy(window, "openTrustedLinkIn");
+ const openingFunc = () =>
+ LoginHelper.openPasswordManager(window, {
+ filterString: "",
+ entryPoint: "mainmenu",
+ });
+ const passwordManager = await openPasswordManager(openingFunc);
+
+ const url = window.openTrustedLinkIn.lastCall.args[0];
+
+ Assert.ok(
+ !url.includes("filter"),
+ "LoginHelper.openPasswordManager call without a filterString navigated to a URL with a filter query param"
+ );
+ Assert.equal(
+ 0,
+ url.split("").filter(char => char === "&").length,
+ "LoginHelper.openPasswordManager call without a filterString navigated to a URL with an &"
+ );
+ Assert.equal(
+ url,
+ "about:logins?entryPoint=mainmenu",
+ "LoginHelper.openPasswordManager call without a filterString navigated to an unexpected URL"
+ );
+
+ Assert.ok(passwordManager, "Login dialog was opened");
+ await passwordManager.close();
+ window.openTrustedLinkIn.restore();
+ }
+);
+
+add_task(
+ async function test_url_when_opening_password_manager_with_a_filterString() {
+ sinon.spy(window, "openTrustedLinkIn");
+ const openingFunc = () =>
+ LoginHelper.openPasswordManager(window, {
+ filterString: "testFilter",
+ entryPoint: "mainmenu",
+ });
+ const passwordManager = await openPasswordManager(openingFunc);
+
+ const url = window.openTrustedLinkIn.lastCall.args[0];
+
+ Assert.ok(
+ url.includes("filter"),
+ "LoginHelper.openPasswordManager call with a filterString navigated to a URL without a filter query param"
+ );
+ Assert.equal(
+ 1,
+ url.split("").filter(char => char === "&").length,
+ "LoginHelper.openPasswordManager call with a filterString navigated to a URL without the correct number of '&'s"
+ );
+ Assert.equal(
+ url,
+ "about:logins?filter=testFilter&entryPoint=mainmenu",
+ "LoginHelper.openPasswordManager call with a filterString navigated to an unexpected URL"
+ );
+
+ Assert.ok(passwordManager, "Login dialog was opened");
+ await passwordManager.close();
+ window.openTrustedLinkIn.restore();
+ }
+);
+
+add_task(
+ async function test_url_when_opening_password_manager_without_filterString_or_entryPoint() {
+ sinon.spy(window, "openTrustedLinkIn");
+ const openingFunc = () =>
+ LoginHelper.openPasswordManager(window, {
+ filterString: "",
+ entryPoint: "",
+ });
+ const passwordManager = await openPasswordManager(openingFunc);
+
+ const url = window.openTrustedLinkIn.lastCall.args[0];
+
+ Assert.ok(
+ !url.includes("filter"),
+ "LoginHelper.openPasswordManager call without a filterString navigated to a URL with a filter query param"
+ );
+ Assert.ok(
+ !url.includes("entryPoint"),
+ "LoginHelper.openPasswordManager call without an entryPoint navigated to a URL with an entryPoint query param"
+ );
+ Assert.equal(
+ 0,
+ url.split("").filter(char => char === "&").length,
+ "LoginHelper.openPasswordManager call without query params navigated to a URL that included at least one '&'"
+ );
+ Assert.equal(
+ url,
+ "about:logins",
+ "LoginHelper.openPasswordManager call without a filterString or entryPoint navigated to an unexpected URL"
+ );
+
+ Assert.ok(passwordManager, "Login dialog was opened");
+ await passwordManager.close();
+ window.openTrustedLinkIn.restore();
+ }
+);