33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { resolveCaptchaConfig, getSitekey, isCaptchaConfigured } from "./config.js";
|
|
|
|
describe("resolveCaptchaConfig", () => {
|
|
it("maps env vars to config", () => {
|
|
const cfg = resolveCaptchaConfig({
|
|
MCAPTCHA_INSTANCE_URL: "https://captcha.tool-ctrl.de",
|
|
MCAPTCHA_ACCOUNT_SECRET: "secret",
|
|
MCAPTCHA_SITEKEY_LOGIN: "login-key",
|
|
MCAPTCHA_SITEKEY_FORMS: "forms-key",
|
|
MCAPTCHA_SITEKEY_BOOKING: "booking-key",
|
|
});
|
|
expect(cfg.provider).toBe("mcaptcha");
|
|
expect(cfg.instanceUrl).toBe("https://captcha.tool-ctrl.de");
|
|
expect(getSitekey(cfg, "login")).toBe("login-key");
|
|
expect(getSitekey(cfg, "booking")).toBe("booking-key");
|
|
expect(isCaptchaConfigured(cfg)).toBe(true);
|
|
});
|
|
|
|
it("defaults failOpen to true and respects explicit false", () => {
|
|
expect(resolveCaptchaConfig({}).failOpen).toBe(true);
|
|
expect(resolveCaptchaConfig({ CAPTCHA_FAIL_OPEN: "false" }).failOpen).toBe(false);
|
|
expect(resolveCaptchaConfig({ CAPTCHA_FAIL_OPEN: "true" }).failOpen).toBe(true);
|
|
});
|
|
|
|
it("treats blank env values as undefined and reports unconfigured", () => {
|
|
const cfg = resolveCaptchaConfig({ MCAPTCHA_INSTANCE_URL: " ", MCAPTCHA_ACCOUNT_SECRET: "" });
|
|
expect(cfg.instanceUrl).toBeUndefined();
|
|
expect(cfg.accountSecret).toBeUndefined();
|
|
expect(isCaptchaConfigured(cfg)).toBe(false);
|
|
});
|
|
});
|