Statistica: pannello esiti, note, campi e allegati dei task per sessione, proxy e traduzioni (#58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NABedeMX43pyXZbDNUgA5B
This commit is contained in:
@@ -130,3 +130,40 @@ class TestRunsProxy:
|
||||
mock_api_client.get.return_value = {"total": 1}
|
||||
logged_in_client.get("/statistics/api/summary?recipe_id=1&production_run_id=5")
|
||||
assert mock_api_client.get.call_args.kwargs["params"]["production_run_id"] == "5"
|
||||
|
||||
|
||||
class TestRunTaskResultsProxy:
|
||||
"""#58: esiti dei task e allegati della sessione."""
|
||||
|
||||
def test_task_results_proxy(self, logged_in_client, mock_api_client):
|
||||
payload = {"run_id": 5, "counts": {"ok": 1, "nok": 0, "done": 0}, "results": []}
|
||||
mock_api_client.get.return_value = payload
|
||||
resp = logged_in_client.get("/statistics/api/runs/5/task-results")
|
||||
assert resp.status_code == 200
|
||||
assert resp.get_json() == payload
|
||||
assert mock_api_client.get.call_args.args[0] == "/api/statistics/runs/5/task-results"
|
||||
|
||||
def test_task_results_proxy_relays_error(self, logged_in_client, mock_api_client):
|
||||
mock_api_client.get.return_value = {"error": True, "detail": "x", "status_code": 404}
|
||||
resp = logged_in_client.get("/statistics/api/runs/9/task-results")
|
||||
assert resp.status_code == 404
|
||||
assert resp.get_json()["error"] is True
|
||||
|
||||
def test_file_proxy_serves_task_results_only(self, logged_in_client):
|
||||
from unittest.mock import patch
|
||||
from flask import Response
|
||||
with patch("blueprints.statistics.proxy_file",
|
||||
return_value=Response("img", status=200)) as pf:
|
||||
ok = logged_in_client.get("/statistics/api/files/task_results/a.jpg")
|
||||
assert ok.status_code == 200
|
||||
pf.assert_called_once_with("task_results/a.jpg")
|
||||
for bad in ("statistics/x", "task_results/../statistics/x", "../etc/passwd"):
|
||||
assert logged_in_client.get(f"/statistics/api/files/{bad}").status_code == 404
|
||||
assert pf.call_count == 1 # i percorsi rifiutati non arrivano al proxy
|
||||
|
||||
def test_dashboard_has_task_results_panel(self, logged_in_client, mock_api_client):
|
||||
mock_api_client.get.return_value = {"items": [], "total": 0, "pages": 1}
|
||||
html = logged_in_client.get("/statistics/dashboard").get_data(as_text=True)
|
||||
assert 'id="run-task-results"' in html
|
||||
assert "loadTaskResults" in html
|
||||
assert "/statistics/api/runs/" in html
|
||||
|
||||
Reference in New Issue
Block a user