"""Integration tests for contract exclusions endpoints.""" 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.generic_helper import ( create_account_and_contract, ) @pytest.mark.jira('ACC-3738') def test_post_get_put_contract_exclusions( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, ): """POST GET and PUT /contract/{contract_id}/exclusions .""" ows_abacus_contract_client = ows_abacus_contract_api_client(basic_headers) # defined in fixtures in conftest.py contract_id = 1 body_post = {'countries': ['USA', 'CAN'], 'stores': ['123', '456']} res_post = ows_abacus_contract_client.post_contract_exclusions( contract_id, body_post ) assert res_post.status_code == 201 assert res_post.json()['contract_id'] == contract_id assert 'contract_exclusion_id' in res_post.json() assert res_post.json()['exclusions'] == body_post res_get = ows_abacus_contract_client.get_contract_exclusions(contract_id) assert res_get.status_code == 200 assert res_get.json()['contract_id'] == contract_id assert 'contract_exclusion_id' in res_get.json() assert res_get.json()['exclusions'] == body_post body_put = {'countries': ['UKR', 'PL'], 'stores': ['321', '654']} res_put = ows_abacus_contract_client.put_contract_exclusions(contract_id, body_put) assert res_put.status_code == 200 assert res_put.json()['contract_id'] == contract_id assert 'contract_exclusion_id' in res_put.json() assert res_put.json()['exclusions'] == body_put @pytest.mark.jira('PLATFORM-4340') def test_get_contract_exclusions_by_contract_id( admin_headers: dict[str, str], unauthorized_headers: dict[str, str], auth_headers: dict[str, str], ) -> None: """GET /contract//exclusions.""" # create an account and contract. the contract will have a default RUS exclusion. contract_id, _, _ = create_account_and_contract(account_id=TEST_ACCOUNT_ID) # get the terms using the auth headers. endpoint = '{}/contract/{}/exclusions'.format(QA_BASE_URL, contract_id) response_get_exclusions = requests.get(endpoint, headers=auth_headers) assert response_get_exclusions.status_code == 200 assert response_get_exclusions.json() == { 'contract_exclusion_id': 1, 'contract_id': 1, 'exclusions': {'countries': ['RUS'], 'stores': []}, } result = requests.get(endpoint, headers=unauthorized_headers) assert result.status_code == 403 assert result.json()['message'] == 'User is forbidden'