mirror of
https://github.com/goauthentik/authentik
synced 2026-05-14 19:06:39 +02:00
* Fix API reference paths. * Clean up vendored code. * Flesh out test. * Fix edgecase. * Clean up return value. * Fix linter.
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);
|
|
});
|
|
});
|