"""Integration tests for GET /transfer/jobs.""" import requests from .helpers import ( DESTINATION_VENDOR_ID, ORIGINATING_VENDOR_ID, TIMEOUT, create_job, delete_job, url, ) class TestListTransferJobs: """Tests for GET /transfer/jobs.""" def test_returns_paginated_list(self, qa_base_url, auth_headers): """Returns 200 with items and total_count.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, timeout=TIMEOUT) assert r.status_code == 200 body = r.json() assert "items" in body assert "total_count" in body assert isinstance(body["items"], list) def test_filters_by_originating_vendor(self, qa_base_url, auth_headers): """Returns 200 when filtering by originating_vendor_id.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"originating_vendor_id": ORIGINATING_VENDOR_ID}, timeout=TIMEOUT, ) assert r.status_code == 200 def test_filters_by_status(self, qa_base_url, auth_headers): """Returns 200 when filtering by status.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"status": "QUEUED"}, timeout=TIMEOUT, ) assert r.status_code == 200 body = r.json() assert all(item["status"] == "QUEUED" for item in body["items"]) def test_filters_by_destination_vendor(self, qa_base_url, auth_headers): """Returns 200 when filtering by destination_vendor_id.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"destination_vendor_id": DESTINATION_VENDOR_ID}, timeout=TIMEOUT, ) assert r.status_code == 200 def test_filters_by_project_id(self, qa_base_url, auth_headers, qa_project): """Returns 200 and only items for the given project_id.""" project_id = qa_project["project_id"] job = create_job(qa_base_url, auth_headers, project_id=project_id) try: r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"project_id": project_id}, timeout=TIMEOUT, ) assert r.status_code == 200 body = r.json() assert len(body["items"]) >= 1 assert all(item["project_id"] == project_id for item in body["items"]) finally: delete_job(qa_base_url, auth_headers, job["project_transfer_job_id"]) def test_invalid_limit_returns_400(self, qa_base_url, auth_headers): """Returns 400 when limit is not an integer.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"limit": "notanumber"}, timeout=TIMEOUT, ) assert r.status_code == 400 def test_invalid_project_id_returns_400(self, qa_base_url, auth_headers): """Returns 400 when project_id is not an integer.""" r = requests.get( url(qa_base_url, "/transfer/jobs"), headers=auth_headers, params={"project_id": "notanumber"}, timeout=TIMEOUT, ) assert r.status_code == 400