fune/toolkit/components/passwordmgr/test/browser/browser_exceptions_dialog.js
Sam Foster de25b2ae50 Bug 1560042 - Part 3: Update matching login and remove empty-username login when persisting changes from update doorhanger. r=MattN
* Add an extra param to promptToChangePassword to indicate whether a duped/superceded login should be deleted
* Add a raft of tests for promptToChangePassword as it applies to generated passwords and auto-saved logins

Differential Revision: https://phabricator.services.mozilla.com/D40115

--HG--
extra : moz-landing-system : lando
2019-08-21 22:07:21 +00:00

62 lines
1.7 KiB
JavaScript

"use strict";
const LOGIN_HOST = "http://example.com";
function openExceptionsDialog() {
return window.openDialog(
"chrome://browser/content/preferences/permissions.xul",
"Toolkit:PasswordManagerExceptions",
"",
{
blockVisible: true,
sessionVisible: false,
allowVisible: false,
hideStatusColumn: true,
prefilledHost: "",
permissionType: "login-saving",
}
);
}
function countDisabledHosts(dialog) {
return dialog.document.getElementById("permissionsBox").itemCount;
}
function promiseStorageChanged(expectedData) {
function observer(subject, data) {
return (
data == expectedData &&
subject.QueryInterface(Ci.nsISupportsString).data == LOGIN_HOST
);
}
return TestUtils.topicObserved("passwordmgr-storage-changed", observer);
}
add_task(async function test_disable() {
let dialog = openExceptionsDialog();
let promiseChanged = promiseStorageChanged("hostSavingDisabled");
await BrowserTestUtils.waitForEvent(dialog, "load");
await new Promise(resolve => {
waitForFocus(resolve, dialog);
});
Services.logins.setLoginSavingEnabled(LOGIN_HOST, false);
await promiseChanged;
is(countDisabledHosts(dialog), 1, "Verify disabled host added");
await BrowserTestUtils.closeWindow(dialog);
});
add_task(async function test_enable() {
let dialog = openExceptionsDialog();
let promiseChanged = promiseStorageChanged("hostSavingEnabled");
await BrowserTestUtils.waitForEvent(dialog, "load");
await new Promise(resolve => {
waitForFocus(resolve, dialog);
});
Services.logins.setLoginSavingEnabled(LOGIN_HOST, true);
await promiseChanged;
is(countDisabledHosts(dialog), 0, "Verify disabled host removed");
await BrowserTestUtils.closeWindow(dialog);
});