fix(scores,reports): fix scores/history 500, disable unfinished report generation cleanly
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
- /scores/history was annotated -> dict but the service actually returns a list, so FastAPI's response validation raised an unhandled exception, surfacing as a raw 500 on every call. Fixed the annotation. - The professional_reports.py endpoints (PDF/DOCX/HTML generation) back a Reports feature the frontend already hides entirely (unfinished). Hitting them directly fell through to whatever the render pipeline raised (e.g. missing weasyprint system deps) as an unhelpful 500. Added a REPORTS_ENABLED setting (off by default) so they now return a clean 503 instead, without removing the routes or their test coverage.
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
"""GET /scores/history returns a list of weekly data points — regression
|
||||
test for a response-model mismatch (endpoint annotated -> dict while the
|
||||
service actually returns a list, causing a raw 500 on serialization)."""
|
||||
|
||||
|
||||
def test_scores_history_returns_a_list(client, auth_headers):
|
||||
resp = client.get("/api/v1/scores/history", headers=auth_headers)
|
||||
assert resp.status_code == 200, resp.text
|
||||
body = resp.json()
|
||||
assert isinstance(body, list)
|
||||
|
||||
|
||||
def test_scores_history_accepts_all_periods(client, auth_headers):
|
||||
for period in ("30d", "90d", "1y"):
|
||||
resp = client.get(
|
||||
"/api/v1/scores/history", params={"period": period}, headers=auth_headers,
|
||||
)
|
||||
assert resp.status_code == 200, resp.text
|
||||
assert isinstance(resp.json(), list)
|
||||
Reference in New Issue
Block a user