From e41ebb943a616dbbc26208a341ec1b462bf4a71d Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Fri, 24 Apr 2026 15:22:18 +0530 Subject: [PATCH 01/16] fix: Handled inventory as default in getEnvDefinition method --- python/envgene/envgenehelper/business_helper.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/envgene/envgenehelper/business_helper.py b/python/envgene/envgenehelper/business_helper.py index 86879dd10..2afb11162 100644 --- a/python/envgene/envgenehelper/business_helper.py +++ b/python/envgene/envgenehelper/business_helper.py @@ -174,7 +174,12 @@ def getEnvDefinition(env_dir = None): env_definition_path = getEnvDefinitionPath(env_dir) if not check_file_exists(env_definition_path): raise ReferenceError(f"Environment definition for env {env_dir} is not found in {env_definition_path}") - return openYaml(env_definition_path) + env_definition_yaml = openYaml(env_definition_path) + if 'inventory' not in env_definition_yaml: + logger.warning(f"'inventory' section is not found in env_definition.yml for env {env_dir}. Adding empty 'inventory' section to avoid errors in plugins.") + env_definition_yaml['inventory'] = {} + return env_definition_yaml + def getEnvDefinitionPath(env_dir) -> str: From 78dee69a0ac1a0163e04af012044151e825fa11c Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Fri, 24 Apr 2026 15:27:37 +0530 Subject: [PATCH 02/16] fix: Remove 'inventory' from required fields in schema --- schemas/env-definition.schema.json | 1 - 1 file changed, 1 deletion(-) diff --git a/schemas/env-definition.schema.json b/schemas/env-definition.schema.json index 7e4fbf01f..4fa19635c 100644 --- a/schemas/env-definition.schema.json +++ b/schemas/env-definition.schema.json @@ -342,7 +342,6 @@ } }, "required": [ - "inventory", "envTemplate" ] } From c92c04a70c90cee0f6a5a3379efcf20f9ecc61a7 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Mon, 20 Apr 2026 14:15:03 +0530 Subject: [PATCH 03/16] Fix: Remove 'inventory' from required fields in schema (#1239) Testing --- schemas/env-definition.schema.json | 1 - 1 file changed, 1 deletion(-) diff --git a/schemas/env-definition.schema.json b/schemas/env-definition.schema.json index 7e4fbf01f..4fa19635c 100644 --- a/schemas/env-definition.schema.json +++ b/schemas/env-definition.schema.json @@ -342,7 +342,6 @@ } }, "required": [ - "inventory", "envTemplate" ] } From 3b6d5a31b052ae383f42012840219a2d65492c07 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Fri, 24 Apr 2026 16:04:13 +0530 Subject: [PATCH 04/16] fix: Removed inventory from schema and handled defualt inventory in getEnvDefinition method (#1252) * fix: shared creds (#1240) * fix: update shared creds * fix: update shared creds * fix: add log' * fix: add additional dir * fix: make search case sensitive * chore: Update docker image tags and envgene_version for branch main [skip ci] * docs: add use cases for DevCI (#1241) * docs: add Effective Set use cases * docs: add extra US * docs: add use-cases * docs: add Effective Set use cases * docs: add extra US * docs: add use-cases * docs: add SSL sert use-cases * docs: update ssl use cases * docs: update GSF Use Cases * docs: remove UC 2,3,4 * docs: add cred rotation UC * docs: add UC-SC-NEX-1 to Environment Template Artifact Download and remove system-certificate UC * docs: added auto-environment-name use cases * docs: fixed links * docs: fix markdown system-certificate use case * docs: fixed ssl use cases * fix: Handled inventory as default in getEnvDefinition method * fix: Remove 'inventory' from required fields in schema --------- Co-authored-by: dysmon <120464230+dysmon@users.noreply.github.com> Co-authored-by: qubership-actions[bot] Co-authored-by: ismglvd-hub --- python/envgene/envgenehelper/business_helper.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/envgene/envgenehelper/business_helper.py b/python/envgene/envgenehelper/business_helper.py index 86879dd10..2afb11162 100644 --- a/python/envgene/envgenehelper/business_helper.py +++ b/python/envgene/envgenehelper/business_helper.py @@ -174,7 +174,12 @@ def getEnvDefinition(env_dir = None): env_definition_path = getEnvDefinitionPath(env_dir) if not check_file_exists(env_definition_path): raise ReferenceError(f"Environment definition for env {env_dir} is not found in {env_definition_path}") - return openYaml(env_definition_path) + env_definition_yaml = openYaml(env_definition_path) + if 'inventory' not in env_definition_yaml: + logger.warning(f"'inventory' section is not found in env_definition.yml for env {env_dir}. Adding empty 'inventory' section to avoid errors in plugins.") + env_definition_yaml['inventory'] = {} + return env_definition_yaml + def getEnvDefinitionPath(env_dir) -> str: From 41dcdf2647c4eabfa1449d9d23e4d49e435b731a Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 13:41:28 +0530 Subject: [PATCH 05/16] fix: Added test_getEnvDefinition.py for business_helper.py --- .../envgenehelper/test_getEnvDefinition.py | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_getEnvDefinition.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} From 6e5f923e19344a5bd2411bcc515a6104051080e3 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 14:19:33 +0530 Subject: [PATCH 06/16] fix: Added test_business_helper.py for business_helper.py --- .../envgenehelper/test_business_helper.py | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 python/envgene/envgenehelper/test_business_helper.py diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} From 13488c1b643395fc514bc276f29ebeae99441625 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 16:21:23 +0530 Subject: [PATCH 07/16] fix: Added test_getEnvDefinition.py for business_helper.py (#1269) * fix: Handled inventory as default in getEnvDefinition method * fix: Remove 'inventory' from required fields in schema * fix: Added test_getEnvDefinition.py for business_helper.py * fix: Added test_business_helper.py for business_helper.py --- .../envgenehelper/test_business_helper.py | 146 ++++++++++++++++++ .../envgenehelper/test_getEnvDefinition.py | 146 ++++++++++++++++++ 2 files changed, 292 insertions(+) create mode 100644 python/envgene/envgenehelper/test_business_helper.py create mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_getEnvDefinition.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} From c67e277c9178799f2f11d8eab18d4a80a8716028 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 18:03:42 +0530 Subject: [PATCH 08/16] fix: Added logging in test_business_helper.py --- .../envgenehelper/test_business_helper.py | 20 ++- .../envgenehelper/test_getEnvDefinition.py | 146 ------------------ 2 files changed, 13 insertions(+), 153 deletions(-) delete mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py index 83e39607d..e025d2ca4 100644 --- a/python/envgene/envgenehelper/test_business_helper.py +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -2,8 +2,14 @@ import pytest import logging + +# 🔹 Enable logging ONLY for this file +@pytest.fixture(autouse=True) +def enable_logging(): + logging.basicConfig(level=logging.INFO, force=True) + + test_logger = logging.getLogger("test_logger") -logging.basicConfig(level=logging.INFO) # ===================== TEST 1 ===================== @@ -25,13 +31,13 @@ def test_inventory_added_when_missing(monkeypatch): test_logger.info("\n===== TEST 1: Inventory Missing =====") test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + test_logger.info("Inventory BEFORE? %s", "inventory" in input_yaml) result = getEnvDefinition("test_env") test_logger.info("AFTER: %s", result) - test_logger.info("Inventory present AFTER? %s", "inventory" in result) - test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + test_logger.info("Inventory AFTER? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) assert "inventory" in result assert result["inventory"] == {} @@ -82,7 +88,7 @@ def test_file_not_found(monkeypatch): with pytest.raises(ReferenceError) as exc: getEnvDefinition("test_env") - test_logger.info("Exception caught: %s", str(exc.value)) + test_logger.info("Exception: %s", str(exc.value)) # ===================== TEST 4 ===================== @@ -107,12 +113,12 @@ def test_env_dir_fallback(monkeypatch): ) test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None → fallback expected") + test_logger.info("env_dir BEFORE: None") result = getEnvDefinition(None) test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added after fallback? %s", "inventory" in result) + test_logger.info("Inventory added? %s", "inventory" in result) assert "inventory" in result diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py deleted file mode 100644 index 83e39607d..000000000 --- a/python/envgene/envgenehelper/test_getEnvDefinition.py +++ /dev/null @@ -1,146 +0,0 @@ -from .business_helper import getEnvDefinition -import pytest -import logging - -test_logger = logging.getLogger("test_logger") -logging.basicConfig(level=logging.INFO) - - -# ===================== TEST 1 ===================== -def test_inventory_added_when_missing(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 1: Inventory Missing =====") - test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory present AFTER? %s", "inventory" in result) - test_logger.info("Inventory content AFTER: %s", result.get("inventory")) - - assert "inventory" in result - assert result["inventory"] == {} - - -# ===================== TEST 2 ===================== -def test_inventory_not_overridden(monkeypatch): - input_yaml = {"inventory": {"a": 1}} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml - ) - - test_logger.info("\n===== TEST 2: Inventory Exists =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) - - assert result == input_yaml - assert result["inventory"] is input_yaml["inventory"] - - -# ===================== TEST 3 ===================== -def test_file_not_found(monkeypatch): - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: False - ) - - test_logger.info("\n===== TEST 3: File Not Found =====") - - with pytest.raises(ReferenceError) as exc: - getEnvDefinition("test_env") - - test_logger.info("Exception caught: %s", str(exc.value)) - - -# ===================== TEST 4 ===================== -def test_env_dir_fallback(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.get_current_env_dir_from_env_vars", - lambda: "env_from_vars" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None → fallback expected") - - result = getEnvDefinition(None) - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added after fallback? %s", "inventory" in result) - - assert "inventory" in result - - -# ===================== TEST 5 ===================== -def test_empty_yaml(monkeypatch): - input_yaml = {} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 5: Empty YAML =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added? %s", "inventory" in result) - test_logger.info("Inventory content: %s", result.get("inventory")) - - assert result["inventory"] == {} From 1445116c95225341f44550f8ec83a3208d555148 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 18:05:00 +0530 Subject: [PATCH 09/16] fix: Added logging in test_business_helper.py --- python/envgene/envgenehelper/test_business_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py index e025d2ca4..7ef41e366 100644 --- a/python/envgene/envgenehelper/test_business_helper.py +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -3,7 +3,7 @@ import logging -# 🔹 Enable logging ONLY for this file +# Enable logging ONLY for this file @pytest.fixture(autouse=True) def enable_logging(): logging.basicConfig(level=logging.INFO, force=True) From ba72ed471c4490ac095318438811863065c56e87 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Thu, 30 Apr 2026 10:37:30 +0530 Subject: [PATCH 10/16] fix: parameterize getEnvDefinition tests using structured test cases --- .../envgenehelper/test_business_helper.py | 197 +++++++----------- .../envgenehelper/test_getEnvDefinition.py | 146 ------------- 2 files changed, 78 insertions(+), 265 deletions(-) delete mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py index 7ef41e366..949f8c8c8 100644 --- a/python/envgene/envgenehelper/test_business_helper.py +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -2,151 +2,110 @@ import pytest import logging - # Enable logging ONLY for this file @pytest.fixture(autouse=True) def enable_logging(): logging.basicConfig(level=logging.INFO, force=True) + logging.info("getEnvDefinition method of business_helper.py is being tested...") test_logger = logging.getLogger("test_logger") -# ===================== TEST 1 ===================== -def test_inventory_added_when_missing(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 1: Inventory Missing =====") - test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory BEFORE? %s", "inventory" in input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory AFTER? %s", "inventory" in result) - test_logger.info("Inventory content: %s", result.get("inventory")) - - assert "inventory" in result - assert result["inventory"] == {} - - -# ===================== TEST 2 ===================== -def test_inventory_not_overridden(monkeypatch): - input_yaml = {"inventory": {"a": 1}} - +# ===================== TEST CASES ===================== +test_cases = [ + { + "name": "Inventory Missing", + "input_yaml": {"applications": []}, + "file_exists": True, + "expected_inventory": {}, + "expect_exception": None, + "env_dir": "test_env", + }, + { + "name": "Inventory Exists", + "input_yaml": {"inventory": {"a": 1}}, + "file_exists": True, + "expected_inventory": {"a": 1}, + "expect_exception": None, + "env_dir": "test_env", + }, + { + "name": "File Not Found", + "input_yaml": None, + "file_exists": False, + "expected_inventory": None, + "expect_exception": ReferenceError, + "env_dir": "test_env", + }, + { + "name": "Env Dir Fallback", + "input_yaml": {"applications": []}, + "file_exists": True, + "expected_inventory": {}, + "expect_exception": None, + "env_dir": None, + }, + { + "name": "Empty YAML", + "input_yaml": {}, + "file_exists": True, + "expected_inventory": {}, + "expect_exception": None, + "env_dir": "test_env", + }, +] + + +# ===================== PARAMETRIZED TEST ===================== +@pytest.mark.parametrize( + "case", + test_cases, + ids=[case["name"] for case in test_cases] +) +def test_get_env_definition(case, monkeypatch): + test_logger.info(f"\n===== {case['name']} =====") + test_logger.info("INPUT YAML: %s", case["input_yaml"]) + + # Mock path monkeypatch.setattr( "envgenehelper.business_helper.getEnvDefinitionPath", lambda x: "dummy_path" ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml - ) - - test_logger.info("\n===== TEST 2: Inventory Exists =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) - assert result == input_yaml - assert result["inventory"] is input_yaml["inventory"] - - -# ===================== TEST 3 ===================== -def test_file_not_found(monkeypatch): - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) + # Mock file existence monkeypatch.setattr( "envgenehelper.business_helper.check_file_exists", - lambda x: False + lambda x: case["file_exists"] ) - test_logger.info("\n===== TEST 3: File Not Found =====") - - with pytest.raises(ReferenceError) as exc: - getEnvDefinition("test_env") - - test_logger.info("Exception: %s", str(exc.value)) - - -# ===================== TEST 4 ===================== -def test_env_dir_fallback(monkeypatch): - input_yaml = {"applications": []} + # Mock YAML loading + if case["input_yaml"] is not None: + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: case["input_yaml"].copy() + ) + # Mock env fallback monkeypatch.setattr( "envgenehelper.business_helper.get_current_env_dir_from_env_vars", lambda: "env_from_vars" ) - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None") + # ===================== EXECUTION ===================== + if case["expect_exception"]: + with pytest.raises(case["expect_exception"]): + getEnvDefinition(case["env_dir"]) + return - result = getEnvDefinition(None) + result = getEnvDefinition(case["env_dir"]) - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("RESULT: %s", result) + # ===================== ASSERTIONS ===================== assert "inventory" in result + assert result["inventory"] == case["expected_inventory"] - -# ===================== TEST 5 ===================== -def test_empty_yaml(monkeypatch): - input_yaml = {} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 5: Empty YAML =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added? %s", "inventory" in result) - test_logger.info("Inventory content: %s", result.get("inventory")) - - assert result["inventory"] == {} + # Special case: ensure inventory not overridden + if case["name"] == "Inventory Exists": + assert result["inventory"] == case["input_yaml"]["inventory"] diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py deleted file mode 100644 index 83e39607d..000000000 --- a/python/envgene/envgenehelper/test_getEnvDefinition.py +++ /dev/null @@ -1,146 +0,0 @@ -from .business_helper import getEnvDefinition -import pytest -import logging - -test_logger = logging.getLogger("test_logger") -logging.basicConfig(level=logging.INFO) - - -# ===================== TEST 1 ===================== -def test_inventory_added_when_missing(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 1: Inventory Missing =====") - test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory present AFTER? %s", "inventory" in result) - test_logger.info("Inventory content AFTER: %s", result.get("inventory")) - - assert "inventory" in result - assert result["inventory"] == {} - - -# ===================== TEST 2 ===================== -def test_inventory_not_overridden(monkeypatch): - input_yaml = {"inventory": {"a": 1}} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml - ) - - test_logger.info("\n===== TEST 2: Inventory Exists =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) - - assert result == input_yaml - assert result["inventory"] is input_yaml["inventory"] - - -# ===================== TEST 3 ===================== -def test_file_not_found(monkeypatch): - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: False - ) - - test_logger.info("\n===== TEST 3: File Not Found =====") - - with pytest.raises(ReferenceError) as exc: - getEnvDefinition("test_env") - - test_logger.info("Exception caught: %s", str(exc.value)) - - -# ===================== TEST 4 ===================== -def test_env_dir_fallback(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.get_current_env_dir_from_env_vars", - lambda: "env_from_vars" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None → fallback expected") - - result = getEnvDefinition(None) - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added after fallback? %s", "inventory" in result) - - assert "inventory" in result - - -# ===================== TEST 5 ===================== -def test_empty_yaml(monkeypatch): - input_yaml = {} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 5: Empty YAML =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added? %s", "inventory" in result) - test_logger.info("Inventory content: %s", result.get("inventory")) - - assert result["inventory"] == {} From f0963c92e83e0ff2b8fdf09b5a38dbeec33f8afb Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Mon, 20 Apr 2026 14:15:03 +0530 Subject: [PATCH 11/16] Fix: Remove 'inventory' from required fields in schema (#1239) Testing --- schemas/env-definition.schema.json | 1 - 1 file changed, 1 deletion(-) diff --git a/schemas/env-definition.schema.json b/schemas/env-definition.schema.json index 7e4fbf01f..4fa19635c 100644 --- a/schemas/env-definition.schema.json +++ b/schemas/env-definition.schema.json @@ -342,7 +342,6 @@ } }, "required": [ - "inventory", "envTemplate" ] } From 353af955a0566e08829428002996bb94c6b4e28b Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Fri, 24 Apr 2026 16:04:13 +0530 Subject: [PATCH 12/16] fix: Removed inventory from schema and handled defualt inventory in getEnvDefinition method (#1252) * fix: shared creds (#1240) * fix: update shared creds * fix: update shared creds * fix: add log' * fix: add additional dir * fix: make search case sensitive * chore: Update docker image tags and envgene_version for branch main [skip ci] * docs: add use cases for DevCI (#1241) * docs: add Effective Set use cases * docs: add extra US * docs: add use-cases * docs: add Effective Set use cases * docs: add extra US * docs: add use-cases * docs: add SSL sert use-cases * docs: update ssl use cases * docs: update GSF Use Cases * docs: remove UC 2,3,4 * docs: add cred rotation UC * docs: add UC-SC-NEX-1 to Environment Template Artifact Download and remove system-certificate UC * docs: added auto-environment-name use cases * docs: fixed links * docs: fix markdown system-certificate use case * docs: fixed ssl use cases * fix: Handled inventory as default in getEnvDefinition method * fix: Remove 'inventory' from required fields in schema --------- Co-authored-by: dysmon <120464230+dysmon@users.noreply.github.com> Co-authored-by: qubership-actions[bot] Co-authored-by: ismglvd-hub --- python/envgene/envgenehelper/business_helper.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/envgene/envgenehelper/business_helper.py b/python/envgene/envgenehelper/business_helper.py index 86879dd10..2afb11162 100644 --- a/python/envgene/envgenehelper/business_helper.py +++ b/python/envgene/envgenehelper/business_helper.py @@ -174,7 +174,12 @@ def getEnvDefinition(env_dir = None): env_definition_path = getEnvDefinitionPath(env_dir) if not check_file_exists(env_definition_path): raise ReferenceError(f"Environment definition for env {env_dir} is not found in {env_definition_path}") - return openYaml(env_definition_path) + env_definition_yaml = openYaml(env_definition_path) + if 'inventory' not in env_definition_yaml: + logger.warning(f"'inventory' section is not found in env_definition.yml for env {env_dir}. Adding empty 'inventory' section to avoid errors in plugins.") + env_definition_yaml['inventory'] = {} + return env_definition_yaml + def getEnvDefinitionPath(env_dir) -> str: From 6c734bfc16c431129776f8e152dfad3287658c79 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 16:21:23 +0530 Subject: [PATCH 13/16] fix: Added test_getEnvDefinition.py for business_helper.py (#1269) * fix: Handled inventory as default in getEnvDefinition method * fix: Remove 'inventory' from required fields in schema * fix: Added test_getEnvDefinition.py for business_helper.py * fix: Added test_business_helper.py for business_helper.py --- .../envgenehelper/test_business_helper.py | 146 ++++++++++++++++++ .../envgenehelper/test_getEnvDefinition.py | 146 ++++++++++++++++++ 2 files changed, 292 insertions(+) create mode 100644 python/envgene/envgenehelper/test_business_helper.py create mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py new file mode 100644 index 000000000..83e39607d --- /dev/null +++ b/python/envgene/envgenehelper/test_getEnvDefinition.py @@ -0,0 +1,146 @@ +from .business_helper import getEnvDefinition +import pytest +import logging + +test_logger = logging.getLogger("test_logger") +logging.basicConfig(level=logging.INFO) + + +# ===================== TEST 1 ===================== +def test_inventory_added_when_missing(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 1: Inventory Missing =====") + test_logger.info("BEFORE: %s", input_yaml) + test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory present AFTER? %s", "inventory" in result) + test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + + assert "inventory" in result + assert result["inventory"] == {} + + +# ===================== TEST 2 ===================== +def test_inventory_not_overridden(monkeypatch): + input_yaml = {"inventory": {"a": 1}} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml + ) + + test_logger.info("\n===== TEST 2: Inventory Exists =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) + + assert result == input_yaml + assert result["inventory"] is input_yaml["inventory"] + + +# ===================== TEST 3 ===================== +def test_file_not_found(monkeypatch): + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: False + ) + + test_logger.info("\n===== TEST 3: File Not Found =====") + + with pytest.raises(ReferenceError) as exc: + getEnvDefinition("test_env") + + test_logger.info("Exception caught: %s", str(exc.value)) + + +# ===================== TEST 4 ===================== +def test_env_dir_fallback(monkeypatch): + input_yaml = {"applications": []} + + monkeypatch.setattr( + "envgenehelper.business_helper.get_current_env_dir_from_env_vars", + lambda: "env_from_vars" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy_path" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 4: env_dir Fallback =====") + test_logger.info("env_dir BEFORE: None → fallback expected") + + result = getEnvDefinition(None) + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added after fallback? %s", "inventory" in result) + + assert "inventory" in result + + +# ===================== TEST 5 ===================== +def test_empty_yaml(monkeypatch): + input_yaml = {} + + monkeypatch.setattr( + "envgenehelper.business_helper.getEnvDefinitionPath", + lambda x: "dummy" + ) + monkeypatch.setattr( + "envgenehelper.business_helper.check_file_exists", + lambda x: True + ) + monkeypatch.setattr( + "envgenehelper.business_helper.openYaml", + lambda x: input_yaml.copy() + ) + + test_logger.info("\n===== TEST 5: Empty YAML =====") + test_logger.info("BEFORE: %s", input_yaml) + + result = getEnvDefinition("test_env") + + test_logger.info("AFTER: %s", result) + test_logger.info("Inventory added? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) + + assert result["inventory"] == {} From 6345983cdc503222d911d2720a7e5fbdbd90c167 Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Wed, 29 Apr 2026 18:17:09 +0530 Subject: [PATCH 14/16] fix: Added logging in test_business_helper.py (#1274) * fix: Handled inventory as default in getEnvDefinition method * fix: Remove 'inventory' from required fields in schema * fix: Added test_getEnvDefinition.py for business_helper.py * fix: Added test_business_helper.py for business_helper.py * fix: Added logging in test_business_helper.py * fix: Added logging in test_business_helper.py --------- Co-authored-by: KamalArya <42619309+KamalArya@users.noreply.github.com> --- .../envgenehelper/test_business_helper.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py index 83e39607d..7ef41e366 100644 --- a/python/envgene/envgenehelper/test_business_helper.py +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -2,8 +2,14 @@ import pytest import logging + +# Enable logging ONLY for this file +@pytest.fixture(autouse=True) +def enable_logging(): + logging.basicConfig(level=logging.INFO, force=True) + + test_logger = logging.getLogger("test_logger") -logging.basicConfig(level=logging.INFO) # ===================== TEST 1 ===================== @@ -25,13 +31,13 @@ def test_inventory_added_when_missing(monkeypatch): test_logger.info("\n===== TEST 1: Inventory Missing =====") test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) + test_logger.info("Inventory BEFORE? %s", "inventory" in input_yaml) result = getEnvDefinition("test_env") test_logger.info("AFTER: %s", result) - test_logger.info("Inventory present AFTER? %s", "inventory" in result) - test_logger.info("Inventory content AFTER: %s", result.get("inventory")) + test_logger.info("Inventory AFTER? %s", "inventory" in result) + test_logger.info("Inventory content: %s", result.get("inventory")) assert "inventory" in result assert result["inventory"] == {} @@ -82,7 +88,7 @@ def test_file_not_found(monkeypatch): with pytest.raises(ReferenceError) as exc: getEnvDefinition("test_env") - test_logger.info("Exception caught: %s", str(exc.value)) + test_logger.info("Exception: %s", str(exc.value)) # ===================== TEST 4 ===================== @@ -107,12 +113,12 @@ def test_env_dir_fallback(monkeypatch): ) test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None → fallback expected") + test_logger.info("env_dir BEFORE: None") result = getEnvDefinition(None) test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added after fallback? %s", "inventory" in result) + test_logger.info("Inventory added? %s", "inventory" in result) assert "inventory" in result From a877c881ade6c02a51e95ee0341d877da4f440cf Mon Sep 17 00:00:00 2001 From: KamalArya <42619309+KamalArya@users.noreply.github.com> Date: Wed, 29 Apr 2026 18:23:43 +0530 Subject: [PATCH 15/16] fix: deleted unused test file --- .../envgenehelper/test_getEnvDefinition.py | 146 ------------------ 1 file changed, 146 deletions(-) delete mode 100644 python/envgene/envgenehelper/test_getEnvDefinition.py diff --git a/python/envgene/envgenehelper/test_getEnvDefinition.py b/python/envgene/envgenehelper/test_getEnvDefinition.py deleted file mode 100644 index 83e39607d..000000000 --- a/python/envgene/envgenehelper/test_getEnvDefinition.py +++ /dev/null @@ -1,146 +0,0 @@ -from .business_helper import getEnvDefinition -import pytest -import logging - -test_logger = logging.getLogger("test_logger") -logging.basicConfig(level=logging.INFO) - - -# ===================== TEST 1 ===================== -def test_inventory_added_when_missing(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 1: Inventory Missing =====") - test_logger.info("BEFORE: %s", input_yaml) - test_logger.info("Inventory present BEFORE? %s", "inventory" in input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory present AFTER? %s", "inventory" in result) - test_logger.info("Inventory content AFTER: %s", result.get("inventory")) - - assert "inventory" in result - assert result["inventory"] == {} - - -# ===================== TEST 2 ===================== -def test_inventory_not_overridden(monkeypatch): - input_yaml = {"inventory": {"a": 1}} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml - ) - - test_logger.info("\n===== TEST 2: Inventory Exists =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory unchanged? %s", result["inventory"] == input_yaml["inventory"]) - - assert result == input_yaml - assert result["inventory"] is input_yaml["inventory"] - - -# ===================== TEST 3 ===================== -def test_file_not_found(monkeypatch): - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: False - ) - - test_logger.info("\n===== TEST 3: File Not Found =====") - - with pytest.raises(ReferenceError) as exc: - getEnvDefinition("test_env") - - test_logger.info("Exception caught: %s", str(exc.value)) - - -# ===================== TEST 4 ===================== -def test_env_dir_fallback(monkeypatch): - input_yaml = {"applications": []} - - monkeypatch.setattr( - "envgenehelper.business_helper.get_current_env_dir_from_env_vars", - lambda: "env_from_vars" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy_path" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 4: env_dir Fallback =====") - test_logger.info("env_dir BEFORE: None → fallback expected") - - result = getEnvDefinition(None) - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added after fallback? %s", "inventory" in result) - - assert "inventory" in result - - -# ===================== TEST 5 ===================== -def test_empty_yaml(monkeypatch): - input_yaml = {} - - monkeypatch.setattr( - "envgenehelper.business_helper.getEnvDefinitionPath", - lambda x: "dummy" - ) - monkeypatch.setattr( - "envgenehelper.business_helper.check_file_exists", - lambda x: True - ) - monkeypatch.setattr( - "envgenehelper.business_helper.openYaml", - lambda x: input_yaml.copy() - ) - - test_logger.info("\n===== TEST 5: Empty YAML =====") - test_logger.info("BEFORE: %s", input_yaml) - - result = getEnvDefinition("test_env") - - test_logger.info("AFTER: %s", result) - test_logger.info("Inventory added? %s", "inventory" in result) - test_logger.info("Inventory content: %s", result.get("inventory")) - - assert result["inventory"] == {} From 4f387a5db16c5b5e95c22a0db05f7184b4147f8d Mon Sep 17 00:00:00 2001 From: Mayank Bijjal Date: Thu, 30 Apr 2026 11:02:08 +0530 Subject: [PATCH 16/16] fix: remove redundant logging --- .../envgenehelper/test_business_helper.py | 33 ++++--------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/python/envgene/envgenehelper/test_business_helper.py b/python/envgene/envgenehelper/test_business_helper.py index 949f8c8c8..4c5e78b9c 100644 --- a/python/envgene/envgenehelper/test_business_helper.py +++ b/python/envgene/envgenehelper/test_business_helper.py @@ -2,17 +2,17 @@ import pytest import logging -# Enable logging ONLY for this file -@pytest.fixture(autouse=True) -def enable_logging(): +@pytest.fixture(scope="session", autouse=True) +def log_start(): logging.basicConfig(level=logging.INFO, force=True) - logging.info("getEnvDefinition method of business_helper.py is being tested...") +@pytest.fixture(scope="session", autouse=True) +def log_end(request): + yield + if request.session.testsfailed == 0: + logging.info("===== test_business_helper.py : All test cases passed successfully =====") -test_logger = logging.getLogger("test_logger") - -# ===================== TEST CASES ===================== test_cases = [ { "name": "Inventory Missing", @@ -56,56 +56,37 @@ def enable_logging(): }, ] - -# ===================== PARAMETRIZED TEST ===================== @pytest.mark.parametrize( "case", test_cases, ids=[case["name"] for case in test_cases] ) def test_get_env_definition(case, monkeypatch): - test_logger.info(f"\n===== {case['name']} =====") - test_logger.info("INPUT YAML: %s", case["input_yaml"]) - - # Mock path monkeypatch.setattr( "envgenehelper.business_helper.getEnvDefinitionPath", lambda x: "dummy_path" ) - - # Mock file existence monkeypatch.setattr( "envgenehelper.business_helper.check_file_exists", lambda x: case["file_exists"] ) - - # Mock YAML loading if case["input_yaml"] is not None: monkeypatch.setattr( "envgenehelper.business_helper.openYaml", lambda x: case["input_yaml"].copy() ) - - # Mock env fallback monkeypatch.setattr( "envgenehelper.business_helper.get_current_env_dir_from_env_vars", lambda: "env_from_vars" ) - - # ===================== EXECUTION ===================== if case["expect_exception"]: with pytest.raises(case["expect_exception"]): getEnvDefinition(case["env_dir"]) return result = getEnvDefinition(case["env_dir"]) - - test_logger.info("RESULT: %s", result) - - # ===================== ASSERTIONS ===================== assert "inventory" in result assert result["inventory"] == case["expected_inventory"] - # Special case: ensure inventory not overridden if case["name"] == "Inventory Exists": assert result["inventory"] == case["input_yaml"]["inventory"]