54 lines
1.9 KiB
Python
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
|