"""Integration tests for DELETE /transfer/job/.""" import requests from .helpers import TIMEOUT, create_job, url class TestDeleteTransferJob: """Tests for DELETE /transfer/job/.""" def test_deletes_queued_job(self, qa_base_url, auth_headers, qa_project): """Returns 204 and cascades — job and products are no longer accessible.""" job = create_job(qa_base_url, auth_headers, qa_project["project_id"]) job_id = job["project_transfer_job_id"] r = requests.delete( url(qa_base_url, f"/transfer/job/{job_id}"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 204 r = requests.get( url(qa_base_url, f"/transfer/job/{job_id}"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 404 r = requests.get( url(qa_base_url, f"/transfer/job/{job_id}/products"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 404 def test_cannot_delete_non_queued_job( self, qa_base_url, auth_headers, qa_project, db_connection): """Returns 400 when attempting to delete a job that is not in QUEUED status.""" job = create_job(qa_base_url, auth_headers, qa_project["project_id"]) job_id = job["project_transfer_job_id"] try: with db_connection.cursor() as cur: cur.execute( "UPDATE project_transfer_job SET status = 'PROCESSING' WHERE job_id = %s", (job_id,)) db_connection.commit() r = requests.delete( url(qa_base_url, f"/transfer/job/{job_id}"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 400 finally: with db_connection.cursor() as cur: cur.execute( "DELETE FROM product_transfer_history WHERE job_id = %s", (job_id,)) cur.execute( "DELETE FROM project_transfer_job WHERE job_id = %s", (job_id,)) db_connection.commit() def test_nonexistent_returns_404(self, qa_base_url, auth_headers): """Returns 404 for a non-existent job.""" r = requests.delete( url(qa_base_url, "/transfer/job/999999999"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 404