summaryrefslogtreecommitdiffstats
path: root/browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js')
-rw-r--r--browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js b/browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js
new file mode 100644
index 0000000000..a5aef703fa
--- /dev/null
+++ b/browser/components/aboutlogins/tests/browser/browser_breachAlertShowingForAddedLogin.js
@@ -0,0 +1,123 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+EXPECTED_BREACH = {
+ AddedDate: "2018-12-20T23:56:26Z",
+ BreachDate: "2018-12-16",
+ Domain: "breached.example.com",
+ Name: "Breached",
+ PwnCount: 1643100,
+ DataClasses: ["Email addresses", "Usernames", "Passwords", "IP addresses"],
+ _status: "synced",
+ id: "047940fe-d2fd-4314-b636-b4a952ee0043",
+ last_modified: "1541615610052",
+ schema: "1541615609018",
+};
+
+add_setup(async function () {
+ await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ url: "about:logins",
+ });
+ registerCleanupFunction(() => {
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ Services.logins.removeAllUserFacingLogins();
+ });
+});
+
+add_task(async function test_added_login_shows_breach_warning() {
+ let browser = gBrowser.selectedBrowser;
+ await SpecialPowers.spawn(browser, [], async () => {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ Assert.equal(
+ loginList._loginGuidsSortedOrder.length,
+ 0,
+ "the login list should be empty"
+ );
+ });
+
+ TEST_LOGIN3 = await addLogin(TEST_LOGIN3);
+ await SpecialPowers.spawn(
+ browser,
+ [TEST_LOGIN3.guid],
+ async aTestLogin3Guid => {
+ let loginList = Cu.waiveXrays(
+ content.document.querySelector("login-list")
+ );
+ await ContentTaskUtils.waitForCondition(
+ () => loginList._loginGuidsSortedOrder.length == 1,
+ "waiting for login list count to equal one. count=" +
+ loginList._loginGuidsSortedOrder.length
+ );
+ Assert.equal(
+ loginList._loginGuidsSortedOrder.length,
+ 1,
+ "one login should be in the list"
+ );
+ let breachedLoginListItems;
+ await ContentTaskUtils.waitForCondition(() => {
+ breachedLoginListItems = loginList._list.querySelectorAll(
+ ".login-list-item[data-guid].breached"
+ );
+ return breachedLoginListItems.length == 1;
+ }, "waiting for the login to get marked as breached");
+ Assert.equal(
+ breachedLoginListItems[0].dataset.guid,
+ aTestLogin3Guid,
+ "the breached login should be login3"
+ );
+ }
+ );
+
+ info("adding a login that uses the same password as the breached login");
+ let vulnerableLogin = new nsLoginInfo(
+ "https://2.example.com",
+ "https://2.example.com",
+ null,
+ "user2",
+ "pass3",
+ "username",
+ "password"
+ );
+ vulnerableLogin = await addLogin(vulnerableLogin);
+ await SpecialPowers.spawn(
+ browser,
+ [[TEST_LOGIN3.guid, vulnerableLogin.guid]],
+ async ([aTestLogin3Guid, aVulnerableLoginGuid]) => {
+ let loginList = Cu.waiveXrays(
+ content.document.querySelector("login-list")
+ );
+ await ContentTaskUtils.waitForCondition(
+ () => loginList._loginGuidsSortedOrder.length == 2,
+ "waiting for login list count to equal two. count=" +
+ loginList._loginGuidsSortedOrder.length
+ );
+ Assert.equal(
+ loginList._loginGuidsSortedOrder.length,
+ 2,
+ "two logins should be in the list"
+ );
+ let breachedAndVulnerableLoginListItems;
+ await ContentTaskUtils.waitForCondition(() => {
+ breachedAndVulnerableLoginListItems = [
+ ...loginList._list.querySelectorAll(".breached, .vulnerable"),
+ ];
+ return breachedAndVulnerableLoginListItems.length == 2;
+ }, "waiting for the logins to get marked as breached and vulnerable");
+ Assert.ok(
+ !!breachedAndVulnerableLoginListItems.find(
+ listItem => listItem.dataset.guid == aTestLogin3Guid
+ ),
+ "the list should include the breached login: " +
+ breachedAndVulnerableLoginListItems.map(li => li.dataset.guid)
+ );
+ Assert.ok(
+ !!breachedAndVulnerableLoginListItems.find(
+ listItem => listItem.dataset.guid == aVulnerableLoginGuid
+ ),
+ "the list should include the vulnerable login: " +
+ breachedAndVulnerableLoginListItems.map(li => li.dataset.guid)
+ );
+ }
+ );
+});