"""REQ-106: deploy workflow environment input + run_platform.sh --environment. The deploy workflow declares the environment input and the resolver supports environment_override. """ import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT)) from core.contract_resolver import resolve GITHUB = ROOT / ".github" / "workflows" / "deploy.yml" def test_deploy_workflow_exists(): assert GITHUB.is_file() def test_deploy_workflow_has_environment_input(): text = GITHUB.read_text() assert "environment:" in text assert "Target environment override" in text # The input is declared in the workflow_call inputs section. assert 'default: ""' in text def test_deploy_workflow_passes_env_flag_to_run_platform(): text = GITHUB.read_text() assert "--environment" in text assert "ENV_FLAG" in text assert "inputs.environment" in text def test_resolver_environment_override_changes_env(): """environment_override changes the resolved environment.""" stack = resolve(str(ROOT / "contracts" / "static-assets.yml"), environment_override="qa") s3 = [r for r in stack["resources"] if r["type"] == "aws:s3:bucket"][0] assert "qa" in s3["inputs"]["bucket_name"] def test_resolver_environment_override_prod(): stack = resolve(str(ROOT / "contracts" / "static-assets.yml"), environment_override="prod") s3 = [r for r in stack["resources"] if r["type"] == "aws:s3:bucket"][0] assert "prod" in s3["inputs"]["bucket_name"] def test_resolver_environment_override_dr(): stack = resolve(str(ROOT / "contracts" / "static-assets.yml"), environment_override="dr") s3 = [r for r in stack["resources"] if r["type"] == "aws:s3:bucket"][0] assert "dr" in s3["inputs"]["bucket_name"] def test_resolver_no_override_uses_contract_env(): stack = resolve(str(ROOT / "contracts" / "static-assets.yml")) s3 = [r for r in stack["resources"] if r["type"] == "aws:s3:bucket"][0] assert "dev" in s3["inputs"]["bucket_name"] def test_resolver_override_none_uses_contract_env(): """Passing environment_override=None uses the contract's environment.""" stack = resolve(str(ROOT / "contracts" / "static-assets.yml"), environment_override=None) s3 = [r for r in stack["resources"] if r["type"] == "aws:s3:bucket"][0] assert "dev" in s3["inputs"]["bucket_name"] def test_run_platform_sh_has_environment_flag(): text = (ROOT / "scripts" / "run_platform.sh").read_text() assert "--environment" in text assert "ENVIRONMENT_OVERRIDE" in text assert "NOVA_ENVIRONMENT_OVERRIDE" in text assert "ACDL_ENVIRONMENT_OVERRIDE" not in text