mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-30 21:01:54 +08:00
44 lines
2.1 KiB
TypeScript
44 lines
2.1 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { getEnvVariable, getProcessEnv, resolveHexclaveStackEnvVarValue } from "./env";
|
|
|
|
afterEach(() => {
|
|
vi.unstubAllEnvs();
|
|
});
|
|
|
|
describe("Hexclave/Stack env var dual-read", () => {
|
|
it("falls back to the legacy Stack name when the Hexclave value is empty", () => {
|
|
vi.stubEnv("NEXT_PUBLIC_HEXCLAVE_API_URL", "");
|
|
vi.stubEnv("NEXT_PUBLIC_STACK_API_URL", "https://stack.example.test");
|
|
|
|
expect(getEnvVariable("NEXT_PUBLIC_STACK_API_URL")).toBe("https://stack.example.test");
|
|
expect(getProcessEnv("NEXT_PUBLIC_STACK_API_URL")).toBe("https://stack.example.test");
|
|
});
|
|
|
|
it("allows both names when they have the same non-empty value", () => {
|
|
vi.stubEnv("NEXT_PUBLIC_HEXCLAVE_API_URL", "https://api.example.test");
|
|
vi.stubEnv("NEXT_PUBLIC_STACK_API_URL", "https://api.example.test");
|
|
|
|
expect(getEnvVariable("NEXT_PUBLIC_STACK_API_URL")).toBe("https://api.example.test");
|
|
expect(getProcessEnv("NEXT_PUBLIC_STACK_API_URL")).toBe("https://api.example.test");
|
|
});
|
|
|
|
it("throws when both names are non-empty and different", () => {
|
|
vi.stubEnv("NEXT_PUBLIC_HEXCLAVE_API_URL", "https://hexclave.example.test");
|
|
vi.stubEnv("NEXT_PUBLIC_STACK_API_URL", "https://stack.example.test");
|
|
|
|
expect(() => getEnvVariable("NEXT_PUBLIC_STACK_API_URL")).toThrow(/NEXT_PUBLIC_HEXCLAVE_API_URL.*NEXT_PUBLIC_STACK_API_URL.*different values/);
|
|
expect(() => getProcessEnv("NEXT_PUBLIC_STACK_API_URL")).toThrow(/NEXT_PUBLIC_HEXCLAVE_API_URL.*NEXT_PUBLIC_STACK_API_URL.*different values/);
|
|
});
|
|
|
|
it("checks renamed legacy aliases when falling back", () => {
|
|
vi.stubEnv("NEXT_PUBLIC_HEXCLAVE_URL", "https://hexclave-url.example.test");
|
|
vi.stubEnv("NEXT_PUBLIC_STACK_URL", "https://stack-url.example.test");
|
|
|
|
expect(() => getEnvVariable("NEXT_PUBLIC_STACK_API_URL")).toThrow(/NEXT_PUBLIC_HEXCLAVE_URL.*NEXT_PUBLIC_STACK_URL.*different values/);
|
|
});
|
|
|
|
it("returns undefined when both names are empty", () => {
|
|
expect(resolveHexclaveStackEnvVarValue("HEXCLAVE_FOO", "STACK_FOO", "", "")).toBeUndefined();
|
|
});
|
|
});
|