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()