Files
gaokao-volunteer-system/tests/test_docker_compose_env_contract.py

47 lines
1.4 KiB
Python
Raw Normal View History

from __future__ import annotations
from pathlib import Path
import yaml
PROJECT_ROOT = Path(__file__).resolve().parents[1]
def test_docker_compose_passes_prod_critical_gaokao_env_vars() -> None:
compose = yaml.safe_load(
(PROJECT_ROOT / "docker-compose.yml").read_text(encoding="utf-8")
)
service_env = compose["services"]["gaokao-admin"]["environment"]
required_keys = {
"GAOKAO_ENV",
"GAOKAO_ADMIN_BIND",
"GAOKAO_ADMIN_PORT",
"GAOKAO_ADMIN_USER",
"GAOKAO_ADMIN_PASS",
"GAOKAO_JWT_SECRET",
"GAOKAO_PORTAL_TOKEN_SECRET",
"GAOKAO_ORDERS_FERNET_KEY",
"GAOKAO_PAYMENT_PROVIDER",
"GAOKAO_PAYMENT_BASE_URL",
"GAOKAO_PAYMENT_WEBHOOK_SECRET",
"GAOKAO_PAYMENT_NOTIFY_URL",
"GAOKAO_PAYMENT_RETURN_URL",
"GAOKAO_PAYMENT_APP_ID",
"GAOKAO_PAYMENT_PRIVATE_KEY_PATH",
"GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH",
"GAOKAO_OPS_ALERT_LOG",
}
missing = sorted(required_keys - set(service_env))
assert not missing, f"docker-compose.yml missing gaokao env pass-through: {missing}"
def test_docker_compose_ports_follow_admin_bind_and_port() -> None:
compose = yaml.safe_load(
(PROJECT_ROOT / "docker-compose.yml").read_text(encoding="utf-8")
)
ports = compose["services"]["gaokao-admin"]["ports"]
assert ports == ["${GAOKAO_ADMIN_BIND:-127.0.0.1}:${GAOKAO_ADMIN_PORT:-8000}:${GAOKAO_ADMIN_PORT:-8000}"]