feat(auth) : protect admin login with turnstile
CI / Verify (push) Successful in 1m19s
CI / Build immutable images and deploy (push) Successful in 2m47s

This commit is contained in:
2026-09-10 21:39:07 +07:00 Unverified
parent 249af29e9b
commit e860425e08
5 changed files with 127 additions and 6 deletions
+21
View File
@@ -33,4 +33,25 @@ describe("administrative security boundaries", () => {
source.lastIndexOf("getAdminSession"),
);
});
it("enforces Cloudflare Turnstile on email sign-in", async () => {
const source = await readFile(
new URL("../lib/auth/server.ts", import.meta.url),
"utf8",
);
expect(source).toContain('provider: "cloudflare-turnstile"');
expect(source).toContain('secretKey: required("TURNSTILE_SECRET_KEY")');
expect(source).toContain('endpoints: ["/sign-in/email"]');
});
it("requires a Turnstile token before submitting administrator login", async () => {
const source = await readFile(
new URL("../components/admin/login-card.tsx", import.meta.url),
"utf8",
);
expect(source).toContain('headers: { "x-captcha-response": turnstileToken }');
expect(source).toContain("disabled={loading || !turnstileToken}");
expect(source).toContain('"expired-callback": () => setTurnstileToken(null)');
expect(source).toContain("resetTurnstile();");
});
});