371 lines
11 KiB
JavaScript
371 lines
11 KiB
JavaScript
import {
|
|
acceptance,
|
|
exists,
|
|
query,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
|
import { click, currentRouteName, fillIn, visit } from "@ember/test-helpers";
|
|
import I18n from "I18n";
|
|
import { test } from "qunit";
|
|
|
|
acceptance("Managing Group Email Settings - SMTP Disabled", function (needs) {
|
|
needs.user();
|
|
|
|
test("When SiteSetting.enable_smtp is false", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
assert.notOk(
|
|
query(".user-secondary-navigation").innerText.includes("Email"),
|
|
"email link is not shown in the sidebar"
|
|
);
|
|
assert.strictEqual(
|
|
currentRouteName(),
|
|
"group.manage.profile",
|
|
"it redirects to the group profile page"
|
|
);
|
|
});
|
|
});
|
|
|
|
acceptance(
|
|
"Managing Group Email Settings - SMTP Enabled, IMAP Disabled",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({ enable_smtp: true });
|
|
|
|
test("When SiteSetting.enable_smtp is true but SiteSetting.enable_imap is false", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
assert.ok(
|
|
query(".user-secondary-navigation").innerText.includes("Email"),
|
|
"email link is shown in the sidebar"
|
|
);
|
|
assert.strictEqual(
|
|
currentRouteName(),
|
|
"group.manage.email",
|
|
"it redirects to the group email page"
|
|
);
|
|
assert.notOk(
|
|
exists(".group-manage-email-imap-wrapper"),
|
|
"does not show IMAP settings"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"Managing Group Email Settings - SMTP and IMAP Enabled",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({ enable_smtp: true, enable_imap: true });
|
|
|
|
needs.pretender((server, helper) => {
|
|
server.post("/groups/47/test_email_settings", () => {
|
|
return helper.response({
|
|
success: "OK",
|
|
});
|
|
});
|
|
server.put("/groups/47", () => {
|
|
return helper.response({
|
|
success: "OK",
|
|
});
|
|
});
|
|
});
|
|
|
|
test("enabling SMTP, testing, and saving", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
assert.ok(
|
|
query(".user-secondary-navigation").innerText.includes("Email"),
|
|
"email link is shown in the sidebar"
|
|
);
|
|
assert.ok(
|
|
exists("#enable_imap:disabled"),
|
|
"IMAP is disabled until SMTP settings are valid"
|
|
);
|
|
|
|
await click("#enable_smtp");
|
|
assert.ok(exists(".group-smtp-email-settings"));
|
|
|
|
await click("#prefill_smtp_gmail");
|
|
assert.strictEqual(
|
|
query("input[name='smtp_server']").value,
|
|
"smtp.gmail.com",
|
|
"prefills SMTP server settings for gmail"
|
|
);
|
|
assert.strictEqual(
|
|
query("input[name='smtp_port']").value,
|
|
"587",
|
|
"prefills SMTP port settings for gmail"
|
|
);
|
|
assert.ok(
|
|
exists("#enable_ssl:checked"),
|
|
"prefills SMTP ssl settings for gmail"
|
|
);
|
|
|
|
assert.ok(
|
|
exists(".test-smtp-settings:disabled"),
|
|
"does not allow testing settings if not all fields are filled"
|
|
);
|
|
|
|
await fillIn('input[name="username"]', "myusername@gmail.com");
|
|
await fillIn('input[name="password"]', "password@gmail.com");
|
|
await click(".test-smtp-settings");
|
|
|
|
assert.ok(exists(".smtp-settings-ok"), "tested settings are ok");
|
|
|
|
await click(".group-manage-save");
|
|
|
|
assert.strictEqual(
|
|
query(".group-manage-save-button > span").innerText,
|
|
"Saved!"
|
|
);
|
|
|
|
assert.notOk(
|
|
exists("#enable_imap:disabled"),
|
|
"IMAP is able to be enabled now that SMTP is saved"
|
|
);
|
|
|
|
await click("#enable_smtp");
|
|
assert.strictEqual(
|
|
query(".modal-body").innerText,
|
|
I18n.t("groups.manage.email.smtp_disable_confirm"),
|
|
"shows a confirm dialogue warning SMTP settings will be wiped"
|
|
);
|
|
|
|
await click(".modal-footer .btn.btn-primary");
|
|
});
|
|
|
|
test("enabling IMAP, testing, and saving", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
|
|
await click("#enable_smtp");
|
|
await click("#prefill_smtp_gmail");
|
|
await fillIn('input[name="username"]', "myusername@gmail.com");
|
|
await fillIn('input[name="password"]', "password@gmail.com");
|
|
await click(".test-smtp-settings");
|
|
await click(".group-manage-save");
|
|
|
|
assert.notOk(
|
|
exists("#enable_imap:disabled"),
|
|
"IMAP is able to be enabled now that IMAP is saved"
|
|
);
|
|
|
|
await click("#enable_imap");
|
|
|
|
assert.ok(
|
|
exists(".test-imap-settings:disabled"),
|
|
"does not allow testing settings if not all fields are filled"
|
|
);
|
|
|
|
await click("#prefill_imap_gmail");
|
|
assert.strictEqual(
|
|
query("input[name='imap_server']").value,
|
|
"imap.gmail.com",
|
|
"prefills IMAP server settings for gmail"
|
|
);
|
|
assert.strictEqual(
|
|
query("input[name='imap_port']").value,
|
|
"993",
|
|
"prefills IMAP port settings for gmail"
|
|
);
|
|
assert.ok(
|
|
exists("#enable_ssl:checked"),
|
|
"prefills IMAP ssl settings for gmail"
|
|
);
|
|
await click(".test-imap-settings");
|
|
|
|
assert.ok(exists(".imap-settings-ok"), "tested settings are ok");
|
|
|
|
await click(".group-manage-save");
|
|
|
|
assert.strictEqual(
|
|
query(".group-manage-save-button > span").innerText,
|
|
"Saved!"
|
|
);
|
|
|
|
assert.ok(
|
|
exists(".imap-no-mailbox-selected"),
|
|
"shows a message saying no IMAP mailbox is selected"
|
|
);
|
|
|
|
await selectKit(
|
|
".control-group.group-imap-mailboxes .combo-box"
|
|
).expand();
|
|
await selectKit(
|
|
".control-group.group-imap-mailboxes .combo-box"
|
|
).selectRowByValue("All Mail");
|
|
await click(".group-manage-save");
|
|
|
|
assert.notOk(
|
|
exists(".imap-no-mailbox-selected"),
|
|
"no longer shows a no mailbox selected message"
|
|
);
|
|
|
|
await click("#enable_imap");
|
|
assert.strictEqual(
|
|
query(".modal-body").innerText,
|
|
I18n.t("groups.manage.email.imap_disable_confirm"),
|
|
"shows a confirm dialogue warning IMAP settings will be wiped"
|
|
);
|
|
await click(".modal-footer .btn.btn-primary");
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"Managing Group Email Settings - SMTP and IMAP Enabled - Settings Preflled",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({ enable_smtp: true, enable_imap: true });
|
|
|
|
needs.pretender((server, helper) => {
|
|
server.get("/groups/discourse.json", () => {
|
|
return helper.response(200, {
|
|
group: {
|
|
id: 47,
|
|
automatic: false,
|
|
name: "discourse",
|
|
full_name: "Awesome Team",
|
|
user_count: 8,
|
|
alias_level: 99,
|
|
visible: true,
|
|
public_admission: true,
|
|
public_exit: false,
|
|
flair_url: "fa-adjust",
|
|
is_group_owner: true,
|
|
mentionable: true,
|
|
messageable: true,
|
|
can_see_members: true,
|
|
has_messages: true,
|
|
message_count: 2,
|
|
smtp_server: "smtp.gmail.com",
|
|
smtp_port: 587,
|
|
smtp_ssl: true,
|
|
smtp_enabled: true,
|
|
smtp_updated_at: "2021-06-16T02:58:12.739Z",
|
|
smtp_updated_by: {
|
|
id: 19,
|
|
username: "eviltrout",
|
|
name: "Robin Ward",
|
|
avatar_template:
|
|
"/letter_avatar/eviltrout/{size}/3_f9720745f5ce6dfc2b5641fca999d934.png",
|
|
},
|
|
imap_server: "imap.gmail.com",
|
|
imap_port: 993,
|
|
imap_ssl: true,
|
|
imap_mailbox_name: "INBOX",
|
|
imap_mailboxes: ["INBOX", "[Gmail]/All Mail", "[Gmail]/Important"],
|
|
imap_enabled: true,
|
|
imap_updated_at: "2021-06-16T02:58:12.738Z",
|
|
imap_updated_by: {
|
|
id: 19,
|
|
username: "eviltrout",
|
|
name: "Robin Ward",
|
|
avatar_template:
|
|
"/letter_avatar/eviltrout/{size}/3_f9720745f5ce6dfc2b5641fca999d934.png",
|
|
},
|
|
email_username: "test@test.com",
|
|
email_password: "password",
|
|
},
|
|
extras: {
|
|
visible_group_names: ["discourse"],
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
test("prefills smtp and imap saved settings and shows last updated details", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
|
|
assert.notOk(exists("#enable_smtp:disabled"), "SMTP is not disabled");
|
|
assert.notOk(exists("#enable_imap:disabled"), "IMAP is not disabled");
|
|
|
|
assert.strictEqual(
|
|
query("[name='username']").value,
|
|
"test@test.com",
|
|
"email username is prefilled"
|
|
);
|
|
assert.strictEqual(
|
|
query("[name='password']").value,
|
|
"password",
|
|
"email password is prefilled"
|
|
);
|
|
assert.strictEqual(
|
|
query("[name='smtp_server']").value,
|
|
"smtp.gmail.com",
|
|
"smtp server is prefilled"
|
|
);
|
|
assert.strictEqual(
|
|
query("[name='smtp_port']").value,
|
|
"587",
|
|
"smtp port is prefilled"
|
|
);
|
|
|
|
assert.strictEqual(
|
|
query("[name='imap_server']").value,
|
|
"imap.gmail.com",
|
|
"imap server is prefilled"
|
|
);
|
|
assert.strictEqual(
|
|
query("[name='imap_port']").value,
|
|
"993",
|
|
"imap port is prefilled"
|
|
);
|
|
assert.strictEqual(
|
|
selectKit("#imap_mailbox").header().value(),
|
|
"INBOX",
|
|
"imap mailbox is prefilled"
|
|
);
|
|
|
|
const regex = /updated: (.*?) by eviltrout/;
|
|
assert.ok(exists(".group-email-last-updated-details.for-imap"));
|
|
assert.ok(
|
|
regex.test(
|
|
query(".group-email-last-updated-details.for-imap").innerText.trim()
|
|
),
|
|
"shows last updated imap details"
|
|
);
|
|
assert.ok(exists(".group-email-last-updated-details.for-smtp"));
|
|
assert.ok(
|
|
regex.test(
|
|
query(".group-email-last-updated-details.for-smtp").innerText.trim()
|
|
),
|
|
"shows last updated smtp details"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"Managing Group Email Settings - SMTP and IMAP Enabled - Email Test Invalid",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({ enable_smtp: true, enable_imap: true });
|
|
|
|
needs.pretender((server, helper) => {
|
|
server.post("/groups/47/test_email_settings", () => {
|
|
return helper.response(422, {
|
|
success: false,
|
|
errors: [
|
|
"There was an issue with the SMTP credentials provided, check the username and password and try again.",
|
|
],
|
|
});
|
|
});
|
|
});
|
|
|
|
test("enabling IMAP, testing, and saving", async function (assert) {
|
|
await visit("/g/discourse/manage/email");
|
|
|
|
await click("#enable_smtp");
|
|
await click("#prefill_smtp_gmail");
|
|
await fillIn('input[name="username"]', "myusername@gmail.com");
|
|
await fillIn('input[name="password"]', "password@gmail.com");
|
|
await click(".test-smtp-settings");
|
|
|
|
assert.strictEqual(
|
|
query(".modal-body").innerText,
|
|
"There was an issue with the SMTP credentials provided, check the username and password and try again.",
|
|
"shows a dialogue with the error message from the server"
|
|
);
|
|
await click(".modal-footer .btn.btn-primary");
|
|
});
|
|
}
|
|
);
|