From a384b87d8f0a862751b6340ce3c4db89d79318da Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 7 Jul 2026 15:33:16 +0000 Subject: [PATCH] =?UTF-8?q?Surface=20both=20canceljob=20failure=20shapes?= =?UTF-8?q?=20as=20verbatim=20rejections=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 --- ..._relay_canceljob_errordetails_response.xml | 5 +++ ...ri_relay_canceljob_relayerror_response.xml | 6 +++ tests/infrastructure/abri/test_abri_client.py | 43 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 tests/abri/abri_relay_canceljob_errordetails_response.xml create mode 100644 tests/abri/abri_relay_canceljob_relayerror_response.xml diff --git a/tests/abri/abri_relay_canceljob_errordetails_response.xml b/tests/abri/abri_relay_canceljob_errordetails_response.xml new file mode 100644 index 000000000..674e0bfa9 --- /dev/null +++ b/tests/abri/abri_relay_canceljob_errordetails_response.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/abri/abri_relay_canceljob_relayerror_response.xml b/tests/abri/abri_relay_canceljob_relayerror_response.xml new file mode 100644 index 000000000..225563172 --- /dev/null +++ b/tests/abri/abri_relay_canceljob_relayerror_response.xml @@ -0,0 +1,6 @@ + + + false + RelayError + Job_no 1019905 is invalid. Job not found. + diff --git a/tests/infrastructure/abri/test_abri_client.py b/tests/infrastructure/abri/test_abri_client.py index 5def9f129..7c1d6ff99 100644 --- a/tests/infrastructure/abri/test_abri_client.py +++ b/tests/infrastructure/abri/test_abri_client.py @@ -129,6 +129,49 @@ def test_log_job_sends_the_recorded_logjob_envelope_to_the_relay_endpoint( ) +# --- abandon_job: rejection (canceljob's own error-details shape) --- + + +def test_abandon_job_returns_rejection_from_the_canceljob_error_details_document( + client: AbriClient, mock_session: MagicMock +) -> None: + # Arrange: canceljob signals failure as an empty cancellation collection + # carrying an ErrorDetails element, not the shared failure envelope. + mock_session.post.return_value.content = _load_fixture( + "abri_relay_canceljob_errordetails_response.xml" + ) + + # Act + result = client.abandon_job(_spec_example_abandon_request()) + + # Assert + assert result == AbriRequestRejected( + code="RelayError", + message="Job_no 1019905 is invalid. Job not found.", + ) + + +# --- abandon_job: rejection (the shared failure envelope) --- + + +def test_abandon_job_returns_rejection_from_the_shared_failure_envelope( + client: AbriClient, mock_session: MagicMock +) -> None: + # Arrange + mock_session.post.return_value.content = _load_fixture( + "abri_relay_canceljob_relayerror_response.xml" + ) + + # Act + result = client.abandon_job(_spec_example_abandon_request()) + + # Assert + assert result == AbriRequestRejected( + code="RelayError", + message="Job_no 1019905 is invalid. Job not found.", + ) + + # --- log_job: rejection ---