34 lines
1.7 KiB
TypeScript
34 lines
1.7 KiB
TypeScript
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(panelSource).toContain("window.location.assign(safeBrowserNext(result.redirectTo, next))");
|
|
expect(panelSource).not.toContain("window.location.assign(result.redirectTo");
|
|
expect(loginPageSource).not.toContain("/auth/admin-login");
|
|
expect(adminPageSource).toContain("/auth/login");
|
|
});
|
|
});
|