Skip to content

Commit 77d09e7

Browse files
committed
Address reviewer feedback and CI errors: Python version, error response test, Redis CI service and artefacts
1 parent 624d2ca commit 77d09e7

3 files changed

Lines changed: 158 additions & 7 deletions

File tree

api-server/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dev = [
2222
"ruff>=0.12.2",
2323
"pytest>=8.0.0",
2424
"httpx>=0.27.0",
25+
"pytest-cov>=5.0.0"
2526
]
2627

2728

api-server/tests/test_unhandled_exceptions_middleware.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,55 @@
44
from fastapi.testclient import TestClient
55
from app.middlewares.unhandled_exceptions_middleware import UnhandledExceptionsMiddleware
66

7-
# Endpoint that will always raise an error to test error handling
7+
# Handlers for various exception types
8+
9+
# 1. RuntimeError
810
async def fail(request: Request):
911
raise RuntimeError("boom")
1012

11-
# Endpoint for a healthy request
13+
# 2. ValueError
14+
async def fail_value_error(request: Request):
15+
raise ValueError("Invalid value test")
16+
17+
# 3. KeyError
18+
async def fail_key_error(request: Request):
19+
raise KeyError("Missing key test")
20+
21+
# 4. Healthy endpoint
1222
async def ok(request: Request):
1323
return JSONResponse({"ok": True})
1424

1525
@pytest.fixture
1626
def client():
1727
app = FastAPI()
18-
app.add_middleware(UnhandledExceptionsMiddleware) # Only exception middleware
28+
app.add_middleware(UnhandledExceptionsMiddleware)
1929
app.add_api_route("/fail", fail, methods=["GET"])
30+
app.add_api_route("/fail_value_error", fail_value_error, methods=["GET"])
31+
app.add_api_route("/fail_key_error", fail_key_error, methods=["GET"])
2032
app.add_api_route("/ok", ok, methods=["GET"])
2133
return TestClient(app)
2234

23-
def test_exception_returns_expected_json(client):
35+
def test_runtime_error_returns_expected_json(client):
2436
resp = client.get("/fail")
2537
assert resp.status_code == 500
2638
response_json = resp.json()
39+
assert response_json.get("success") is False
40+
assert "detail" in response_json
41+
assert "server error" in response_json["detail"].lower()
42+
43+
def test_value_error_returns_expected_json(client):
44+
resp = client.get("/fail_value_error")
45+
assert resp.status_code == 500
46+
response_json = resp.json()
47+
assert response_json.get("success") is False
48+
assert "detail" in response_json
49+
assert "server error" in response_json["detail"].lower()
50+
51+
def test_key_error_returns_expected_json(client):
52+
resp = client.get("/fail_key_error")
53+
assert resp.status_code == 500
54+
response_json = resp.json()
55+
assert response_json.get("success") is False
2756
assert "detail" in response_json
2857
assert "server error" in response_json["detail"].lower()
2958

0 commit comments

Comments
 (0)