"""Integration test for POST /contracts/dataloader/ .""" import pytest from abacus_contract.tests.integration.conftest import ows_abacus_contract_api_client from abacus_contract.tests.integration.consts.constants import BAD_SEED_ACCOUNT_ID from abacus_contract.tests.integration.utils.generic_helper import ( create_account_and_contract, ) @pytest.mark.jira('ACC-8171', 'PLATFORM-4471') def test_post_contracts_dataloader(auth_headers: dict[str, str]) -> None: """POST /contracts/dataloader/ with admin and read-only headers.""" # create an account and contract using the admin headers. contract_id, contract_body, _ = create_account_and_contract( account_id=BAD_SEED_ACCOUNT_ID ) contract_name = contract_body['contract_name'] # test the dataloader endpoint with the fixture headers (admin and readonly). client = ows_abacus_contract_api_client(auth_headers) res_post = client.post_contracts_dataloader( [contract_id], ) assert res_post.status_code == 200 item = res_post.json()[0]['data'] assert item['contract_name'] == contract_name assert item['contract_id'] == contract_id assert item['contract_type'] == contract_body['contract_type'] assert item['account_id'] == contract_body['account_id'] assert ( item['reference_signing_entity_id'] == contract_body['reference_signing_entity_id'] ) assert item['term_start'] == contract_body['term_start'] assert item['term_end'] == contract_body['term_end'] assert item['summary_note'] == contract_body['summary_note'] assert item['general_note'] == contract_body['general_note'] assert 'execution_date' in item assert 'oa_contract_id' in item assert 'sap_created_at' in item assert 'initial_start_date' in item assert 'is_excluded_from_accounting_run' in item @pytest.mark.jira('PLATFORM-4471') def test_post_contracts_dataloader_unauthorized( unauthorized_headers: dict[str, str], ) -> None: """POST /contracts/dataloader/ with unauthorized headers.""" contract_id, contract_body, _ = create_account_and_contract( account_id=BAD_SEED_ACCOUNT_ID ) client = ows_abacus_contract_api_client(unauthorized_headers) result = client.post_contracts_dataloader( [contract_id], ) assert result.status_code == 403 assert result.json() == {'code': 'forbidden', 'message': 'User is forbidden'}