Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const PREF_NAME = "mailnews.auto_config_url";
const PREF_VALUE = Services.prefs.getCharPref(PREF_NAME);
const { ServerTestUtils } = ChromeUtils.importESModule(
);
add_setup(function () {
// Set the pref to load a local autoconfig file.
const url =
Services.prefs.setCharPref(PREF_NAME, url);
});
registerCleanupFunction(function () {
// Restore the original pref.
Services.prefs.setCharPref(PREF_NAME, PREF_VALUE);
});
add_task(async function test_choosing_pop3_account_creation() {
const emailUser = {
name: "John Doe",
email: "john.doe@pop3.test",
password: "abc12345",
};
const pop3Server = await ServerTestUtils.createServer({
type: "pop3",
baseOptions: { username: emailUser.email, password: emailUser.password },
hostname: "pop.pop3.test",
port: 110,
});
IMAPServer.open(emailUser.email);
SMTPServer.open(emailUser.email);
const dialog = await subtest_open_account_hub_dialog();
await subtest_fill_initial_config_fields(dialog, emailUser);
const footer = dialog.querySelector("account-hub-footer");
const footerForward = footer.querySelector("#forward");
const configFoundTemplate = dialog.querySelector("email-config-found");
await TestUtils.waitForCondition(
() =>
BrowserTestUtils.isVisible(configFoundTemplate.querySelector("#imap")),
"The IMAP config option should be visible"
);
Assert.ok(
configFoundTemplate.querySelector("#imap").classList.contains("selected"),
"IMAP should be the selected config option"
);
EventUtils.synthesizeMouseAtCenter(
configFoundTemplate.querySelector("#pop3"),
{}
);
// POP3 should be the selected config.
Assert.ok(
configFoundTemplate.querySelector("#pop3").classList.contains("selected"),
"POP3 should be the selected config option"
);
// Continue button should lead to password template.
EventUtils.synthesizeMouseAtCenter(footerForward, {});
Assert.ok(
BrowserTestUtils.isHidden(configFoundTemplate),
"The config found template should be hidden."
);
await TestUtils.waitForCondition(
() =>
BrowserTestUtils.isVisible(dialog.querySelector("email-password-form")),
"The email password form should be visible."
);
const emailPasswordTemplate = dialog.querySelector("email-password-form");
await TestUtils.waitForCondition(
() =>
BrowserTestUtils.isVisible(
emailPasswordTemplate.querySelector("#password")
),
"The password form input should be visible."
);
const passwordInput = emailPasswordTemplate.querySelector("#password");
EventUtils.synthesizeMouseAtCenter(passwordInput, {});
const inputEvent = BrowserTestUtils.waitForEvent(
passwordInput,
"input",
true,
event => event.target.value === "abc12345"
);
EventUtils.sendString("abc12345", window);
await inputEvent;
EventUtils.synthesizeMouseAtCenter(footerForward, {});
await TestUtils.waitForCondition(
() => BrowserTestUtils.isHidden(emailPasswordTemplate),
"The email password subview should be hidden."
);
let popAccount;
await TestUtils.waitForCondition(
() =>
(popAccount = MailServices.accounts.accounts.find(
account => account.identities[0]?.email === emailUser.email
)),
"The user account should be created."
);
Assert.ok(popAccount, "POP3 account should be created");
Assert.equal(
popAccount.incomingServer.type,
"pop3",
"The new account created should be a POP3 account"
);
await subtest_clear_status_bar();
MailServices.accounts.removeAccount(popAccount);
Services.logins.removeAllLogins();
pop3Server.close();
IMAPServer.close();
SMTPServer.close();
await subtest_close_account_hub_dialog(
dialog,
dialog.querySelector("email-sync-accounts-form")
);
});