39 lines
2.1 KiB
TypeScript
39 lines
2.1 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import { fileURLToPath } from "node:url";
|
|
import path from "node:path";
|
|
|
|
const source = readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), "appConfiguration.db.server.ts"), "utf8");
|
|
|
|
describe("appConfiguration web config adoption", () => {
|
|
test("uses loadRequiredWebConfig instead of direct web env reads for public config fields", () => {
|
|
expect(source).toContain('import { loadRequiredWebConfig } from "@hivegrid/config"');
|
|
expect(source).toContain("const webConfig = loadRequiredWebConfig()");
|
|
expect(source).toContain("instanceUrl: webConfig.captcha.instanceUrl ?? \"\"");
|
|
expect(source).toContain("const authProviders = getPublicAuthProviders({ request, webConfig })");
|
|
expect(source).toContain("enabled: authProviders.magicLink.enabled");
|
|
expect(source).not.toContain("authProviders.github");
|
|
expect(source).not.toContain('new URL("https://github.com/login/oauth/authorize")');
|
|
expect(source).not.toContain("loadWebConfig().config");
|
|
expect(source).not.toContain("process.env.AUTH_RECAPTCHA_SITE_KEY");
|
|
expect(source).not.toContain("process?.env.GITHUB_OAUTH_CLIENT_ID");
|
|
});
|
|
|
|
test("does not keep removed Forms or Surveys as feature flags", () => {
|
|
expect(source).not.toContain("surveys:");
|
|
});
|
|
|
|
test("defaults optional analytics tracking to disabled", () => {
|
|
expect(source).toContain("analytics: {\n enabled: false,");
|
|
expect(source).toContain("simpleAnalytics: false");
|
|
expect(source).toContain("ipLookup: false");
|
|
});
|
|
|
|
test("fails safe to email verification for a fresh deployment while preserving persisted overrides", () => {
|
|
expect(source).toContain("auth: {\n // A deployment without a persisted AppConfiguration");
|
|
expect(source).toContain("requireEmailVerification: true");
|
|
expect(source).toContain("conf.auth.requireEmailVerification = appConfiguration?.authRequireEmailVerification");
|
|
expect(source).toContain("authRequireEmailVerification: conf.auth.requireEmailVerification");
|
|
});
|
|
});
|