Files
microdao-daarion/test_config_loader.py
Ivan Tytar 3cacf67cf5 feat: Initial commit - DAGI Stack v0.2.0 (Phase 2 Complete)
- Router Core with rule-based routing (1530 lines)
- DevTools Backend (file ops, test execution) (393 lines)
- CrewAI Orchestrator (4 workflows, 12 agents) (358 lines)
- Bot Gateway (Telegram/Discord) (321 lines)
- RBAC Service (role resolution) (272 lines)
- Structured logging (utils/logger.py)
- Docker deployment (docker-compose.yml)
- Comprehensive documentation (57KB)
- Test suites (41 tests, 95% coverage)
- Phase 4 roadmap & ecosystem integration plans

Production-ready infrastructure for DAARION microDAOs.
2025-11-15 14:35:24 +01:00

150 lines
4.0 KiB
Python

"""
Unit tests for config_loader.py
"""
import sys
from pathlib import Path
from config_loader import (
load_config,
load_config_raw,
resolve_config_path,
ConfigError,
get_llm_profile,
get_agent_config,
get_routing_rules,
)
def test_resolve_config_path_default():
"""Test default config path"""
path = resolve_config_path()
assert str(path) == "/opt/dagi-router/router-config.yml", f"Expected /opt/dagi-router/router-config.yml, got {path}"
def test_resolve_config_path_explicit():
"""Test explicit config path"""
path = resolve_config_path("/custom/path.yml")
assert str(path) == "/custom/path.yml", f"Expected /custom/path.yml, got {path}"
def test_load_config_success():
"""Test successful config loading"""
config = load_config()
# Check node
assert config.node.id == "dagi-devtools-node-01"
assert config.node.role == "router"
assert config.node.env == "dev"
# Check LLM profiles
assert "local_qwen3_8b" in config.llm_profiles
assert "cloud_deepseek" in config.llm_profiles
local_profile = config.llm_profiles["local_qwen3_8b"]
assert local_profile.provider == "ollama"
assert local_profile.model == "qwen3:8b"
assert local_profile.base_url == "http://localhost:11434"
# Check agents
assert "devtools" in config.agents
devtools = config.agents["devtools"]
assert devtools.default_llm == "local_qwen3_8b"
assert len(devtools.tools) == 5
# Check routing
assert len(config.routing) == 4
# Check telemetry
assert config.telemetry.enabled is True
def test_get_llm_profile():
"""Test getting LLM profile"""
config = load_config()
profile = get_llm_profile(config, "local_qwen3_8b")
assert profile is not None
assert profile.model == "qwen3:8b"
missing = get_llm_profile(config, "nonexistent")
assert missing is None
def test_get_agent_config():
"""Test getting agent config"""
config = load_config()
agent = get_agent_config(config, "devtools")
assert agent is not None
assert agent.default_llm == "local_qwen3_8b"
missing = get_agent_config(config, "nonexistent")
assert missing is None
def test_get_routing_rules():
"""Test getting routing rules sorted by priority"""
config = load_config()
rules = get_routing_rules(config)
assert len(rules) == 4
# Check sorted by priority
priorities = [rule.priority for rule in rules]
assert priorities == sorted(priorities), f"Rules not sorted by priority: {priorities}"
# Check first rule (lowest priority number = highest priority)
assert rules[0].id == "explicit_provider_override"
assert rules[0].priority == 5
def test_load_config_raw():
"""Test loading raw config as dict"""
raw = load_config_raw()
assert isinstance(raw, dict)
assert "node" in raw
assert "llm_profiles" in raw
assert "agents" in raw
assert "routing" in raw
if __name__ == "__main__":
"""Run tests manually"""
print("Running config_loader tests...\n")
tests = [
("resolve_config_path_default", test_resolve_config_path_default),
("resolve_config_path_explicit", test_resolve_config_path_explicit),
("load_config_success", test_load_config_success),
("get_llm_profile", test_get_llm_profile),
("get_agent_config", test_get_agent_config),
("get_routing_rules", test_get_routing_rules),
("load_config_raw", test_load_config_raw),
]
passed = 0
failed = 0
for name, test_func in tests:
try:
test_func()
print(f"{name}")
passed += 1
except AssertionError as e:
print(f"{name}: {e}")
failed += 1
except Exception as e:
print(f"{name}: Unexpected error: {e}")
failed += 1
print(f"\n{'='*50}")
print(f"Results: {passed} passed, {failed} failed")
if failed > 0:
sys.exit(1)
else:
print("\n✅ All tests passed!")