summaryrefslogtreecommitdiffstats
path: root/browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js')
-rw-r--r--browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js
new file mode 100644
index 0000000000..224ad1d275
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_masterpassword_doorhanger.js
@@ -0,0 +1,76 @@
+/**
+ * Test that the doorhanger notification for password saving is populated with
+ * the correct values in various password capture cases.
+ */
+
+Services.scriptloader.loadSubScript(
+ "chrome://mochitests/content/browser/toolkit/components/passwordmgr/test/browser/head.js",
+ this
+);
+
+add_task(async function test_policy_masterpassword_doorhanger() {
+ await setupPolicyEngineWithJson({
+ policies: {
+ PrimaryPassword: true,
+ },
+ });
+
+ let username = "username";
+ let password = "password";
+
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url:
+ "https://example.com/browser/toolkit/components/" +
+ "passwordmgr/test/browser/form_basic.html",
+ },
+ async function (browser) {
+ await SimpleTest.promiseFocus(browser.ownerGlobal);
+
+ // Update the form with credentials from the test case.
+ info(`update form with username: ${username}, password: ${password}`);
+ await changeContentFormValues(browser, {
+ "#form-basic-username": username,
+ "#form-basic-password": password,
+ });
+
+ // Submit the form with the new credentials. This will cause the doorhanger
+ // notification to be displayed.
+ let formSubmittedPromise = listenForTestNotification("ShowDoorhanger");
+ await SpecialPowers.spawn(browser, [], async function () {
+ let doc = this.content.document;
+ doc.getElementById("form-basic").submit();
+ });
+ await formSubmittedPromise;
+
+ let expectedDoorhanger = "password-save";
+
+ info("Waiting for doorhanger of type: " + expectedDoorhanger);
+ let notif = await waitForDoorhanger(browser, expectedDoorhanger);
+
+ // Fake the subdialog
+ let dialogURL = "";
+ let originalOpenDialog = window.openDialog;
+ window.openDialog = function (aDialogURL, unused, unused2, aCallback) {
+ dialogURL = aDialogURL;
+ if (aCallback) {
+ aCallback();
+ }
+ };
+
+ await clickDoorhangerButton(notif, REMEMBER_BUTTON);
+
+ await TestUtils.waitForCondition(
+ () => dialogURL,
+ "wait for open to get called asynchronously"
+ );
+ is(
+ dialogURL,
+ "chrome://mozapps/content/preferences/changemp.xhtml",
+ "clicking on the checkbox should open the masterpassword dialog"
+ );
+ window.openDialog = originalOpenDialog;
+ }
+ );
+});