feat(admin): configure model providers from database
This commit is contained in:
@@ -69,16 +69,17 @@ test("MFA API keeps native Better Auth enrollment, recovery, rotation, and proof
|
||||
assert.match(migration, /grant select, insert, update, delete on table identity\.two_factors[\s\S]*identity_runtime/);
|
||||
});
|
||||
|
||||
test("high-risk UI performs MFA challenge before requesting permission-scoped email OTP", () => {
|
||||
test("high-risk UI uses permission-scoped email OTP without requiring MFA", () => {
|
||||
const modal = readFileSync(new URL("../src/components/admin/reason-action-modal.tsx", import.meta.url), "utf8");
|
||||
const reauth = readFileSync(new URL("../src/app/api/admin/reauth/route.ts", import.meta.url), "utf8");
|
||||
const http = readFileSync(new URL("../src/lib/admin/http.ts", import.meta.url), "utf8");
|
||||
|
||||
assert.match(modal, /adminSecurityRequest<MfaStatus>\("\/api\/admin\/mfa"\)/);
|
||||
assert.match(modal, /action: mfaFactor === "totp" \? "verify" : "recover"/);
|
||||
assert.match(modal, /if \(!reauthPermission \|\| !mfaReady\) return/);
|
||||
assert.match(modal, /action: "request"/);
|
||||
assert.match(modal, /\/admin\/security/);
|
||||
assert.match(reauth, /requireAdminMfaIfRequired\(request, session\)[\s\S]*getIdentityEmailOtpApi/);
|
||||
assert.match(http, /requireAdminMfaIfRequired\(request, session\)[\s\S]*verifyHighRiskAdminProof/);
|
||||
assert.match(modal, /action: "verify"/);
|
||||
assert.match(modal, /邮箱验证码/);
|
||||
assert.doesNotMatch(modal, /\/api\/admin\/mfa|\/admin\/security|MfaStatus|mfaFactor|mfaReady/);
|
||||
assert.match(reauth, /requireAdminMutation\(request, parsed\.data\.permission\)[\s\S]*getIdentityEmailOtpApi/);
|
||||
assert.doesNotMatch(reauth, /requireAdminMfaIfRequired/);
|
||||
assert.match(http, /requireAdminMutation\(request, permission\)[\s\S]*verifyHighRiskAdminProof/);
|
||||
assert.doesNotMatch(http, /requireAdminMfaIfRequired/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user