Files
authentik/web/test/unit/authenticator-validate-challenge-selection.test.ts
Teffen Ellis 1db6c3af8b web: Fix Vendored Lex package. Add Unit Tests (#22083)
* Fix API reference paths.

* Clean up vendored code.

* Flesh out test.

* Fix edgecase.

* Clean up return value.

* Fix linter.
2026-05-06 14:31:17 +00:00

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);
});
});