@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
118 lines (115 loc) • 4.17 kB
JavaScript
"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: ''
});
});
});