"""Integration tests suite.""" import pytest from tests.integration.conftest import ( create_schedule_attachment_fixture, ows_abacus_schedule_api_client, ) @pytest.mark.jira('ACC-5491') def test_get_schedule_attachments_by_schedule_id(basic_headers, clear_db): """GET /schedule/{schedule_id}/schedule-attachments.""" ows_abacus_schedule_client = ows_abacus_schedule_api_client(basic_headers) schedule_body = { 'schedule_name': 'test_name', 'conditions': None, 'target_type': 'contributor', 'target_id': '1234-1234-1234-1234', } res_post = ows_abacus_schedule_client.post_schedule(schedule_body) assert res_post.status_code == 201 schedule_id = res_post.json()['schedule_id'] create_schedule_attachment_fixture() res_get = ows_abacus_schedule_client.get_schedule_attachments_by_schedule_id( schedule_id ) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 1 @pytest.mark.jira('PLATFORM-4483') def test_get_schedule_attachments_by_schedule_id_authorization( auth_headers: dict[str, str], unauthorized_headers: dict[str, str], create_schedule_fixture: None, ) -> None: """Test authorization for GET /schedule//schedule-attachments.""" create_schedule_attachment_fixture() authorized_client = ows_abacus_schedule_api_client(auth_headers) # Id of 1 defined in create_schedule_fixture res = authorized_client.get_schedule_attachments_by_schedule_id(1) assert res.status_code == 200 assert len(res.json()['items']) == 1 # Another id of 1 defined in create_schedule_attachment_fixture assert res.json()['items'][0]['schedule_attachment_id'] == 1 unauthorized_client = ows_abacus_schedule_api_client(unauthorized_headers) res = unauthorized_client.get_schedule_attachments_by_schedule_id(1) assert res.status_code == 403 assert res.json()['message'] == 'User is forbidden' @pytest.mark.jira('ACC-5491') def test_get_schedule_attachments_by_attachment_id(basic_headers, clear_db): """GET /schedule-attachment/{schedule_attachment_id}.""" ows_abacus_schedule_client = ows_abacus_schedule_api_client(basic_headers) schedule_body = { 'schedule_name': 'test_name', 'conditions': None, 'target_type': 'contributor', 'target_id': '1234-1234-1234-1234', } res_post = ows_abacus_schedule_client.post_schedule(schedule_body) assert res_post.status_code == 201 create_schedule_attachment_fixture() attachment_id = 1 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_attachment_id( attachment_id ) assert res_get.status_code == 200 assert res_get.json()['schedule_attachment_id'] == attachment_id @pytest.mark.jira('ACC-5491') def test_delete_schedule_attachments_by_attachment_id(basic_headers, clear_db): """DELETE /schedule-attachment/{schedule_attachment_id}.""" ows_abacus_schedule_client = ows_abacus_schedule_api_client(basic_headers) schedule_body = { 'schedule_name': 'test_name', 'conditions': None, 'target_type': 'contributor', 'target_id': '1234-1234-1234-1234', } res_post = ows_abacus_schedule_client.post_schedule(schedule_body) assert res_post.status_code == 201 schedule_id = res_post.json()['schedule_id'] create_schedule_attachment_fixture() attachment_id = 1 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_schedule_id( schedule_id ) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 1 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_attachment_id( attachment_id ) assert res_get.status_code == 200 assert res_get.json()['schedule_id'] == schedule_id res_delete = ( ows_abacus_schedule_client.delete_schedule_attachments_by_attachment_id( attachment_id ) ) assert res_delete.status_code == 204 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_schedule_id( schedule_id ) assert len(res_get.json()['items']) == 0 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_attachment_id( attachment_id ) assert res_get.status_code == 404 @pytest.mark.jira('ACC-5611') def test_put_schedule_attachments_by_attachment_id_and_target(basic_headers, clear_db): """PUT /schedule/{schedule_id}/{target_type}/schedule-attachments/.""" ows_abacus_schedule_client = ows_abacus_schedule_api_client(basic_headers) schedule_body = { 'schedule_name': 'test_name', 'conditions': None, 'target_type': 'contributor', 'target_id': '1234-1234-1234-1234', } res_post = ows_abacus_schedule_client.post_schedule(schedule_body) assert res_post.status_code == 201 schedule_id = res_post.json()['schedule_id'] put_body_assign = { 'assigned_target_ids': [ '1bcab370-77b2-4747-9d72-2c4ec90e7753', '4bcab378-77b2-4747-9d72-2c4ec90e7753', ] } res_put = ows_abacus_schedule_client.put_schedule_attachments_by_id_and_target( schedule_id, 'contribution', put_body_assign ) assert res_put.status_code == 200 assert res_put.text == 'Schedule Attachments created/deleted successfully.' res_get = ows_abacus_schedule_client.get_schedule_attachments_by_schedule_id( schedule_id ) assert res_get.status_code == 200 assert put_body_assign['assigned_target_ids'][0] in str(res_get.json()['items']) assert put_body_assign['assigned_target_ids'][1] in str(res_get.json()['items']) put_body_unassign = { 'unassigned_target_ids': ['1bcab370-77b2-4747-9d72-2c4ec90e7753'] } res_put = ows_abacus_schedule_client.put_schedule_attachments_by_id_and_target( schedule_id, 'contribution', put_body_unassign ) assert res_put.status_code == 200 res_get = ows_abacus_schedule_client.get_schedule_attachments_by_schedule_id( schedule_id ) assert res_get.status_code == 200 assert put_body_assign['assigned_target_ids'][1] in str(res_get.json()['items']) assert put_body_unassign['unassigned_target_ids'][0] not in str( res_get.json()['items'] )