mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Move 2FA preferences tests into individual files (#19099)
This helps to make it easier to identify the test file for the particular route.
This commit is contained in:
parent
fde8d9b4bb
commit
af0c7ff453
@ -17,13 +17,6 @@ import selectKit from "discourse/tests/helpers/select-kit-helper";
|
|||||||
import { test } from "qunit";
|
import { test } from "qunit";
|
||||||
|
|
||||||
function preferencesPretender(server, helper) {
|
function preferencesPretender(server, helper) {
|
||||||
server.post("/u/second_factors.json", () => {
|
|
||||||
return helper.response({
|
|
||||||
success: "OK",
|
|
||||||
password_required: "true",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
server.post("/u/create_second_factor_totp.json", () => {
|
server.post("/u/create_second_factor_totp.json", () => {
|
||||||
return helper.response({
|
return helper.response({
|
||||||
key: "rcyryaqage3jexfj",
|
key: "rcyryaqage3jexfj",
|
||||||
@ -31,19 +24,6 @@ function preferencesPretender(server, helper) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
server.post("/u/create_second_factor_security_key.json", () => {
|
|
||||||
return helper.response({
|
|
||||||
challenge: "a6d393d12654c130b2273e68ca25ca232d1d7f4c2464c2610fb8710a89d4",
|
|
||||||
rp_id: "localhost",
|
|
||||||
rp_name: "Discourse",
|
|
||||||
supported_algorithms: [-7, -257],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
server.post("/u/enable_second_factor_totp.json", () => {
|
|
||||||
return helper.response({ error: "invalid token" });
|
|
||||||
});
|
|
||||||
|
|
||||||
server.put("/u/second_factors_backup.json", () => {
|
server.put("/u/second_factors_backup.json", () => {
|
||||||
return helper.response({
|
return helper.response({
|
||||||
backup_codes: ["dsffdsd", "fdfdfdsf", "fddsds"],
|
backup_codes: ["dsffdsd", "fdfdfdsf", "fddsds"],
|
||||||
@ -177,52 +157,6 @@ acceptance("User Preferences", function (needs) {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("second factor totp", async function (assert) {
|
|
||||||
await visit("/u/eviltrout/preferences/second-factor");
|
|
||||||
|
|
||||||
assert.ok(exists("#password"), "it has a password input");
|
|
||||||
|
|
||||||
await fillIn("#password", "secrets");
|
|
||||||
await click(".user-preferences .btn-primary");
|
|
||||||
assert.notOk(exists("#password"), "it hides the password input");
|
|
||||||
|
|
||||||
await click(".new-totp");
|
|
||||||
assert.ok(exists(".qr-code img"), "shows qr code image");
|
|
||||||
|
|
||||||
await click(".add-totp");
|
|
||||||
|
|
||||||
assert.ok(
|
|
||||||
query(".alert-error").innerHTML.includes("provide a name and the code"),
|
|
||||||
"shows name/token missing error message"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("second factor security keys", async function (assert) {
|
|
||||||
await visit("/u/eviltrout/preferences/second-factor");
|
|
||||||
|
|
||||||
assert.ok(exists("#password"), "it has a password input");
|
|
||||||
|
|
||||||
await fillIn("#password", "secrets");
|
|
||||||
await click(".user-preferences .btn-primary");
|
|
||||||
assert.notOk(exists("#password"), "it hides the password input");
|
|
||||||
|
|
||||||
await click(".new-security-key");
|
|
||||||
assert.ok(exists("#security-key-name"), "shows security key name input");
|
|
||||||
|
|
||||||
await fillIn("#security-key-name", "");
|
|
||||||
|
|
||||||
// The following tests can only run when Webauthn is enabled. This is not
|
|
||||||
// always the case, for example on a browser running on a non-standard port
|
|
||||||
if (typeof PublicKeyCredential !== "undefined") {
|
|
||||||
await click(".add-security-key");
|
|
||||||
|
|
||||||
assert.ok(
|
|
||||||
query(".alert-error").innerHTML.includes("provide a name"),
|
|
||||||
"shows name missing error message"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test("default avatar selector", async function (assert) {
|
test("default avatar selector", async function (assert) {
|
||||||
await visit("/u/eviltrout/preferences");
|
await visit("/u/eviltrout/preferences");
|
||||||
|
|
||||||
@ -239,41 +173,6 @@ acceptance("User Preferences", function (needs) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
acceptance("Second Factor Backups", function (needs) {
|
|
||||||
needs.user();
|
|
||||||
needs.pretender((server, helper) => {
|
|
||||||
server.post("/u/second_factors.json", () => {
|
|
||||||
return helper.response({
|
|
||||||
success: "OK",
|
|
||||||
totps: [{ id: 1, name: "one of them" }],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
server.put("/u/second_factors_backup.json", () => {
|
|
||||||
return helper.response({
|
|
||||||
backup_codes: ["dsffdsd", "fdfdfdsf", "fddsds"],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
server.get("/u/eviltrout/activity.json", () => {
|
|
||||||
return helper.response({});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test("second factor backup", async function (assert) {
|
|
||||||
updateCurrentUser({ second_factor_enabled: true });
|
|
||||||
await visit("/u/eviltrout/preferences/second-factor");
|
|
||||||
await click(".edit-2fa-backup");
|
|
||||||
assert.ok(
|
|
||||||
exists(".second-factor-backup-preferences"),
|
|
||||||
"shows the 2fa backup panel"
|
|
||||||
);
|
|
||||||
await click(".second-factor-backup-preferences .btn-primary");
|
|
||||||
|
|
||||||
assert.ok(exists(".backup-codes-area"), "shows backup codes");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
acceptance(
|
acceptance(
|
||||||
"Avatar selector when selectable avatars is enabled",
|
"Avatar selector when selectable avatars is enabled",
|
||||||
function (needs) {
|
function (needs) {
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
import { test } from "qunit";
|
||||||
|
import { click, visit } from "@ember/test-helpers";
|
||||||
|
import {
|
||||||
|
acceptance,
|
||||||
|
exists,
|
||||||
|
updateCurrentUser,
|
||||||
|
} from "discourse/tests/helpers/qunit-helpers";
|
||||||
|
|
||||||
|
acceptance("User Preferences - Second Factor Backup", function (needs) {
|
||||||
|
needs.user();
|
||||||
|
|
||||||
|
needs.pretender((server, helper) => {
|
||||||
|
server.post("/u/second_factors.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
success: "OK",
|
||||||
|
totps: [{ id: 1, name: "one of them" }],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
server.put("/u/second_factors_backup.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
backup_codes: ["dsffdsd", "fdfdfdsf", "fddsds"],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
server.get("/u/eviltrout/activity.json", () => {
|
||||||
|
return helper.response({});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("second factor backup", async function (assert) {
|
||||||
|
updateCurrentUser({ second_factor_enabled: true });
|
||||||
|
await visit("/u/eviltrout/preferences/second-factor");
|
||||||
|
await click(".edit-2fa-backup");
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
exists(".second-factor-backup-preferences"),
|
||||||
|
"shows the 2fa backup panel"
|
||||||
|
);
|
||||||
|
|
||||||
|
await click(".second-factor-backup-preferences .btn-primary");
|
||||||
|
|
||||||
|
assert.ok(exists(".backup-codes-area"), "shows backup codes");
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,93 @@
|
|||||||
|
import { test } from "qunit";
|
||||||
|
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||||
|
import {
|
||||||
|
acceptance,
|
||||||
|
exists,
|
||||||
|
query,
|
||||||
|
} from "discourse/tests/helpers/qunit-helpers";
|
||||||
|
|
||||||
|
acceptance("User Preferences - Second Factor", function (needs) {
|
||||||
|
needs.user();
|
||||||
|
|
||||||
|
needs.pretender((server, helper) => {
|
||||||
|
server.post("/u/second_factors.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
success: "OK",
|
||||||
|
password_required: "true",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
server.post("/u/create_second_factor_security_key.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
challenge:
|
||||||
|
"a6d393d12654c130b2273e68ca25ca232d1d7f4c2464c2610fb8710a89d4",
|
||||||
|
rp_id: "localhost",
|
||||||
|
rp_name: "Discourse",
|
||||||
|
supported_algorithms: [-7, -257],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
server.post("/u/enable_second_factor_totp.json", () => {
|
||||||
|
return helper.response({ error: "invalid token" });
|
||||||
|
});
|
||||||
|
|
||||||
|
server.post("/u/create_second_factor_totp.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
key: "rcyryaqage3jexfj",
|
||||||
|
qr: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
server.put("/u/second_factors_backup.json", () => {
|
||||||
|
return helper.response({
|
||||||
|
backup_codes: ["dsffdsd", "fdfdfdsf", "fddsds"],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("second factor totp", async function (assert) {
|
||||||
|
await visit("/u/eviltrout/preferences/second-factor");
|
||||||
|
|
||||||
|
assert.ok(exists("#password"), "it has a password input");
|
||||||
|
|
||||||
|
await fillIn("#password", "secrets");
|
||||||
|
await click(".user-preferences .btn-primary");
|
||||||
|
assert.notOk(exists("#password"), "it hides the password input");
|
||||||
|
|
||||||
|
await click(".new-totp");
|
||||||
|
assert.ok(exists(".qr-code img"), "shows qr code image");
|
||||||
|
|
||||||
|
await click(".add-totp");
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".alert-error").innerHTML.includes("provide a name and the code"),
|
||||||
|
"shows name/token missing error message"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("second factor security keys", async function (assert) {
|
||||||
|
await visit("/u/eviltrout/preferences/second-factor");
|
||||||
|
|
||||||
|
assert.ok(exists("#password"), "it has a password input");
|
||||||
|
|
||||||
|
await fillIn("#password", "secrets");
|
||||||
|
await click(".user-preferences .btn-primary");
|
||||||
|
assert.notOk(exists("#password"), "it hides the password input");
|
||||||
|
|
||||||
|
await click(".new-security-key");
|
||||||
|
assert.ok(exists("#security-key-name"), "shows security key name input");
|
||||||
|
|
||||||
|
await fillIn("#security-key-name", "");
|
||||||
|
|
||||||
|
// The following tests can only run when Webauthn is enabled. This is not
|
||||||
|
// always the case, for example on a browser running on a non-standard port
|
||||||
|
if (typeof PublicKeyCredential !== "undefined") {
|
||||||
|
await click(".add-security-key");
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".alert-error").innerHTML.includes("provide a name"),
|
||||||
|
"shows name missing error message"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user