When a user signs up via an external auth method, a new link is added to the signup modal which allows them to connect an existing Discourse account. This will only happen if: - There is at least 1 other auth method available and - The current auth method permits users to disconnect/reconnect their accounts themselves
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
|
import { test } from "qunit";
|
|
import { visit } from "@ember/test-helpers";
|
|
|
|
function setupAuthData(data) {
|
|
data = {
|
|
auth_provider: "test",
|
|
email: "blah@example.com",
|
|
can_edit_username: true,
|
|
can_edit_name: true,
|
|
...data,
|
|
};
|
|
|
|
const node = document.createElement("meta");
|
|
node.dataset.authenticationData = JSON.stringify(data);
|
|
node.id = "data-authentication";
|
|
document.querySelector("head").appendChild(node);
|
|
}
|
|
|
|
acceptance("Create Account - external auth", function (needs) {
|
|
needs.hooks.beforeEach(() => {
|
|
setupAuthData();
|
|
});
|
|
needs.hooks.afterEach(() => {
|
|
document
|
|
.querySelector("head")
|
|
.removeChild(document.getElementById("data-authentication"));
|
|
});
|
|
|
|
test("when skip is disabled (default)", async function (assert) {
|
|
await visit("/");
|
|
|
|
assert.ok(
|
|
exists("#discourse-modal div.create-account-body"),
|
|
"it shows the registration modal"
|
|
);
|
|
|
|
assert.ok(exists("#new-account-username"), "it shows the fields");
|
|
|
|
assert.notOk(
|
|
exists(".create-account-associate-link"),
|
|
"it does not show the associate link"
|
|
);
|
|
});
|
|
|
|
test("when skip is enabled", async function (assert) {
|
|
this.siteSettings.auth_skip_create_confirm = true;
|
|
await visit("/");
|
|
|
|
assert.ok(
|
|
exists("#discourse-modal div.create-account-body"),
|
|
"it shows the registration modal"
|
|
);
|
|
|
|
assert.not(exists("#new-account-username"), "it does not show the fields");
|
|
});
|
|
});
|
|
|
|
acceptance("Create account - with associate link", function (needs) {
|
|
needs.hooks.beforeEach(() => {
|
|
setupAuthData({ associate_url: "/associate/abcde" });
|
|
});
|
|
needs.hooks.afterEach(() => {
|
|
document
|
|
.querySelector("head")
|
|
.removeChild(document.getElementById("data-authentication"));
|
|
});
|
|
|
|
test("displays associate link when allowed", async function (assert) {
|
|
await visit("/");
|
|
|
|
assert.ok(
|
|
exists("#discourse-modal div.create-account-body"),
|
|
"it shows the registration modal"
|
|
);
|
|
assert.ok(exists("#new-account-username"), "it shows the fields");
|
|
assert.ok(
|
|
exists(".create-account-associate-link"),
|
|
"it shows the associate link"
|
|
);
|
|
});
|
|
});
|