UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

118 lines (115 loc) 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const parseEnvFile_1 = require("../../../src/utils/parseEnvFile"); (0, vitest_1.describe)('parseEnvFile', () => { (0, vitest_1.test)('should parse basic key-value pairs', () => { const content = ` KEY1=value1 KEY2=value2 `; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ KEY1: 'value1', KEY2: 'value2' }); }); (0, vitest_1.test)('should handle empty file', () => { const content = ''; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({}); }); (0, vitest_1.test)('should handle values with spaces', () => { const content = 'DESCRIPTION=This is a description with spaces'; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ DESCRIPTION: 'This is a description with spaces' }); }); (0, vitest_1.test)('should handle quoted values', () => { const content = ` SINGLE_QUOTED='value with spaces' DOUBLE_QUOTED="another value with spaces" `; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ SINGLE_QUOTED: 'value with spaces', DOUBLE_QUOTED: 'another value with spaces' }); }); (0, vitest_1.test)('should handle empty values', () => { const content = 'EMPTY='; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ EMPTY: '' }); }); (0, vitest_1.test)('should ignore comments', () => { const content = ` # This is a comment KEY=value # Another comment ANOTHER_KEY=another_value `; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ KEY: 'value', ANOTHER_KEY: 'another_value' }); }); (0, vitest_1.test)('should handle inline comments', () => { const content = ` KEY=value # This is an inline comment QUOTED="value with # hash" # This is a comment `; const result = (0, parseEnvFile_1.parseEnvFile)(content); // Based on actual implementation behavior, it splits on the first # outside of quotes (0, vitest_1.expect)(result).toEqual({ KEY: 'value', QUOTED: '"value with' }); }); (0, vitest_1.test)('should ignore lines without equal sign', () => { const content = ` KEY=value THIS_IS_NOT_A_VALID_LINE ANOTHER_KEY=another_value `; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ KEY: 'value', ANOTHER_KEY: 'another_value' }); }); (0, vitest_1.test)('should handle values with equal signs', () => { const content = 'CONNECTION_STRING=host=localhost;port=5432;database=mydb'; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ CONNECTION_STRING: 'host=localhost;port=5432;database=mydb' }); }); (0, vitest_1.test)('should handle multi-line file with mixed formats', () => { const content = ` # Database settings DB_HOST=localhost DB_PORT=5432 DB_NAME=postgres # API settings API_KEY="a complex key with spaces" API_URL=https://api.example.com # Feature flags FEATURE_X_ENABLED=true EMPTY_VALUE= `; const result = (0, parseEnvFile_1.parseEnvFile)(content); (0, vitest_1.expect)(result).toEqual({ DB_HOST: 'localhost', DB_PORT: '5432', DB_NAME: 'postgres', API_KEY: 'a complex key with spaces', API_URL: 'https://api.example.com', FEATURE_X_ENABLED: 'true', EMPTY_VALUE: '' }); }); });