Some checks failed
Lint & Test / test (push) Failing after 1m33s
All store tests were passing file paths instead of Database objects after the JSON-to-SQLite migration. Updated fixtures to create temp Database instances, rewrote backup e2e tests for binary .db format, and fixed config tests for the simplified StorageConfig.
90 lines
2.5 KiB
Python
90 lines
2.5 KiB
Python
"""Tests for configuration management."""
|
|
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
from wled_controller.config import (
|
|
Config,
|
|
ServerConfig,
|
|
get_config,
|
|
reload_config,
|
|
)
|
|
|
|
|
|
class TestDefaultConfig:
|
|
def test_default_server_values(self):
|
|
config = Config()
|
|
assert config.server.host == "0.0.0.0"
|
|
assert config.server.port == 8080
|
|
assert config.server.log_level == "INFO"
|
|
|
|
def test_default_storage_paths(self):
|
|
config = Config()
|
|
assert config.storage.database_file == "data/ledgrab.db"
|
|
|
|
def test_default_mqtt_disabled(self):
|
|
config = Config()
|
|
assert config.mqtt.enabled is False
|
|
|
|
def test_default_demo_off(self):
|
|
config = Config()
|
|
assert config.demo is False
|
|
|
|
|
|
class TestFromYaml:
|
|
def test_load_from_yaml(self, tmp_path):
|
|
config_data = {
|
|
"server": {"host": "127.0.0.1", "port": 9000},
|
|
"auth": {"api_keys": {"dev": "secret"}},
|
|
}
|
|
config_path = tmp_path / "test_config.yaml"
|
|
with open(config_path, "w") as f:
|
|
yaml.dump(config_data, f)
|
|
|
|
config = Config.from_yaml(config_path)
|
|
assert config.server.host == "127.0.0.1"
|
|
assert config.server.port == 9000
|
|
assert config.auth.api_keys == {"dev": "secret"}
|
|
|
|
def test_load_from_yaml_file_not_found(self):
|
|
with pytest.raises(FileNotFoundError):
|
|
Config.from_yaml("nonexistent.yaml")
|
|
|
|
|
|
class TestEnvironmentVariables:
|
|
def test_env_overrides(self, monkeypatch):
|
|
monkeypatch.setenv("WLED_SERVER__HOST", "192.168.1.1")
|
|
monkeypatch.setenv("WLED_SERVER__PORT", "7000")
|
|
config = Config()
|
|
assert config.server.host == "192.168.1.1"
|
|
assert config.server.port == 7000
|
|
|
|
|
|
class TestServerConfig:
|
|
def test_creation(self):
|
|
sc = ServerConfig(host="localhost", port=8000)
|
|
assert sc.host == "localhost"
|
|
assert sc.port == 8000
|
|
assert sc.log_level == "INFO"
|
|
|
|
|
|
class TestDemoMode:
|
|
def test_demo_rewrites_storage_paths(self):
|
|
config = Config(demo=True)
|
|
assert config.storage.database_file.startswith("data/demo/")
|
|
|
|
def test_non_demo_keeps_original_paths(self):
|
|
config = Config(demo=False)
|
|
assert config.storage.database_file == "data/ledgrab.db"
|
|
|
|
|
|
class TestGlobalConfig:
|
|
def test_get_config_returns_config(self):
|
|
config = get_config()
|
|
assert isinstance(config, Config)
|
|
|
|
def test_reload_config_returns_new_config(self):
|
|
config = reload_config()
|
|
assert isinstance(config, Config)
|