Newer
Older
gn-synapse-client-py / tests / unit / test_config.py
@Eugene Sukhodolskiy Eugene Sukhodolskiy 1 day ago 1 KB Initial client library skeleton (v0.1.0)
"""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"})