Files
ai-exchange/tests/unit/test_api_server.py
T
2026-04-24 13:39:01 +08:00

91 lines
2.9 KiB
Python

import os
import unittest
os.environ.setdefault("DATABASE_URL", "postgresql+psycopg://user:pass@localhost:5432/ai_ict_test")
from src.api import route_request
class ApiServerRoutingTests(unittest.TestCase):
def test_routes_health(self) -> None:
status, payload = route_request(
"/health",
{},
dependencies={
"health": lambda: {"ok": True},
"candles": lambda **kwargs: [],
"sessions": lambda **kwargs: [],
"signals": lambda **kwargs: [],
"backtests": lambda **kwargs: [],
},
)
self.assertEqual(status, 200)
self.assertEqual(payload, {"ok": True})
def test_routes_signals_query(self) -> None:
status, payload = route_request(
"/signals",
{"instrument_id": ["1"], "limit": ["2"]},
dependencies={
"health": lambda: {"ok": True},
"candles": lambda **kwargs: [],
"sessions": lambda **kwargs: [],
"signals": lambda **kwargs: [{"id": 1}, {"id": 2}],
"backtests": lambda **kwargs: [],
},
)
self.assertEqual(status, 200)
self.assertEqual(payload["items"], [{"id": 1}, {"id": 2}])
def test_routes_backtests_without_instrument_filter(self) -> None:
status, payload = route_request(
"/backtests",
{"limit": ["1"]},
dependencies={
"health": lambda: {"ok": True},
"candles": lambda **kwargs: [],
"sessions": lambda **kwargs: [],
"signals": lambda **kwargs: [],
"backtests": lambda **kwargs: [{"id": 9}],
},
)
self.assertEqual(status, 200)
self.assertEqual(payload["items"], [{"id": 9}])
def test_rejects_missing_required_query_param(self) -> None:
with self.assertRaises(ValueError):
route_request(
"/signals",
{},
dependencies={
"health": lambda: {"ok": True},
"candles": lambda **kwargs: [],
"sessions": lambda **kwargs: [],
"signals": lambda **kwargs: [],
"backtests": lambda **kwargs: [],
},
)
def test_returns_not_found_for_unknown_route(self) -> None:
status, payload = route_request(
"/unknown",
{},
dependencies={
"health": lambda: {"ok": True},
"candles": lambda **kwargs: [],
"sessions": lambda **kwargs: [],
"signals": lambda **kwargs: [],
"backtests": lambda **kwargs: [],
},
)
self.assertEqual(status, 404)
self.assertEqual(payload["error"], "not_found")
if __name__ == "__main__":
unittest.main()