"""Integration tests for contract parties endpoints.""" import uuid import pytest import requests from abacus_contract.tests.integration.conftest import ows_abacus_contract_api_client from abacus_contract.tests.integration.consts.api import QA_BASE_URL from abacus_contract.tests.integration.consts.constants import TEST_ACCOUNT_ID from abacus_contract.tests.integration.utils import generic_helper @pytest.mark.parametrize('target_type', ['contributor', 'label']) @pytest.mark.jira('ACC-6067') def test_post_get_delete_contract_party( basic_headers: dict[str, str], create_account_fixture, create_contract_fixture, create_account_contract_fixture, target_type: str, ) -> None: """POST GET DELETE /contract-party endpoints.""" ows_abacus_contract_client = ows_abacus_contract_api_client(basic_headers) contract_id = 1 target_id = str(uuid.uuid4()) post_body = {'contract_id': 1, 'target_id': target_id, 'target_type': target_type} res_post = ows_abacus_contract_client.post_contract_party(post_body) assert res_post.status_code == 201 res_get = ows_abacus_contract_client.get_contract_parties_by_contract_id( contract_id ) assert res_get.status_code == 200 expected_results = post_body expected_results['contract_party_id'] = 1 assert res_get.json()['items'][0] == expected_results res_get = ows_abacus_contract_client.get_contract_parties_by_type( contract_id, target_type ) assert res_get.status_code == 200 expected_results = post_body expected_results['contract_party_id'] = 1 assert res_get.json()['items'][0] == expected_results res_delete = ows_abacus_contract_client.delete_contract_party(1) assert res_delete.status_code == 204 res_get = ows_abacus_contract_client.get_contract_parties_by_contract_id( contract_id ) assert res_get.status_code == 200 assert res_get.json()['total_count'] == 0 assert len(res_get.json()['items']) == 0 @pytest.mark.jira('PLATFORM-4469') def test_get_contract_parties( auth_headers: dict[str, str], admin_headers: dict[str, str], ) -> None: """GET /contract///parties/ with unauthorized user.""" contract_id, _, _ = generic_helper.create_account_and_contract( account_id=TEST_ACCOUNT_ID ) target_id = str(uuid.uuid4()) target_type = 'contributor' post_body = { 'contract_id': contract_id, 'target_id': target_id, 'target_type': target_type, } endpoint = '{}/contract-party'.format(QA_BASE_URL) requests.post(endpoint, headers=admin_headers, json=post_body) endpoint = '{}/contract/{}/{}/parties/'.format( QA_BASE_URL, contract_id, target_type ) result = requests.get(endpoint, headers=auth_headers) assert result.status_code == 200 assert result.json()['items'][0] == { 'contract_id': 1, 'target_id': target_id, 'target_type': target_type, 'contract_party_id': 1, } @pytest.mark.jira('PLATFORM-4469') def test_get_contract_parties_unauthorized( unauthorized_headers: dict[str, str], ) -> None: """GET /contract///parties/ with unauthorized user.""" contract_id, _, _ = generic_helper.create_account_and_contract() ows_abacus_contract_client = ows_abacus_contract_api_client(unauthorized_headers) res_get = ows_abacus_contract_client.get_contract_parties_by_type( contract_id=contract_id, target_type='contributor' ) assert res_get.status_code == 403 assert res_get.json()['message'] == 'User is forbidden'