remove infra.md.example, infra.md is the source of truth
This commit is contained in:
88
ayn-antivirus/tests/test_config.py
Normal file
88
ayn-antivirus/tests/test_config.py
Normal file
@@ -0,0 +1,88 @@
|
||||
"""Tests for configuration loading and environment overrides."""
|
||||
import pytest
|
||||
|
||||
from ayn_antivirus.config import Config
|
||||
from ayn_antivirus.constants import DEFAULT_DASHBOARD_HOST, DEFAULT_DASHBOARD_PORT
|
||||
|
||||
|
||||
def test_default_config():
|
||||
c = Config()
|
||||
assert c.dashboard_port == DEFAULT_DASHBOARD_PORT
|
||||
assert c.dashboard_host == DEFAULT_DASHBOARD_HOST
|
||||
assert c.auto_quarantine is False
|
||||
assert c.enable_yara is True
|
||||
assert c.enable_heuristics is True
|
||||
assert isinstance(c.scan_paths, list)
|
||||
assert isinstance(c.exclude_paths, list)
|
||||
assert isinstance(c.api_keys, dict)
|
||||
|
||||
|
||||
def test_config_env_port_host(monkeypatch):
|
||||
monkeypatch.setenv("AYN_DASHBOARD_PORT", "9999")
|
||||
monkeypatch.setenv("AYN_DASHBOARD_HOST", "127.0.0.1")
|
||||
c = Config()
|
||||
c._apply_env_overrides()
|
||||
assert c.dashboard_port == 9999
|
||||
assert c.dashboard_host == "127.0.0.1"
|
||||
|
||||
|
||||
def test_config_env_auto_quarantine(monkeypatch):
|
||||
monkeypatch.setenv("AYN_AUTO_QUARANTINE", "true")
|
||||
c = Config()
|
||||
c._apply_env_overrides()
|
||||
assert c.auto_quarantine is True
|
||||
|
||||
|
||||
def test_config_scan_path_env(monkeypatch):
|
||||
monkeypatch.setenv("AYN_SCAN_PATH", "/tmp,/var")
|
||||
c = Config()
|
||||
c._apply_env_overrides()
|
||||
assert "/tmp" in c.scan_paths
|
||||
assert "/var" in c.scan_paths
|
||||
|
||||
|
||||
def test_config_max_file_size_env(monkeypatch):
|
||||
monkeypatch.setenv("AYN_MAX_FILE_SIZE", "12345")
|
||||
c = Config()
|
||||
c._apply_env_overrides()
|
||||
assert c.max_file_size == 12345
|
||||
|
||||
|
||||
def test_config_load_missing_file():
|
||||
"""Loading from non-existent file returns defaults."""
|
||||
c = Config.load("/nonexistent/path/config.yaml")
|
||||
assert c.dashboard_port == DEFAULT_DASHBOARD_PORT
|
||||
assert isinstance(c.scan_paths, list)
|
||||
|
||||
|
||||
def test_config_load_yaml(tmp_path):
|
||||
"""Loading a valid YAML config file picks up values."""
|
||||
cfg_file = tmp_path / "config.yaml"
|
||||
cfg_file.write_text(
|
||||
"scan_paths:\n - /opt\nauto_quarantine: true\ndashboard_port: 8888\n"
|
||||
)
|
||||
c = Config.load(str(cfg_file))
|
||||
assert c.scan_paths == ["/opt"]
|
||||
assert c.auto_quarantine is True
|
||||
assert c.dashboard_port == 8888
|
||||
|
||||
|
||||
def test_config_env_overrides_yaml(tmp_path, monkeypatch):
|
||||
"""Environment variables take precedence over YAML."""
|
||||
cfg_file = tmp_path / "config.yaml"
|
||||
cfg_file.write_text("dashboard_port: 1111\n")
|
||||
monkeypatch.setenv("AYN_DASHBOARD_PORT", "2222")
|
||||
c = Config.load(str(cfg_file))
|
||||
assert c.dashboard_port == 2222
|
||||
|
||||
|
||||
def test_all_fields_accessible():
|
||||
"""Every expected config attribute exists."""
|
||||
c = Config()
|
||||
for attr in [
|
||||
"scan_paths", "exclude_paths", "quarantine_path", "db_path",
|
||||
"log_path", "auto_quarantine", "scan_schedule", "max_file_size",
|
||||
"enable_yara", "enable_heuristics", "enable_realtime_monitor",
|
||||
"dashboard_host", "dashboard_port", "dashboard_db_path", "api_keys",
|
||||
]:
|
||||
assert hasattr(c, attr), f"Missing config attribute: {attr}"
|
||||
Reference in New Issue
Block a user