"""SynapseConfig.from_env — env-переменные экосистемы."""
import pytest
from gnexus_synapse.config import ENV_DEFAULT_SOURCE, SynapseConfig
def test_from_env_defaults():
cfg = SynapseConfig.from_env({})
assert cfg.base_url == ""
assert cfg.api_key is None
assert cfg.timeout == 10.0
assert cfg.default_source is None
def test_from_env_reads_all():
cfg = SynapseConfig.from_env({
"SYNAPSE_URL": "http://synapse:8013/",
"SYNAPSE_API_KEY": "syn_abc",
"SYNAPSE_TIMEOUT": "3.5",
ENV_DEFAULT_SOURCE: "bugtrail",
})
assert cfg.base_url == "http://synapse:8013/"
assert cfg.api_key == "syn_abc"
assert cfg.timeout == 3.5
assert cfg.default_source == "bugtrail"
assert cfg.url("/api/v1/events") == "http://synapse:8013/api/v1/events"
def test_empty_timeout_falls_to_default():
assert SynapseConfig.from_env({"SYNAPSE_TIMEOUT": ""}).timeout == 10.0
with pytest.raises(ValueError, match="SYNAPSE_TIMEOUT"):
SynapseConfig.from_env({"SYNAPSE_TIMEOUT": "всегда"})
with pytest.raises(ValueError, match="SYNAPSE_TIMEOUT"):
SynapseConfig.from_env({"SYNAPSE_TIMEOUT": "0"})