54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import pytest
|
|
|
|
from agent.config import AgentConfig, ConfigError, load_config
|
|
|
|
FULL_ENV = {
|
|
"DB_HOST": "db",
|
|
"DB_PORT": "5433",
|
|
"POSTGRES_USER": "firefly",
|
|
"POSTGRES_PASSWORD": "s3cret",
|
|
"AGENT_DB_NAME": "agentdb2",
|
|
"FIREFLY_API_URL": "http://app:8080",
|
|
"AGENT_FIREFLY_TOKEN": "tok123",
|
|
"HEARTBEAT_INTERVAL_MINUTES": "15",
|
|
}
|
|
|
|
MINIMAL_ENV = {
|
|
"DB_HOST": "db",
|
|
"POSTGRES_USER": "firefly",
|
|
"POSTGRES_PASSWORD": "s3cret",
|
|
"FIREFLY_API_URL": "http://app:8080",
|
|
"AGENT_FIREFLY_TOKEN": "tok123",
|
|
}
|
|
|
|
|
|
def test_load_config_reads_all_vars():
|
|
cfg = load_config(FULL_ENV)
|
|
assert cfg == AgentConfig(
|
|
db_host="db",
|
|
db_port=5433,
|
|
db_user="firefly",
|
|
db_password="s3cret",
|
|
agent_db_name="agentdb2",
|
|
firefly_url="http://app:8080",
|
|
firefly_token="tok123",
|
|
heartbeat_interval_minutes=15,
|
|
)
|
|
|
|
|
|
def test_defaults_applied():
|
|
cfg = load_config(MINIMAL_ENV)
|
|
assert cfg.db_port == 5432
|
|
assert cfg.agent_db_name == "agentdb"
|
|
assert cfg.heartbeat_interval_minutes == 60
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"missing",
|
|
["DB_HOST", "POSTGRES_USER", "POSTGRES_PASSWORD", "FIREFLY_API_URL", "AGENT_FIREFLY_TOKEN"],
|
|
)
|
|
def test_missing_required_var_names_the_var(missing):
|
|
env = {k: v for k, v in MINIMAL_ENV.items() if k != missing}
|
|
with pytest.raises(ConfigError, match=missing):
|
|
load_config(env)
|