mirror of
https://github.com/goauthentik/authentik
synced 2026-04-26 01:25:02 +02:00
* fix(web): reset stale MFA challenge selection across stages * Surface API errors in plucked details. * Clean up error messages, lifecycle, cancel states. * Address review feedback on base host property and tag resolver Fix lint and typing for authenticator component resolver Format authenticator resolver signature chore: trigger CI rerun after transient npm network failure * Tidy return value. --------- Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import { shouldResetSelectedChallenge } from "#flow/stages/authenticator_validate/challenge-selection";
|
|
|
|
import { type DeviceChallenge, DeviceClassesEnum } from "@goauthentik/api";
|
|
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
const makeDeviceChallenge = (
|
|
deviceClass: DeviceClassesEnum,
|
|
deviceUid: string,
|
|
): DeviceChallenge => ({
|
|
deviceClass,
|
|
deviceUid,
|
|
challenge: {},
|
|
lastUsed: null,
|
|
});
|
|
|
|
describe("shouldResetSelectedChallenge", () => {
|
|
it("returns true when the previously selected challenge is no longer allowed", () => {
|
|
const selected = makeDeviceChallenge(DeviceClassesEnum.Email, "email-1");
|
|
const allowed = [
|
|
makeDeviceChallenge(DeviceClassesEnum.Totp, "totp-1"),
|
|
makeDeviceChallenge(DeviceClassesEnum.Webauthn, "webauthn-1"),
|
|
];
|
|
|
|
expect(shouldResetSelectedChallenge(selected, allowed)).toBe(true);
|
|
});
|
|
|
|
it("returns false when the previously selected challenge is still allowed", () => {
|
|
const selected = makeDeviceChallenge(DeviceClassesEnum.Email, "email-1");
|
|
const allowed = [
|
|
makeDeviceChallenge(DeviceClassesEnum.Email, "email-1"),
|
|
makeDeviceChallenge(DeviceClassesEnum.Sms, "sms-1"),
|
|
];
|
|
|
|
expect(shouldResetSelectedChallenge(selected, allowed)).toBe(false);
|
|
});
|
|
|
|
it("returns false when there was no selected challenge", () => {
|
|
const allowed = [makeDeviceChallenge(DeviceClassesEnum.Email, "email-1")];
|
|
|
|
expect(shouldResetSelectedChallenge(null, allowed)).toBe(false);
|
|
});
|
|
});
|