UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

98 lines (79 loc) 3.23 kB
import { Alepha } from "alepha"; import { FileSystemProvider, MemoryFileSystemProvider } from "alepha/system"; import { describe, expect, it } from "vitest"; import { EnvUtils } from "../helpers/EnvUtils.ts"; describe("EnvUtils", () => { describe("parseEnv", () => { it("should strip double quotes from values", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile("/project/.env", 'FOO="bar"\n'); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.FOO).toBe("bar"); }); it("should strip single quotes from values", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile("/project/.env", "FOO='bar'\n"); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.FOO).toBe("bar"); }); it("should preserve values without quotes", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile("/project/.env", "FOO=bar\n"); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.FOO).toBe("bar"); }); it("should preserve values with equals signs in quoted strings", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile( "/project/.env", 'DATABASE_URL="postgres://user:pass@host/db?sslmode=require"\n', ); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.DATABASE_URL).toBe( "postgres://user:pass@host/db?sslmode=require", ); }); it("should not strip mismatched quotes", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile("/project/.env", "FOO=\"bar'\n"); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.FOO).toBe("\"bar'"); }); it("should not strip quotes from single-character values", async () => { const alepha = Alepha.create().with({ provide: FileSystemProvider, use: MemoryFileSystemProvider, }); const fs = alepha.inject(MemoryFileSystemProvider); await fs.writeFile("/project/.env", 'FOO="\n'); const envUtils = alepha.inject(EnvUtils); const result = await envUtils.parseEnv("/project"); expect(result.FOO).toBe('"'); }); }); });