Open History to see the last commit
1// @effect-diagnostics nodeBuiltinImport:off - Tests exercise root env file precedence directly.
2import * as NodeFS from "node:fs";
3import * as NodeOS from "node:os";
4import * as NodePath from "node:path";
5import { afterEach, describe, expect, it } from "vite-plus/test";
6
7import { loadRepoEnv } from "./public-config.ts";
8
9const temporaryDirectories: string[] = [];
10
11afterEach(() => {
12 for (const directory of temporaryDirectories.splice(0)) {
13 NodeFS.rmSync(directory, { recursive: true, force: true });
14 }
15});
16
17describe("loadRepoEnv", () => {
18 it("applies process, root local, and root precedence in that order", () => {
19 const repoRoot = makeTemporaryDirectory();
20 NodeFS.writeFileSync(
21 NodePath.join(repoRoot, ".env"),
22 "T3CODE_CLERK_PUBLISHABLE_KEY=pk_root\nT3CODE_CLERK_JWT_TEMPLATE=template_root\nT3CODE_CLERK_CLI_OAUTH_CLIENT_ID=oauth_root\nT3CODE_RELAY_URL=https://root.example.test\n",
23 );
24 NodeFS.writeFileSync(
25 NodePath.join(repoRoot, ".env.local"),
26 "T3CODE_CLERK_PUBLISHABLE_KEY=pk_local\nT3CODE_CLERK_JWT_TEMPLATE=template_local\nT3CODE_CLERK_CLI_OAUTH_CLIENT_ID=oauth_local\nT3CODE_RELAY_URL=https://local.example.test\n",
27 );
28
29 expect(loadRepoEnv({ baseEnv: {}, repoRoot }).T3CODE_RELAY_URL).toBe(
30 "https://local.example.test",
31 );
32 expect(
33 loadRepoEnv({
34 baseEnv: {
35 T3CODE_CLERK_PUBLISHABLE_KEY: "pk_ci",
36 T3CODE_CLERK_JWT_TEMPLATE: "template_ci",
37 T3CODE_CLERK_CLI_OAUTH_CLIENT_ID: "oauth_ci",
38 T3CODE_RELAY_URL: "https://ci.example.test",
39 },
40 repoRoot,
41 }),
42 ).toMatchObject({
43 T3CODE_CLERK_PUBLISHABLE_KEY: "pk_ci",
44 T3CODE_CLERK_CLI_OAUTH_CLIENT_ID: "oauth_ci",
45 VITE_CLERK_PUBLISHABLE_KEY: "pk_ci",
46 EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY: "pk_ci",
47 T3CODE_CLERK_JWT_TEMPLATE: "template_ci",
48 VITE_CLERK_JWT_TEMPLATE: "template_ci",
49 EXPO_PUBLIC_CLERK_JWT_TEMPLATE: "template_ci",
50 T3CODE_RELAY_URL: "https://ci.example.test",
51 VITE_T3CODE_RELAY_URL: "https://ci.example.test",
52 });
53 });
54});
55
56function makeTemporaryDirectory() {
57 const directory = NodeFS.mkdtempSync(NodePath.join(NodeOS.tmpdir(), "t3code-public-config-"));
58 temporaryDirectories.push(directory);
59 return directory;
60}