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 "@toolctrl/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"); }); });