File size: 4,983 Bytes
f0743f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | import { extractEnvVariable } from '../src/utils';
describe('Environment Variable Extraction', () => {
const originalEnv = process.env;
beforeEach(() => {
process.env = {
...originalEnv,
TEST_API_KEY: 'test-api-key-value',
ANOTHER_SECRET: 'another-secret-value',
};
});
afterEach(() => {
process.env = originalEnv;
});
describe('extractEnvVariable (original tests)', () => {
test('should return the value of the environment variable', () => {
process.env.TEST_VAR = 'test_value';
expect(extractEnvVariable('${TEST_VAR}')).toBe('test_value');
});
test('should return the original string if the envrionment variable is not defined correctly', () => {
process.env.TEST_VAR = 'test_value';
expect(extractEnvVariable('${ TEST_VAR }')).toBe('${ TEST_VAR }');
});
test('should return the original string if environment variable is not set', () => {
expect(extractEnvVariable('${NON_EXISTENT_VAR}')).toBe('${NON_EXISTENT_VAR}');
});
test('should return the original string if it does not contain an environment variable', () => {
expect(extractEnvVariable('some_string')).toBe('some_string');
});
test('should handle empty strings', () => {
expect(extractEnvVariable('')).toBe('');
});
test('should handle strings without variable format', () => {
expect(extractEnvVariable('no_var_here')).toBe('no_var_here');
});
/** No longer the expected behavior; keeping for reference */
test.skip('should not process multiple variable formats', () => {
process.env.FIRST_VAR = 'first';
process.env.SECOND_VAR = 'second';
expect(extractEnvVariable('${FIRST_VAR} and ${SECOND_VAR}')).toBe(
'${FIRST_VAR} and ${SECOND_VAR}',
);
});
});
describe('extractEnvVariable function', () => {
it('should extract environment variables from exact matches', () => {
expect(extractEnvVariable('${TEST_API_KEY}')).toBe('test-api-key-value');
expect(extractEnvVariable('${ANOTHER_SECRET}')).toBe('another-secret-value');
});
it('should extract environment variables from strings with prefixes', () => {
expect(extractEnvVariable('prefix-${TEST_API_KEY}')).toBe('prefix-test-api-key-value');
});
it('should extract environment variables from strings with suffixes', () => {
expect(extractEnvVariable('${TEST_API_KEY}-suffix')).toBe('test-api-key-value-suffix');
});
it('should extract environment variables from strings with both prefixes and suffixes', () => {
expect(extractEnvVariable('prefix-${TEST_API_KEY}-suffix')).toBe(
'prefix-test-api-key-value-suffix',
);
});
it('should not match invalid patterns', () => {
expect(extractEnvVariable('$TEST_API_KEY')).toBe('$TEST_API_KEY');
expect(extractEnvVariable('{TEST_API_KEY}')).toBe('{TEST_API_KEY}');
expect(extractEnvVariable('TEST_API_KEY')).toBe('TEST_API_KEY');
});
});
describe('extractEnvVariable', () => {
it('should extract environment variable values', () => {
expect(extractEnvVariable('${TEST_API_KEY}')).toBe('test-api-key-value');
expect(extractEnvVariable('${ANOTHER_SECRET}')).toBe('another-secret-value');
});
it('should return the original string if environment variable is not found', () => {
expect(extractEnvVariable('${NON_EXISTENT_VAR}')).toBe('${NON_EXISTENT_VAR}');
});
it('should return the original string if no environment variable pattern is found', () => {
expect(extractEnvVariable('plain-string')).toBe('plain-string');
});
});
describe('extractEnvVariable space trimming', () => {
beforeEach(() => {
process.env.HELLO = 'world';
process.env.USER = 'testuser';
});
it('should extract the value when string contains only an environment variable with surrounding whitespace', () => {
expect(extractEnvVariable(' ${HELLO} ')).toBe('world');
expect(extractEnvVariable(' ${HELLO} ')).toBe('world');
expect(extractEnvVariable('\t${HELLO}\n')).toBe('world');
});
it('should preserve content when variable is part of a larger string', () => {
expect(extractEnvVariable('Hello ${USER}!')).toBe('Hello testuser!');
expect(extractEnvVariable(' Hello ${USER}! ')).toBe('Hello testuser!');
});
it('should not handle multiple variables', () => {
expect(extractEnvVariable('${HELLO} ${USER}')).toBe('${HELLO} ${USER}');
expect(extractEnvVariable(' ${HELLO} ${USER} ')).toBe('${HELLO} ${USER}');
});
it('should handle undefined variables', () => {
expect(extractEnvVariable(' ${UNDEFINED_VAR} ')).toBe('${UNDEFINED_VAR}');
});
it('should handle mixed content correctly', () => {
expect(extractEnvVariable('Welcome, ${USER}!\nYour message: ${HELLO}')).toBe(
'Welcome, testuser!\nYour message: world',
);
});
});
});
|