mirror of
https://github.com/kennethnym/aris.git
synced 2026-06-15 20:11:18 +01:00
99 lines
3.4 KiB
TypeScript
99 lines
3.4 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
|
|
import { ensureEnv } from "./env.ts"
|
|
|
|
describe("ensureEnv", () => {
|
|
test("returns trimmed required env values", () => {
|
|
const env = ensureEnv({
|
|
BETTER_AUTH_SECRET: " auth-secret ",
|
|
CREDENTIAL_ENCRYPTION_KEY: " credential-key ",
|
|
DATABASE_URL: " postgres://example ",
|
|
EXA_API_KEY: " exa-key ",
|
|
GOOGLE_MAPS_API_KEY: " google-maps-key ",
|
|
OPENROUTER_API_KEY: " openrouter-key ",
|
|
OPENROUTER_MODEL: " model-name ",
|
|
TFL_API_KEY: " tfl-key ",
|
|
WEATHERKIT_KEY_ID: " weather-key-id ",
|
|
WEATHERKIT_PRIVATE_KEY: " weather-private-key ",
|
|
WEATHERKIT_SERVICE_ID: " weather-service-id ",
|
|
WEATHERKIT_TEAM_ID: " weather-team-id ",
|
|
})
|
|
|
|
expect(env).toEqual({
|
|
betterAuthSecret: "auth-secret",
|
|
credentialEncryptionKey: "credential-key",
|
|
databaseUrl: "postgres://example",
|
|
exaApiKey: "exa-key",
|
|
googleMapsApiKey: "google-maps-key",
|
|
openrouterApiKey: "openrouter-key",
|
|
openrouterModel: "model-name",
|
|
tflApiKey: "tfl-key",
|
|
weatherkitKeyId: "weather-key-id",
|
|
weatherkitPrivateKey: "weather-private-key",
|
|
weatherkitServiceId: "weather-service-id",
|
|
weatherkitTeamId: "weather-team-id",
|
|
})
|
|
})
|
|
|
|
test("does not allow the old Google Maps MCP fallback key", () => {
|
|
expect(() =>
|
|
ensureEnv({
|
|
BETTER_AUTH_SECRET: "auth-secret",
|
|
CREDENTIAL_ENCRYPTION_KEY: "credential-key",
|
|
DATABASE_URL: "postgres://example",
|
|
EXA_API_KEY: "exa-key",
|
|
GOOGLE_MAPS_MCP_API_KEY: "google-maps-mcp-key",
|
|
OPENROUTER_API_KEY: "openrouter-key",
|
|
TFL_API_KEY: "tfl-key",
|
|
WEATHERKIT_KEY_ID: "weather-key-id",
|
|
WEATHERKIT_PRIVATE_KEY: "weather-private-key",
|
|
WEATHERKIT_SERVICE_ID: "weather-service-id",
|
|
WEATHERKIT_TEAM_ID: "weather-team-id",
|
|
}),
|
|
).toThrow("Missing required environment variables: GOOGLE_MAPS_API_KEY")
|
|
})
|
|
|
|
test("allows openrouter model to be omitted", () => {
|
|
const env = ensureEnv({
|
|
BETTER_AUTH_SECRET: "auth-secret",
|
|
CREDENTIAL_ENCRYPTION_KEY: "credential-key",
|
|
DATABASE_URL: "postgres://example",
|
|
EXA_API_KEY: "exa-key",
|
|
GOOGLE_MAPS_API_KEY: "google-maps-key",
|
|
OPENROUTER_API_KEY: "openrouter-key",
|
|
TFL_API_KEY: "tfl-key",
|
|
WEATHERKIT_KEY_ID: "weather-key-id",
|
|
WEATHERKIT_PRIVATE_KEY: "weather-private-key",
|
|
WEATHERKIT_SERVICE_ID: "weather-service-id",
|
|
WEATHERKIT_TEAM_ID: "weather-team-id",
|
|
})
|
|
|
|
expect(env.googleMapsApiKey).toBe("google-maps-key")
|
|
expect(env.openrouterModel).toBeUndefined()
|
|
})
|
|
|
|
test("throws with all missing required env names", () => {
|
|
expect(() => ensureEnv({})).toThrow(
|
|
"Missing required environment variables: BETTER_AUTH_SECRET, CREDENTIAL_ENCRYPTION_KEY, DATABASE_URL, EXA_API_KEY, OPENROUTER_API_KEY, TFL_API_KEY, WEATHERKIT_PRIVATE_KEY, WEATHERKIT_KEY_ID, WEATHERKIT_TEAM_ID, WEATHERKIT_SERVICE_ID, GOOGLE_MAPS_API_KEY",
|
|
)
|
|
})
|
|
|
|
test("treats whitespace-only values as missing", () => {
|
|
expect(() =>
|
|
ensureEnv({
|
|
BETTER_AUTH_SECRET: "auth-secret",
|
|
CREDENTIAL_ENCRYPTION_KEY: "credential-key",
|
|
DATABASE_URL: "postgres://example",
|
|
EXA_API_KEY: " ",
|
|
GOOGLE_MAPS_API_KEY: "google-maps-key",
|
|
OPENROUTER_API_KEY: "openrouter-key",
|
|
TFL_API_KEY: "tfl-key",
|
|
WEATHERKIT_KEY_ID: "weather-key-id",
|
|
WEATHERKIT_PRIVATE_KEY: "weather-private-key",
|
|
WEATHERKIT_SERVICE_ID: "weather-service-id",
|
|
WEATHERKIT_TEAM_ID: "weather-team-id",
|
|
}),
|
|
).toThrow("Missing required environment variables: EXA_API_KEY")
|
|
})
|
|
})
|