arcadiasuite/server/python/test_miroflow_service.py

54 lines
1.9 KiB
Python

"""Tests for miroflow_service.py -- REQ-3.1 to REQ-3.4"""
import sys
import os
MIROFLOW_MODULE_PATH = os.path.join(
os.path.dirname(__file__), "../modules/miroflow"
)
sys.path.insert(0, os.path.abspath(MIROFLOW_MODULE_PATH))
import pytest
from httpx import AsyncClient, ASGITransport
from miroflow_service import app, make_agent_cfg, AnalyzeRequest, AnalyzeResponse
@pytest.mark.asyncio
async def test_health():
async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test") as c:
resp = await c.get("/health")
assert resp.status_code == 200
data = resp.json()
assert data["status"] == "ok"
assert data["service"] == "miroflow"
def test_statistician_config():
cfg = make_agent_cfg("statistician")
llm = cfg["llm"]
assert llm["model_name"] == "deepseek-r1:14b"
assert llm["base_url"].endswith("/v1")
def test_fiscal_auditor_config():
cfg = make_agent_cfg("fiscal_auditor")
llm = cfg["llm"]
assert llm["model_name"] == "deepseek-r1:14b"
def test_researcher_config():
cfg = make_agent_cfg("researcher")
llm = cfg["llm"]
assert llm["model_name"] in ("llama3.1:8b", "llama3.2:3b")
@pytest.mark.asyncio
async def test_analyze_request_validation():
async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test") as c:
resp = await c.post("/analyze", json={"agent": "invalid", "task": "test"})
assert resp.status_code == 422
def test_analyze_request_schema():
req = AnalyzeRequest(agent="statistician", task="Analyze this", context={"k":"v"}, tenant_id=1)
assert req.agent == "statistician"
assert req.task == "Analyze this"
assert req.tenant_id == 1
resp = AnalyzeResponse(agent="statistician", model="deepseek-r1:14b", result="r", execution_id="abc", duration_ms=500)
assert resp.agent == "statistician"
assert resp.model == "deepseek-r1:14b"
assert resp.duration_ms == 500