import { readFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; describe("AuthLoginPanel", () => { it("does not render captcha controls", async () => { const source = await readFile(join(process.cwd(), "components", "auth-login-panel.tsx"), "utf8"); expect(source).not.toContain("auth-captcha-row"); expect(source).not.toContain("auth-captcha-button"); expect(source).not.toContain("/api/auth/captcha"); expect(source).not.toContain("randomStr"); }); it("uses one platform phone/password login for every role", async () => { const panelSource = await readFile(join(process.cwd(), "components", "auth-login-panel.tsx"), "utf8"); const loginPageSource = await readFile(join(process.cwd(), "app", "auth", "login", "page.tsx"), "utf8"); const adminPageSource = await readFile(join(process.cwd(), "app", "auth", "admin-login", "page.tsx"), "utf8").catch(() => ""); expect(panelSource).toContain('phone: submittedPhone'); expect(panelSource).toContain('inputMode="tel"'); expect(panelSource).toContain('name="phone"'); expect(panelSource).toContain('name="password"'); expect(panelSource).toContain('new FormData(event.currentTarget)'); expect(panelSource).not.toContain('disabled={!configured || submitting || !phone.trim() || !password}'); expect(panelSource).not.toContain("authMode"); expect(panelSource).not.toContain("alternateHref"); expect(loginPageSource).not.toContain("/auth/admin-login"); expect(adminPageSource).toContain("/auth/login"); }); });