|
1 | | -import BuilderFactory, { BuildType } from '../../../src/subCommands/build'; |
| 1 | +import BuilderFactory, { BuildType, resolveEnvVariables } from '../../../src/subCommands/build'; |
2 | 2 | import { ImageBuiltKitBuilder } from '../../../src/subCommands/build/impl/imageBuiltKitBuilder'; |
3 | 3 | import { ImageDockerBuilder } from '../../../src/subCommands/build/impl/imageDockerBuilder'; |
4 | 4 | import { ImageKanikoBuilder } from '../../../src/subCommands/build/impl/imageKanikoBuilder'; |
@@ -302,4 +302,43 @@ describe('BuilderFactory', () => { |
302 | 302 | expect(builder2).toBe(mockBuilder2); |
303 | 303 | }); |
304 | 304 | }); |
| 305 | + |
| 306 | + describe('resolveEnvVariables', () => { |
| 307 | + it('should replace env variables with single quotes', () => { |
| 308 | + process.env.MY_VAR = 'hello'; |
| 309 | + const result = resolveEnvVariables("value: ${env('MY_VAR')}"); |
| 310 | + expect(result).toBe('value: hello'); |
| 311 | + delete process.env.MY_VAR; |
| 312 | + }); |
| 313 | + |
| 314 | + it('should replace env variables with double quotes', () => { |
| 315 | + process.env.MY_VAR = 'world'; |
| 316 | + const result = resolveEnvVariables('value: ${env("MY_VAR")}'); |
| 317 | + expect(result).toBe('value: world'); |
| 318 | + delete process.env.MY_VAR; |
| 319 | + }); |
| 320 | + |
| 321 | + it('should replace multiple env variables', () => { |
| 322 | + process.env.USERNAME = 'admin'; |
| 323 | + process.env.PASSWORD = 'secret'; |
| 324 | + const result = resolveEnvVariables( |
| 325 | + "username: ${env('USERNAME')}\npassword: ${env('PASSWORD')}", |
| 326 | + ); |
| 327 | + expect(result).toBe('username: admin\npassword: secret'); |
| 328 | + delete process.env.USERNAME; |
| 329 | + delete process.env.PASSWORD; |
| 330 | + }); |
| 331 | + |
| 332 | + it('should throw error when env variable is not found', () => { |
| 333 | + delete process.env.NOT_EXIST; |
| 334 | + expect(() => resolveEnvVariables("value: ${env('NOT_EXIST')}")).toThrow( |
| 335 | + 'Environment variable not found: NOT_EXIST', |
| 336 | + ); |
| 337 | + }); |
| 338 | + |
| 339 | + it('should not modify content without env variables', () => { |
| 340 | + const content = 'region: cn-hangzhou\nruntime: nodejs18'; |
| 341 | + expect(resolveEnvVariables(content)).toBe(content); |
| 342 | + }); |
| 343 | + }); |
305 | 344 | }); |
0 commit comments