50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""Unit tests for core/onboarding.py (P19, REQ-183)."""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
|
|
|
from core.onboarding import generate_env_file, _onboarding_request_message
|
|
|
|
|
|
class TestGenerateEnvFile:
|
|
"""P19 (REQ-183): generate_env_file produces a valid env JSON."""
|
|
|
|
def test_generates_env_with_request_fields(self):
|
|
request = {
|
|
"consumerRepo": "acdl/consumer-b",
|
|
"requestedEnvironment": "qa",
|
|
"ownerId": "team-b",
|
|
"billingTag": "cost-center-b",
|
|
}
|
|
env = generate_env_file(request, template_env="dev")
|
|
assert env["name"] == "qa"
|
|
assert env["ownerId"] == "team-b"
|
|
assert env["billingTag"] == "cost-center-b"
|
|
assert env["account_id"] == "000000000000" # placeholder
|
|
assert "consumer-b" in env["description"]
|
|
|
|
def test_preserves_template_network_and_state(self):
|
|
request = {
|
|
"consumerRepo": "acdl/c",
|
|
"requestedEnvironment": "prod",
|
|
"ownerId": "team-a",
|
|
"billingTag": "cc-a",
|
|
}
|
|
env = generate_env_file(request, template_env="dev")
|
|
assert "vpc_cidr" in env["network"]
|
|
assert "bucket" in env["state_backend"]
|
|
assert env["region"] == "us-east-1"
|
|
|
|
|
|
class TestOnboardingRequestMessage:
|
|
"""P19 (REQ-183): the request message is self-service."""
|
|
|
|
def test_message_mentions_onboard_consumer(self):
|
|
msg = _onboarding_request_message("dev")
|
|
assert "onboard_consumer" in msg
|
|
assert "Nova" in msg |