UNPKG

@kilterset/auth0-actions-testing

Version:

Test and develop Auth0 Actions or Okta CIC Actions locally.

70 lines (61 loc) 1.63 kB
import { fail, ok } from "assert"; import Auth0 from "../types"; import { chance } from "./chance"; import { define } from "./define"; import { riskAssessment } from "./risk-assessment"; interface AuthenticationTransientParmas { numMethods?: number; } export const authentication = define< Auth0.Authentication, AuthenticationTransientParmas >(({ params, transientParams }) => { let methods = params.methods; if (!Array.isArray(methods)) { const numMethods = typeof transientParams.numMethods === "number" ? transientParams.numMethods : chance.integer({ min: 1, max: 2 }); methods = Array.from({ length: numMethods }, () => authenticationMethod()); } else if (typeof transientParams.numMethods === "number") { fail("Please specify only one of `methods` and `numMethods`"); } return { methods, riskAssessment: riskAssessment(), }; }); export const authenticationMethod = define<Auth0.AuthenticationMethod>( ({ params }) => { const name = params.name || chance.pickone([ "federated", "pwd", "passkey", "sms", "email", "phone_number", "mfa", ]); const extra = name === "mfa" ? { type: chance.pickone([ "email", "otp", "push-notification", "recovery-code", "phone", "webauthn-roaming", "webauthn-platform", ]), } : undefined; return { name, timestamp: chance.date().toISOString(), ...extra, }; } );