refactor: share progress parameter validation

This commit is contained in:
Dariusz L
2026-08-06 16:23:21 +02:00
parent 348f7ed8e0
commit 25c92761f7
2 changed files with 27 additions and 2 deletions
+6 -2
View File
@@ -64,6 +64,10 @@ def create_route_helpers(web, logger, load_settings, hash_calculation_cancelled)
return decorator
def _get_required_match_param(request, param_name):
value = request.match_info.get(param_name, "").strip()
return value or None
def get_progress_response(
tracker,
request,
@@ -72,7 +76,7 @@ def create_route_helpers(web, logger, load_settings, hash_calculation_cancelled)
not_found_status=200,
found_wrapper=None,
):
job_id = request.match_info.get(param_name, "").strip()
job_id = _get_required_match_param(request, param_name)
if not job_id:
return web.json_response(
{"error": f"{param_name} is required"},
@@ -93,7 +97,7 @@ def create_route_helpers(web, logger, load_settings, hash_calculation_cancelled)
param_name="progress_id",
cancel_message="Cancelled",
):
job_id = request.match_info.get(param_name, "").strip()
job_id = _get_required_match_param(request, param_name)
if not job_id:
return web.json_response(
{"error": f"{param_name} is required"},
+21
View File
@@ -170,6 +170,27 @@ def test_progress_helpers_validate_ids_and_wrap_results():
tracker.mark_cancelled.assert_called_once_with("job-1", "Cancelled")
@pytest.mark.parametrize("helper_index", [1, 2])
def test_progress_helpers_reject_blank_ids(helper_index):
(
_,
get_progress_response,
cancel_progress_response,
*_rest,
), _ = _build_helpers()
tracker = MagicMock()
request = SimpleNamespace(match_info={"analysis_id": " "})
helper = (get_progress_response, cancel_progress_response)[helper_index - 1]
response = helper(tracker, request, param_name="analysis_id")
assert response.status == 400
assert response.text == '{"error": "analysis_id is required"}'
tracker.cleanup.assert_not_called()
tracker.get.assert_not_called()
tracker.mark_cancelled.assert_not_called()
def test_background_helper_reports_unexpected_task_errors():
(_, _, _, run_in_background_thread, *_rest), logger = _build_helpers()
tracker = MagicMock()