From d8f673a31fea234fb333995034bdc6e21e83abf5 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Wed, 22 Jul 2026 12:56:55 +0000 Subject: [PATCH] =?UTF-8?q?Fail=20loudly=20when=20PasHub=20truncates=20the?= =?UTF-8?q?=20evidence=20list=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- backend/pashub_fetcher/pashub_client.py | 4 ++++ .../pashub_fetcher/tests/test_pashub_client.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/backend/pashub_fetcher/pashub_client.py b/backend/pashub_fetcher/pashub_client.py index 024da8464..11cf403c7 100644 --- a/backend/pashub_fetcher/pashub_client.py +++ b/backend/pashub_fetcher/pashub_client.py @@ -41,6 +41,10 @@ class UnauthorizedError(Exception): pass +class TruncatedEvidenceListError(Exception): + pass + + class PashubClient: def __init__(self, token: str): diff --git a/backend/pashub_fetcher/tests/test_pashub_client.py b/backend/pashub_fetcher/tests/test_pashub_client.py index 79257bf58..885b4cc3b 100644 --- a/backend/pashub_fetcher/tests/test_pashub_client.py +++ b/backend/pashub_fetcher/tests/test_pashub_client.py @@ -12,6 +12,7 @@ from backend.pashub_fetcher.pashub_client import ( DownloadedFiles, PashubClient, RdSapSummary, + TruncatedEvidenceListError, UnauthorizedError, ) @@ -377,3 +378,17 @@ def test_get_evidence_list_requests_a_single_large_page() -> None: "pageIndex": 0, "pageSize": 100, } + + +def test_get_evidence_list_raises_when_response_is_truncated() -> None: + # Arrange + client = make_client() + payload = { + "results": [make_evidence_item(f"id-{i}") for i in range(100)], + "totalItemCount": 250, + } + client.session.get = MagicMock(return_value=make_response(payload=payload)) + + # Act / Assert + with pytest.raises(TruncatedEvidenceListError, match=r"100 of 250"): + client._get_evidence_list("job-1")