|
| 1 | +import { resolveEnvVariables } from "../resolve-env-variables"; |
| 2 | + |
| 3 | +describe("resolveEnvVariables", () => { |
| 4 | + it("returns empty string unchanged", () => { |
| 5 | + expect(resolveEnvVariables("")).toBe(""); |
| 6 | + }); |
| 7 | + |
| 8 | + it("returns string without placeholders unchanged", () => { |
| 9 | + expect(resolveEnvVariables("jdillon")).toBe("jdillon"); |
| 10 | + }); |
| 11 | + |
| 12 | + it("expands a single ${env:VAR} placeholder", () => { |
| 13 | + process.env.TEST_BEADS_USER = "alice"; |
| 14 | + expect(resolveEnvVariables("${env:TEST_BEADS_USER}")).toBe("alice"); |
| 15 | + delete process.env.TEST_BEADS_USER; |
| 16 | + }); |
| 17 | + |
| 18 | + it("expands multiple placeholders", () => { |
| 19 | + process.env.TEST_FIRST = "hello"; |
| 20 | + process.env.TEST_SECOND = "world"; |
| 21 | + expect(resolveEnvVariables("${env:TEST_FIRST}-${env:TEST_SECOND}")).toBe("hello-world"); |
| 22 | + delete process.env.TEST_FIRST; |
| 23 | + delete process.env.TEST_SECOND; |
| 24 | + }); |
| 25 | + |
| 26 | + it("replaces missing env var with empty string", () => { |
| 27 | + delete process.env.TEST_NONEXISTENT_VAR; |
| 28 | + expect(resolveEnvVariables("${env:TEST_NONEXISTENT_VAR}")).toBe(""); |
| 29 | + }); |
| 30 | + |
| 31 | + it("preserves surrounding text around placeholder", () => { |
| 32 | + process.env.TEST_NAME = "bob"; |
| 33 | + expect(resolveEnvVariables("user-${env:TEST_NAME}-admin")).toBe("user-bob-admin"); |
| 34 | + delete process.env.TEST_NAME; |
| 35 | + }); |
| 36 | + |
| 37 | + it("does not expand ${VAR} without env: prefix", () => { |
| 38 | + process.env.TEST_RAW = "raw"; |
| 39 | + expect(resolveEnvVariables("${TEST_RAW}")).toBe("${TEST_RAW}"); |
| 40 | + delete process.env.TEST_RAW; |
| 41 | + }); |
| 42 | + |
| 43 | + it("does not expand malformed patterns", () => { |
| 44 | + expect(resolveEnvVariables("${env:}")).toBe("${env:}"); |
| 45 | + expect(resolveEnvVariables("${env:UNCLOSED")).toBe("${env:UNCLOSED"); |
| 46 | + }); |
| 47 | +}); |
0 commit comments