Files
Jyotisha/frontend/tests/admin-operation-reauth-removal.test.ts
T
Jesse_Chen 945d61fa1c
Independent Staging Quality Gate / validate (push) Failing after 12m38s
Independent Staging Quality Gate / publish (push) Has been skipped
fix(admin): remove redundant confirmations and repair code access
2026-08-16 17:55:15 +08:00

71 lines
3.0 KiB
TypeScript

import assert from "node:assert/strict";
import { existsSync, readFileSync, readdirSync } from "node:fs";
import { extname, join } from "node:path";
import test from "node:test";
const root = new URL("../", import.meta.url);
function source(path: string) {
return readFileSync(new URL(path, root), "utf8");
}
function sourceFiles(path: string): string[] {
const directory = new URL(path, root);
return readdirSync(directory, { withFileTypes: true }).flatMap((entry) => {
const child = join(directory.pathname, entry.name);
if (entry.isDirectory()) {
return sourceFiles(`${path}/${entry.name}`);
}
return [".ts", ".tsx"].includes(extname(entry.name)) ? [child] : [];
});
}
test("operation-level admin email reauthentication is removed from routes and UI", () => {
assert.equal(existsSync(new URL("src/app/api/admin/reauth/route.ts", root)), false);
const adminSources = [
...sourceFiles("src/app/api/admin"),
...sourceFiles("src/components/admin"),
...sourceFiles("src/lib/admin"),
];
for (const file of adminSources) {
const contents = readFileSync(file, "utf8");
assert.doesNotMatch(
contents,
/requireHighRiskAdminMutation|reauthPermission|\/api\/admin\/reauth|HIGH_RISK_ADMIN|issueHighRisk|verifyHighRisk/,
file,
);
}
});
test("admin mutations retain session, permission, trusted-origin, server audit, request-id, and audit boundaries", () => {
const http = source("src/lib/admin/http.ts");
const codesRoute = source("src/app/api/admin/codes/route.ts");
const codesHelper = source("src/lib/admin/codes.ts");
const codesUi = source("src/components/admin/codes-resource.tsx");
assert.equal(existsSync(new URL("src/components/admin/confirm-action-modal.tsx", root)), false);
assert.match(http, /requirePermission\(permission, request\.headers\)/);
assert.match(http, /isTrustedAdminMutationRequest\(request, process\.env\.ADMIN_USER_ORIGIN\)/);
assert.match(codesRoute, /requireAdminMutation\([\s\S]*"admin\.access"/);
assert.doesNotMatch(codesRoute, /reason:\s*z\.string/);
assert.match(codesRoute, /p_reason:\s*"admin_console_create_redemption_codes"/);
assert.match(codesHelper, /JSON\.stringify\(input\.p_codes\)/);
assert.match(codesRoute, /requestId\(request\)/);
assert.match(codesRoute, /admin_create_redemption_codes/);
assert.match(codesUi, /permissions\.includes\("admin\.access"\)/);
assert.match(codesUi, /onFinish=\{\(values\) => void submitCreate\(values\)\}/);
assert.doesNotMatch(codesUi, /ConfirmActionModal|pendingCreate|pendingEdit|revokeRecord/);
});
test("account-level TOTP MFA and customer login email OTP remain available", () => {
const mfaRoute = source("src/app/api/admin/mfa/route.ts");
const mfaUi = source("src/components/admin/mfa-security.tsx");
const loginUi = source("src/components/email-otp-login.tsx");
assert.match(mfaRoute, /verifyTOTP|verifyBackupCode/);
assert.match(mfaUi, /认证器验证码/);
assert.match(loginUi, /邮箱验证码登录/);
assert.match(loginUi, /验证并登录/);
});