mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-03-28 17:42:56 +01:00
Pass _env_file=None to settings classes to prevent pydantic-settings from loading values from .env files, which would override the default values the tests are meant to verify.
85 lines
2.6 KiB
Python
85 lines
2.6 KiB
Python
"""Tests for configuration settings."""
|
|
|
|
import pytest
|
|
|
|
from meshcore_hub.common.config import (
|
|
CommonSettings,
|
|
InterfaceSettings,
|
|
CollectorSettings,
|
|
APISettings,
|
|
WebSettings,
|
|
LogLevel,
|
|
InterfaceMode,
|
|
)
|
|
|
|
|
|
class TestCommonSettings:
|
|
"""Tests for CommonSettings."""
|
|
|
|
def test_default_values(self) -> None:
|
|
"""Test default setting values without .env file influence."""
|
|
settings = CommonSettings(_env_file=None)
|
|
|
|
assert settings.log_level == LogLevel.INFO
|
|
assert settings.mqtt_host == "localhost"
|
|
assert settings.mqtt_port == 1883
|
|
assert settings.mqtt_username is None
|
|
assert settings.mqtt_password is None
|
|
assert settings.mqtt_prefix == "meshcore"
|
|
|
|
|
|
class TestInterfaceSettings:
|
|
"""Tests for InterfaceSettings."""
|
|
|
|
def test_default_values(self) -> None:
|
|
"""Test default setting values without .env file influence."""
|
|
settings = InterfaceSettings(_env_file=None)
|
|
|
|
assert settings.interface_mode == InterfaceMode.RECEIVER
|
|
assert settings.serial_port == "/dev/ttyUSB0"
|
|
assert settings.serial_baud == 115200
|
|
assert settings.mock_device is False
|
|
|
|
|
|
class TestCollectorSettings:
|
|
"""Tests for CollectorSettings."""
|
|
|
|
def test_default_values(self) -> None:
|
|
"""Test default setting values without .env file influence."""
|
|
settings = CollectorSettings(_env_file=None)
|
|
|
|
assert settings.database_url == "sqlite:///./meshcore.db"
|
|
|
|
def test_database_url_validation(self) -> None:
|
|
"""Test database URL validation."""
|
|
with pytest.raises(ValueError):
|
|
CollectorSettings(_env_file=None, database_url="")
|
|
|
|
|
|
class TestAPISettings:
|
|
"""Tests for APISettings."""
|
|
|
|
def test_default_values(self) -> None:
|
|
"""Test default setting values without .env file influence."""
|
|
settings = APISettings(_env_file=None)
|
|
|
|
assert settings.api_host == "0.0.0.0"
|
|
assert settings.api_port == 8000
|
|
assert settings.database_url == "sqlite:///./meshcore.db"
|
|
assert settings.api_read_key is None
|
|
assert settings.api_admin_key is None
|
|
|
|
|
|
class TestWebSettings:
|
|
"""Tests for WebSettings."""
|
|
|
|
def test_default_values(self) -> None:
|
|
"""Test default setting values without .env file influence."""
|
|
settings = WebSettings(_env_file=None)
|
|
|
|
assert settings.web_host == "0.0.0.0"
|
|
assert settings.web_port == 8080
|
|
assert settings.api_base_url == "http://localhost:8000"
|
|
assert settings.network_name == "MeshCore Network"
|
|
assert settings.members_file == "members.json"
|