state-hub/tests/test_instance_identity.py

39 lines
1.3 KiB
Python
Raw Normal View History

"""The instance-identity env vars must actually bind (CUST-WP-0067-T03).
The chart sets STATE_HUB_INSTANCE_ROLE. pydantic-settings derives the env var
from the *field name*, so a field called `instance_role` silently ignores it and
the hub reports "unknown" while the ConfigMap says "primary" config that is
declared but never reaches what it configures, which is the entire failure this
workplan exists to close.
"""
from __future__ import annotations
import pytest
from api.config import Settings
@pytest.mark.parametrize(
"env_name,attr,value",
[
("STATE_HUB_INSTANCE_ROLE", "state_hub_instance_role", "primary"),
("STATE_HUB_INSTANCE_LABEL", "state_hub_instance_label", "railiance01"),
],
)
def test_env_var_binds_to_setting(monkeypatch, env_name, attr, value):
monkeypatch.setenv(env_name, value)
assert getattr(Settings(), attr) == value
def test_role_defaults_to_unknown(monkeypatch):
"""An instance that has not declared itself is not the primary."""
monkeypatch.delenv("STATE_HUB_INSTANCE_ROLE", raising=False)
assert Settings().state_hub_instance_role == "unknown"
def test_role_rejects_unknown_values(monkeypatch):
monkeypatch.setenv("STATE_HUB_INSTANCE_ROLE", "authoritative")
with pytest.raises(Exception):
Settings()