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 ---