53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
import tempfile
|
|
from pathlib import Path
|
|
from src.config import AppConfig
|
|
|
|
|
|
def test_default_config():
|
|
cfg = AppConfig.load()
|
|
assert cfg.jellyfin.client_name == "Jellyfin HTPC Client"
|
|
assert cfg.player.hwdec == "auto"
|
|
assert cfg.kodi_rpc.http_port == 8080
|
|
assert cfg.web_api.port == 8097
|
|
|
|
|
|
def test_custom_yaml_config():
|
|
yaml_content = """
|
|
jellyfin:
|
|
server_url: "https://media.lan"
|
|
username: "myuser"
|
|
password: "mypassword"
|
|
player:
|
|
hwdec: "vaapi"
|
|
fullscreen: false
|
|
kodi_rpc:
|
|
http_port: 8088
|
|
"""
|
|
with tempfile.NamedTemporaryFile("w", suffix=".yaml", delete=False) as f:
|
|
f.write(yaml_content)
|
|
f_path = f.name
|
|
|
|
try:
|
|
cfg = AppConfig.load(f_path)
|
|
assert cfg.jellyfin.server_url == "https://media.lan"
|
|
assert cfg.jellyfin.username == "myuser"
|
|
assert cfg.player.hwdec == "vaapi"
|
|
assert cfg.player.fullscreen is False
|
|
assert cfg.kodi_rpc.http_port == 8088
|
|
finally:
|
|
Path(f_path).unlink()
|
|
|
|
|
|
def test_env_var_overrides(monkeypatch):
|
|
monkeypatch.setenv("JELLYFIN_SERVER_URL", "https://override.lan")
|
|
monkeypatch.setenv("JELLYFIN_USERNAME", "envuser")
|
|
monkeypatch.setenv("MPV_VO", "null")
|
|
monkeypatch.setenv("MPV_FULLSCREEN", "true")
|
|
|
|
cfg = AppConfig.load()
|
|
assert cfg.jellyfin.server_url == "https://override.lan"
|
|
assert cfg.jellyfin.username == "envuser"
|
|
assert cfg.player.vo == "null"
|
|
assert cfg.player.fullscreen is True
|
|
|