From 9c8d921044d4668aeaac3339f6691de61a83f964 Mon Sep 17 00:00:00 2001 From: hordunlarmy Date: Thu, 29 Jan 2026 18:50:46 +0100 Subject: [PATCH] fix(env_manager): Enhance .env parsing for multi-line values, comments, and quotes --- .gitignore | 2 + changelogs/2026-01-29_18-43-51.md | 6 + changelogs/2026-01-29_18-44-07.md | 6 + changelogs/2026-01-29_18-50-28.md | 6 + coverage.xml | 312 +++++++++--------- src/env_manager.py | 44 ++- .../auto_dev/.envs/dev/.env.api | 2 +- .../auto_dev/.envs/dev/.env.app | 2 +- .../auto_dev/.envs/dev/.env.database | 2 +- .../auto_dev/.envs/dev/.env.elastic | 2 +- .../auto_dev/.envs/dev/.env.kafka | 2 +- .../auto_dev/.envs/dev/.env.minio | 2 +- .../auto_dev/.envs/dev/.env.redis | 2 +- .../generated_envs/auto_dev/.envs/dev/.env.s3 | 2 +- .../generated_envs/create_root_agg/.env | 2 +- .../create_root_agg/.envs/dev/.env.api | 2 +- .../create_root_agg/.envs/dev/.env.app | 2 +- .../create_root_agg/.envs/dev/.env.database | 2 +- .../create_root_agg/.envs/dev/.env.elastic | 2 +- .../create_root_agg/.envs/dev/.env.kafka | 2 +- .../create_root_agg/.envs/dev/.env.minio | 2 +- .../create_root_agg/.envs/dev/.env.redis | 2 +- .../create_root_agg/.envs/dev/.env.s3 | 2 +- .../generated_envs/custom_path_abs/.env.api | 2 +- .../generated_envs/custom_path_abs/.env.app | 2 +- .../custom_path_abs/.env.database | 2 +- .../custom_path_abs/.env.elastic | 2 +- .../generated_envs/custom_path_abs/.env.kafka | 2 +- .../generated_envs/custom_path_abs/.env.minio | 2 +- .../generated_envs/custom_path_abs/.env.redis | 2 +- .../generated_envs/custom_path_abs/.env.s3 | 2 +- .../custom_path_rel/my_configs/.env.api | 2 +- .../custom_path_rel/my_configs/.env.app | 2 +- .../custom_path_rel/my_configs/.env.database | 2 +- .../custom_path_rel/my_configs/.env.elastic | 2 +- .../custom_path_rel/my_configs/.env.kafka | 2 +- .../custom_path_rel/my_configs/.env.minio | 2 +- .../custom_path_rel/my_configs/.env.redis | 2 +- .../custom_path_rel/my_configs/.env.s3 | 2 +- .../explicit_patterns/.env.only_app | 2 +- .../explicit_patterns/.env.only_db | 2 +- .../generated_envs/file_path_secret/.env.api | 2 +- .../generated_envs/file_path_secret/.env.app | 2 +- .../file_path_secret/.env.database | 2 +- .../file_path_secret/.env.elastic | 2 +- .../file_path_secret/.env.kafka | 2 +- .../file_path_secret/.env.minio | 2 +- .../file_path_secret/.env.redis | 2 +- .../generated_envs/file_path_secret/.env.s3 | 2 +- .../generated_envs/flat_staging/.env.api | 2 +- .../generated_envs/flat_staging/.env.app | 2 +- .../generated_envs/flat_staging/.env.database | 2 +- .../generated_envs/flat_staging/.env.elastic | 2 +- .../generated_envs/flat_staging/.env.kafka | 2 +- .../generated_envs/flat_staging/.env.minio | 2 +- .../generated_envs/flat_staging/.env.redis | 2 +- .../generated_envs/flat_staging/.env.s3 | 2 +- .../generated_envs/formats_parsing/.env.api | 2 +- .../generated_envs/formats_parsing/.env.app | 2 +- .../formats_parsing/.env.database | 2 +- .../formats_parsing/.env.elastic | 2 +- .../generated_envs/formats_parsing/.env.kafka | 2 +- .../generated_envs/formats_parsing/.env.minio | 2 +- .../generated_envs/formats_parsing/.env.redis | 2 +- .../generated_envs/formats_parsing/.env.s3 | 2 +- .../multi_env_nested/.envs/dev/.env.api | 2 +- .../multi_env_nested/.envs/dev/.env.app | 2 +- .../multi_env_nested/.envs/dev/.env.database | 2 +- .../multi_env_nested/.envs/dev/.env.elastic | 2 +- .../multi_env_nested/.envs/dev/.env.kafka | 2 +- .../multi_env_nested/.envs/dev/.env.minio | 2 +- .../multi_env_nested/.envs/dev/.env.redis | 2 +- .../multi_env_nested/.envs/dev/.env.s3 | 2 +- .../multi_env_nested/.envs/prod/.env.api | 2 +- .../multi_env_nested/.envs/prod/.env.app | 2 +- .../multi_env_nested/.envs/prod/.env.database | 2 +- .../multi_env_nested/.envs/prod/.env.elastic | 2 +- .../multi_env_nested/.envs/prod/.env.kafka | 2 +- .../multi_env_nested/.envs/prod/.env.minio | 2 +- .../multi_env_nested/.envs/prod/.env.redis | 2 +- .../multi_env_nested/.envs/prod/.env.s3 | 2 +- .../multi_env_nested/.envs/staging/.env.api | 2 +- .../multi_env_nested/.envs/staging/.env.app | 2 +- .../.envs/staging/.env.database | 2 +- .../.envs/staging/.env.elastic | 2 +- .../multi_env_nested/.envs/staging/.env.kafka | 2 +- .../multi_env_nested/.envs/staging/.env.minio | 2 +- .../multi_env_nested/.envs/staging/.env.redis | 2 +- .../multi_env_nested/.envs/staging/.env.s3 | 2 +- .../generated_envs/single_prod/.env | 2 +- tests/unit/test_robust_parsing.py | 64 ++++ 91 files changed, 362 insertions(+), 246 deletions(-) create mode 100644 changelogs/2026-01-29_18-43-51.md create mode 100644 changelogs/2026-01-29_18-44-07.md create mode 100644 changelogs/2026-01-29_18-50-28.md create mode 100644 tests/unit/test_robust_parsing.py diff --git a/.gitignore b/.gitignore index 1a75d68..c453e6c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ ENV/ htmlcov/ .coverage .coverage.* +coverage.xml .pytest_cache/ .tox/ .hypothesis/ @@ -37,6 +38,7 @@ generated_envs/ generated_envs_2/ **/generated_envs/ **/generated_envs_2/ +**/generated_envs_*/ # IDEs .vscode/ diff --git a/changelogs/2026-01-29_18-43-51.md b/changelogs/2026-01-29_18-43-51.md new file mode 100644 index 0000000..6bc9ecc --- /dev/null +++ b/changelogs/2026-01-29_18-43-51.md @@ -0,0 +1,6 @@ +# Changelog + +## [Unreleased] + +### Changed +- Enhanced the parsing of environment variable secrets (`env` format) within the `parse_all_in_one_secret` function. The updated parser now robustly handles multi-line values, correctly strips comment lines, and properly manages values enclosed in single or double quotes, improving reliability when processing complex environment variable strings. diff --git a/changelogs/2026-01-29_18-44-07.md b/changelogs/2026-01-29_18-44-07.md new file mode 100644 index 0000000..192f56c --- /dev/null +++ b/changelogs/2026-01-29_18-44-07.md @@ -0,0 +1,6 @@ +# Changelog + +## [Unreleased] + +### Changed +- Enhanced environment variable parsing for `env` format secrets within the `parse_all_in_one_secret` function. The parser now accurately handles multi-line values, correctly strips leading/trailing quotes from string values, and properly ignores comment lines, leading to more robust extraction of environment variables from various input formats. diff --git a/changelogs/2026-01-29_18-50-28.md b/changelogs/2026-01-29_18-50-28.md new file mode 100644 index 0000000..9803dd7 --- /dev/null +++ b/changelogs/2026-01-29_18-50-28.md @@ -0,0 +1,6 @@ +# Changelog + +## [Unreleased] + +### Changed +- Enhanced environment variable parsing for `env` format secrets within the `parse_all_in_one_secret` function. The parser now robustly handles multi-line values, correctly ignores comment lines, and accurately strips leading/trailing quotes from string values, improving reliability when processing complex environment variable strings. \ No newline at end of file diff --git a/coverage.xml b/coverage.xml index 72ea4b8..874a309 100644 --- a/coverage.xml +++ b/coverage.xml @@ -1,12 +1,12 @@ - + /workspace/personal/MetalDeploy/src - + @@ -160,128 +160,117 @@ - + - - - + + + + - + - - + - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + - - - - - + + + + + - - - - - + + + - - - - + - + - - - - - - - - + + + + - - + - + - + + + + - - - + + - + + + + + - - - - + - + - - - - + - - + @@ -289,155 +278,174 @@ - - - + + + - + + + + + + + - - + + - - - - - - + + + + - - - + - + - - + + + + + + + - + - - - - - - - - - + + + - - - - + + - + + + + + - - - - - - - + + + + + + + - - - - + + + - - - + + + + + - + + - - - - + + - - - - + + - - - - - - + + + + + + + - - + - - + + + - - - + + + + + - - - - - + + + + + + + + - - + + - - - - + - - - + + + + + + + + + + + + + + + + + + diff --git a/src/env_manager.py b/src/env_manager.py index c73658f..1ba5d66 100644 --- a/src/env_manager.py +++ b/src/env_manager.py @@ -71,17 +71,41 @@ def parse_all_in_one_secret(secret_content: str, format_hint: str = "auto") -> D pass if format_hint == "env": + # Remove comment lines first to clean up the block + lines = secret_content.splitlines() + clean_content = "\n".join([line for line in lines if not line.strip().startswith("#")]) + env_vars = {} - # Handle both physical newlines and literal \n escapes - lines = re.split(r"\n|\\n", secret_content) - for line in lines: - line = line.strip() - if line and not line.startswith("#") and "=" in line: - try: - key, value = line.split("=", 1) - env_vars[key.strip()] = value.strip() - except ValueError: - continue + # Regex to find all KEY= pairs. + # It looks for valid keys at the start of the string or after a delimiter (space, comma, newline) + key_matches = list(re.finditer(r"(?:^|[\s,])([A-Z0-9_]+)=", clean_content)) + + if not key_matches: + # If no KEY= patterns found, return empty + return {} + + for i in range(len(key_matches)): + key = key_matches[i].group(1) + # Value starts after the '=' + val_start = key_matches[i].end() + # Value ends where the next key starts, or at the end of the content + val_end = key_matches[i + 1].start() if i + 1 < len(key_matches) else len(clean_content) + + raw_value = clean_content[val_start:val_end].strip() + + # Post-process the value: + # 1. Strip trailing delimiters (commas/spaces) + # 2. Handle quoting: if starts and ends with ", strip them + value = raw_value.rstrip(" ,") + + if (value.startswith('"') and value.endswith('"')) or ( + value.startswith("'") and value.endswith("'") + ): + # Strip outside quotes but keep internal content (including newlines/escapes) + value = value[1:-1] + + env_vars[key] = value + return env_vars return {} diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.api b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.api +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.app b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.app +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.database b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.database +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.elastic b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.elastic +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.kafka b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.kafka +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.minio b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.minio +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.redis b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.redis +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.s3 b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/auto_dev/.envs/dev/.env.s3 +++ b/tests/integration/generated_envs/auto_dev/.envs/dev/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.env b/tests/integration/generated_envs/create_root_agg/.env index 8ad434d..291dde2 100644 --- a/tests/integration/generated_envs/create_root_agg/.env +++ b/tests/integration/generated_envs/create_root_agg/.env @@ -9,4 +9,4 @@ MINIO_ENDPOINT=http://minio:9000 S3_BUCKET=my-assets KAFKA_TOPIC=events-main ELASTIC_URL=http://elastic:9200 -API_KEY=api-key-12345 +API_KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.api b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.api +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.app b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.app +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.database b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.database +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.elastic b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.elastic +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.kafka b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.kafka +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.minio b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.minio +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.redis b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.redis +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.s3 b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.s3 +++ b/tests/integration/generated_envs/create_root_agg/.envs/dev/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.api b/tests/integration/generated_envs/custom_path_abs/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.api +++ b/tests/integration/generated_envs/custom_path_abs/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.app b/tests/integration/generated_envs/custom_path_abs/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.app +++ b/tests/integration/generated_envs/custom_path_abs/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.database b/tests/integration/generated_envs/custom_path_abs/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.database +++ b/tests/integration/generated_envs/custom_path_abs/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.elastic b/tests/integration/generated_envs/custom_path_abs/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.elastic +++ b/tests/integration/generated_envs/custom_path_abs/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.kafka b/tests/integration/generated_envs/custom_path_abs/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.kafka +++ b/tests/integration/generated_envs/custom_path_abs/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.minio b/tests/integration/generated_envs/custom_path_abs/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.minio +++ b/tests/integration/generated_envs/custom_path_abs/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.redis b/tests/integration/generated_envs/custom_path_abs/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.redis +++ b/tests/integration/generated_envs/custom_path_abs/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_abs/.env.s3 b/tests/integration/generated_envs/custom_path_abs/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/custom_path_abs/.env.s3 +++ b/tests/integration/generated_envs/custom_path_abs/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.api b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.api +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.app b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.app +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.database b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.database +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.elastic b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.elastic +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.kafka b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.kafka +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.minio b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.minio +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.redis b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.redis +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.s3 b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/custom_path_rel/my_configs/.env.s3 +++ b/tests/integration/generated_envs/custom_path_rel/my_configs/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/explicit_patterns/.env.only_app b/tests/integration/generated_envs/explicit_patterns/.env.only_app index c655ea7..b06d284 100644 --- a/tests/integration/generated_envs/explicit_patterns/.env.only_app +++ b/tests/integration/generated_envs/explicit_patterns/.env.only_app @@ -1 +1 @@ -VAR=app_val +VAR=app_val \ No newline at end of file diff --git a/tests/integration/generated_envs/explicit_patterns/.env.only_db b/tests/integration/generated_envs/explicit_patterns/.env.only_db index 1b4446e..58dafdd 100644 --- a/tests/integration/generated_envs/explicit_patterns/.env.only_db +++ b/tests/integration/generated_envs/explicit_patterns/.env.only_db @@ -1 +1 @@ -VAR=db_val +VAR=db_val \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.api b/tests/integration/generated_envs/file_path_secret/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.api +++ b/tests/integration/generated_envs/file_path_secret/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.app b/tests/integration/generated_envs/file_path_secret/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.app +++ b/tests/integration/generated_envs/file_path_secret/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.database b/tests/integration/generated_envs/file_path_secret/.env.database index b293acf..729fdf9 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.database +++ b/tests/integration/generated_envs/file_path_secret/.env.database @@ -1,2 +1,2 @@ FILE_DB_USER=file-user-admin -FILE_DB_PASS=file-secret-pass +FILE_DB_PASS=file-secret-pass \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.elastic b/tests/integration/generated_envs/file_path_secret/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.elastic +++ b/tests/integration/generated_envs/file_path_secret/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.kafka b/tests/integration/generated_envs/file_path_secret/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.kafka +++ b/tests/integration/generated_envs/file_path_secret/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.minio b/tests/integration/generated_envs/file_path_secret/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.minio +++ b/tests/integration/generated_envs/file_path_secret/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.redis b/tests/integration/generated_envs/file_path_secret/.env.redis index afae57f..815ac72 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.redis +++ b/tests/integration/generated_envs/file_path_secret/.env.redis @@ -1,2 +1,2 @@ HOST=yaml-file-host -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/file_path_secret/.env.s3 b/tests/integration/generated_envs/file_path_secret/.env.s3 index 7b6f28e..5ac318d 100644 --- a/tests/integration/generated_envs/file_path_secret/.env.s3 +++ b/tests/integration/generated_envs/file_path_secret/.env.s3 @@ -1,2 +1,2 @@ BUCKET=file-bucket -REGION=us-east-1 +REGION=us-east-1 \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.api b/tests/integration/generated_envs/flat_staging/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/flat_staging/.env.api +++ b/tests/integration/generated_envs/flat_staging/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.app b/tests/integration/generated_envs/flat_staging/.env.app index fb71b81..2c8c489 100644 --- a/tests/integration/generated_envs/flat_staging/.env.app +++ b/tests/integration/generated_envs/flat_staging/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=3000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.database b/tests/integration/generated_envs/flat_staging/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/flat_staging/.env.database +++ b/tests/integration/generated_envs/flat_staging/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.elastic b/tests/integration/generated_envs/flat_staging/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/flat_staging/.env.elastic +++ b/tests/integration/generated_envs/flat_staging/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.kafka b/tests/integration/generated_envs/flat_staging/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/flat_staging/.env.kafka +++ b/tests/integration/generated_envs/flat_staging/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.minio b/tests/integration/generated_envs/flat_staging/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/flat_staging/.env.minio +++ b/tests/integration/generated_envs/flat_staging/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.redis b/tests/integration/generated_envs/flat_staging/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/flat_staging/.env.redis +++ b/tests/integration/generated_envs/flat_staging/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/flat_staging/.env.s3 b/tests/integration/generated_envs/flat_staging/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/flat_staging/.env.s3 +++ b/tests/integration/generated_envs/flat_staging/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.api b/tests/integration/generated_envs/formats_parsing/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.api +++ b/tests/integration/generated_envs/formats_parsing/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.app b/tests/integration/generated_envs/formats_parsing/.env.app index 1ff5552..f7be9b7 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.app +++ b/tests/integration/generated_envs/formats_parsing/.env.app @@ -1,4 +1,4 @@ BASE_URL=https://app.com PORT=9000 DEBUG=true -SECRET=prod-exclusive-secret +SECRET=prod-exclusive-secret \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.database b/tests/integration/generated_envs/formats_parsing/.env.database index ee8e38d..52c1758 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.database +++ b/tests/integration/generated_envs/formats_parsing/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=prod-json-admin +DB_USER=prod-json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.elastic b/tests/integration/generated_envs/formats_parsing/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.elastic +++ b/tests/integration/generated_envs/formats_parsing/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.kafka b/tests/integration/generated_envs/formats_parsing/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.kafka +++ b/tests/integration/generated_envs/formats_parsing/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.minio b/tests/integration/generated_envs/formats_parsing/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.minio +++ b/tests/integration/generated_envs/formats_parsing/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.redis b/tests/integration/generated_envs/formats_parsing/.env.redis index 642dd95..a07d324 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.redis +++ b/tests/integration/generated_envs/formats_parsing/.env.redis @@ -1,2 +1,2 @@ HOST=redis-prod-yaml-cluster -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/formats_parsing/.env.s3 b/tests/integration/generated_envs/formats_parsing/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/formats_parsing/.env.s3 +++ b/tests/integration/generated_envs/formats_parsing/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.api b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.api +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.app b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.app index f853147..4e6cefe 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.app +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=8000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.database b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.database +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.elastic b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.elastic +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.kafka b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.kafka +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.minio b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.minio +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.redis b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.redis +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.s3 b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.s3 +++ b/tests/integration/generated_envs/multi_env_nested/.envs/dev/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.api b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.api +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.app b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.app index 1ff5552..f7be9b7 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.app +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.app @@ -1,4 +1,4 @@ BASE_URL=https://app.com PORT=9000 DEBUG=true -SECRET=prod-exclusive-secret +SECRET=prod-exclusive-secret \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.database b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.database index ee8e38d..52c1758 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.database +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=prod-json-admin +DB_USER=prod-json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.elastic b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.elastic +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.kafka b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.kafka +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.minio b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.minio +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.redis b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.redis index 642dd95..a07d324 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.redis +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.redis @@ -1,2 +1,2 @@ HOST=redis-prod-yaml-cluster -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.s3 b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.s3 +++ b/tests/integration/generated_envs/multi_env_nested/.envs/prod/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.api b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.api index 2836fc9..db0cf7e 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.api +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.api @@ -1 +1 @@ -KEY=api-key-12345 +KEY=api-key-12345 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.app b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.app index fb71b81..2c8c489 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.app +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.app @@ -1,3 +1,3 @@ BASE_URL=https://app.com PORT=3000 -DEBUG=true +DEBUG=true \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.database b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.database index 66353c8..824a1c8 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.database +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.database @@ -1,2 +1,2 @@ DB_URL=postgres://db:5432 -DB_USER=json-admin +DB_USER=json-admin \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.elastic b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.elastic index be87a23..b10c680 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.elastic +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.elastic @@ -1 +1 @@ -URL=http://elastic:9200 +URL=http://elastic:9200 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.kafka b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.kafka index f76b57d..8710a49 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.kafka +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.kafka @@ -1 +1 @@ -TOPIC=events-main +TOPIC=events-main \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.minio b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.minio index 955652d..4e9a9b8 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.minio +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.minio @@ -1 +1 @@ -ENDPOINT=http://minio:9000 +ENDPOINT=http://minio:9000 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.redis b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.redis index da5493d..f50e56a 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.redis +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.redis @@ -1,2 +1,2 @@ HOST=redis-yaml-master -PORT=6379 +PORT=6379 \ No newline at end of file diff --git a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.s3 b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.s3 index f971efd..464842d 100644 --- a/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.s3 +++ b/tests/integration/generated_envs/multi_env_nested/.envs/staging/.env.s3 @@ -1 +1 @@ -BUCKET=my-assets +BUCKET=my-assets \ No newline at end of file diff --git a/tests/integration/generated_envs/single_prod/.env b/tests/integration/generated_envs/single_prod/.env index d7ee7c3..cfb1689 100644 --- a/tests/integration/generated_envs/single_prod/.env +++ b/tests/integration/generated_envs/single_prod/.env @@ -10,4 +10,4 @@ S3_BUCKET=my-assets KAFKA_TOPIC=events-main ELASTIC_URL=http://elastic:9200 API_KEY=api-key-12345 -APP_SECRET=prod-exclusive-secret +APP_SECRET=prod-exclusive-secret \ No newline at end of file diff --git a/tests/unit/test_robust_parsing.py b/tests/unit/test_robust_parsing.py new file mode 100644 index 0000000..62e9e71 --- /dev/null +++ b/tests/unit/test_robust_parsing.py @@ -0,0 +1,64 @@ +from src.env_manager import parse_all_in_one_secret + + +def test_robust_parsing_edge_cases(): + """Verify that the parser handles multi-line, collapsed, and quoted values correctly.""" + + # Complex case with: + # 1. Multi-line PEM key (Firebase style) + # 2. Collapsed space-separated keys + # 3. Collapsed comma-separated keys + # 4. Quoted values with spaces + # 5. Values with internal '=' + + complex_secret = """ +# Whorkaz Configuration +NODE_ENV=production,PORT=3000 +CORS_ORIGIN="*" +DB_URL="postgres://user:pass@host:5432/db?ssl=true" + +FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFA\\n-----END PRIVATE KEY-----\\n" +# Another comment +LOG_LEVEL=DEBUG, TIMEOUT=5000 KEY4=VAL4 +""" + + parsed = parse_all_in_one_secret(complex_secret, format_hint="env") + + assert parsed["NODE_ENV"] == "production" + assert parsed["PORT"] == "3000" + assert parsed["CORS_ORIGIN"] == "*" + assert parsed["DB_URL"] == "postgres://user:pass@host:5432/db?ssl=true" + assert "BEGIN PRIVATE KEY" in parsed["FIREBASE_PRIVATE_KEY"] + assert "END PRIVATE KEY" in parsed["FIREBASE_PRIVATE_KEY"] + assert "\\n" in parsed["FIREBASE_PRIVATE_KEY"] + assert parsed["LOG_LEVEL"] == "DEBUG" + assert parsed["TIMEOUT"] == "5000" + assert parsed["KEY4"] == "VAL4" + + +def test_user_firebase_key_handling(): + """Specific test for the user's reported Firebase private key issue.""" + firebase_block = 'FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\nMIIEvQIA...\\n-----END PRIVATE KEY-----\\n"' + parsed = parse_all_in_one_secret(firebase_block, format_hint="env") + + # It should strip the outside quotes but keep the internal ones + assert parsed["FIREBASE_PRIVATE_KEY"].startswith("-----BEGIN PRIVATE KEY-----") + assert parsed["FIREBASE_PRIVATE_KEY"].endswith("-----END PRIVATE KEY-----\\n") + + +def test_collapsed_mixed_delimiters(): + """Test mixed spaces and commas on a single line.""" + content = "A=1,B=2 C=3 , D=4" + parsed = parse_all_in_one_secret(content, format_hint="env") + + assert parsed["A"] == "1" + assert parsed["B"] == "2" + assert parsed["C"] == "3" + assert parsed["D"] == "4" + + +def test_empty_or_no_keys(): + """Ensure it doesn't crash on invalid input.""" + assert parse_all_in_one_secret("", format_hint="env") == {} + assert parse_all_in_one_secret("just some text without equals", format_hint="env") == {} + assert parse_all_in_one_secret("# only comments", format_hint="env") == {}