summaryrefslogtreecommitdiffstats
path: root/browser/components/aboutlogins/tests/browser/browser_loginListChanges.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/aboutlogins/tests/browser/browser_loginListChanges.js')
-rw-r--r--browser/components/aboutlogins/tests/browser/browser_loginListChanges.js144
1 files changed, 144 insertions, 0 deletions
diff --git a/browser/components/aboutlogins/tests/browser/browser_loginListChanges.js b/browser/components/aboutlogins/tests/browser/browser_loginListChanges.js
new file mode 100644
index 0000000000..13df6c1ef6
--- /dev/null
+++ b/browser/components/aboutlogins/tests/browser/browser_loginListChanges.js
@@ -0,0 +1,144 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+add_setup(async function () {
+ await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ url: "about:logins",
+ });
+ registerCleanupFunction(() => {
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ });
+});
+
+add_task(async function test_login_added() {
+ let login = {
+ guid: "70",
+ username: "jared",
+ password: "deraj",
+ origin: "https://www.example.com",
+ };
+ let browser = gBrowser.selectedBrowser;
+ browser.browsingContext.currentWindowGlobal
+ .getActor("AboutLogins")
+ .sendAsyncMessage("AboutLogins:LoginAdded", login);
+
+ await SpecialPowers.spawn(browser, [login], async addedLogin => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginFound = await ContentTaskUtils.waitForCondition(() => {
+ return (
+ loginList._loginGuidsSortedOrder.length == 1 &&
+ loginList._loginGuidsSortedOrder[0] == addedLogin.guid
+ );
+ }, "Waiting for login to be added");
+ Assert.ok(loginFound, "Newly added logins should be added to the page");
+ });
+});
+
+add_task(async function test_login_modified() {
+ let login = {
+ guid: "70",
+ username: "jared@example.com",
+ password: "deraj",
+ origin: "https://www.example.com",
+ };
+ let browser = gBrowser.selectedBrowser;
+ browser.browsingContext.currentWindowGlobal
+ .getActor("AboutLogins")
+ .sendAsyncMessage("AboutLogins:LoginModified", login);
+
+ await SpecialPowers.spawn(browser, [login], async modifiedLogin => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginFound = await ContentTaskUtils.waitForCondition(() => {
+ return (
+ loginList._loginGuidsSortedOrder.length == 1 &&
+ loginList._loginGuidsSortedOrder[0] == modifiedLogin.guid &&
+ loginList._logins[loginList._loginGuidsSortedOrder[0]].login.username ==
+ modifiedLogin.username
+ );
+ }, "Waiting for username to get updated");
+ Assert.ok(loginFound, "The login should get updated on the page");
+ });
+});
+
+add_task(async function test_login_removed() {
+ let login = {
+ guid: "70",
+ username: "jared@example.com",
+ password: "deraj",
+ origin: "https://www.example.com",
+ };
+ let browser = gBrowser.selectedBrowser;
+ browser.browsingContext.currentWindowGlobal
+ .getActor("AboutLogins")
+ .sendAsyncMessage("AboutLogins:LoginRemoved", login);
+
+ await SpecialPowers.spawn(browser, [login], async removedLogin => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginRemoved = await ContentTaskUtils.waitForCondition(() => {
+ return !loginList._loginGuidsSortedOrder.length;
+ }, "Waiting for login to get removed");
+ Assert.ok(loginRemoved, "The login should be removed from the page");
+ });
+});
+
+add_task(async function test_all_logins_removed() {
+ // Setup the test with 2 logins.
+ let logins = [
+ {
+ guid: "70",
+ username: "jared",
+ password: "deraj",
+ origin: "https://www.example.com",
+ },
+ {
+ guid: "71",
+ username: "ntim",
+ password: "verysecurepassword",
+ origin: "https://www.example.com",
+ },
+ ];
+
+ let browser = gBrowser.selectedBrowser;
+ browser.browsingContext.currentWindowGlobal
+ .getActor("AboutLogins")
+ .sendAsyncMessage("AboutLogins:AllLogins", logins);
+
+ await SpecialPowers.spawn(browser, [logins], async addedLogins => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginFound = await ContentTaskUtils.waitForCondition(() => {
+ return (
+ loginList._loginGuidsSortedOrder.length == 2 &&
+ loginList._loginGuidsSortedOrder[0] == addedLogins[0].guid &&
+ loginList._loginGuidsSortedOrder[1] == addedLogins[1].guid
+ );
+ }, "Waiting for login to be added");
+ Assert.ok(loginFound, "Newly added logins should be added to the page");
+ Assert.ok(
+ !content.document.documentElement.classList.contains("no-logins"),
+ "Should not be in no logins view after adding logins"
+ );
+ Assert.ok(
+ !loginList.classList.contains("no-logins"),
+ "login-list should not be in no logins view after adding logins"
+ );
+ });
+
+ Services.logins.removeAllUserFacingLogins();
+
+ await SpecialPowers.spawn(browser, [], async () => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginFound = await ContentTaskUtils.waitForCondition(() => {
+ return !loginList._loginGuidsSortedOrder.length;
+ }, "Waiting for logins to be cleared");
+ Assert.ok(loginFound, "Logins should be cleared");
+ Assert.ok(
+ content.document.documentElement.classList.contains("no-logins"),
+ "Should be in no logins view after clearing"
+ );
+ Assert.ok(
+ loginList.classList.contains("no-logins"),
+ "login-list should be in no logins view after clearing"
+ );
+ });
+});