"""Integration tests for contract terms 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 ( BAD_SEED_ACCOUNT_ID, TEST_ACCOUNT_ID, ) from abacus_contract.tests.integration.utils.generic_helper import ( create_account, create_account_and_contract, generate_random_string, ) @pytest.mark.jira('ACC-2983', 'PLATFORM-4340') @pytest.mark.parametrize('is_base_term', [True, False]) def test_post_contract_terms(admin_headers, is_base_term): """POST /contract//contract-term.""" account_fixture = create_account() ows_abacus_contract_client = ows_abacus_contract_api_client(admin_headers) contract_name = 'orcd_autotest_{}'.format(generate_random_string(16)) contract_body = ows_abacus_contract_client.generate_contract_body( contract_name, account_fixture['account_id'], 'distribution' ) response_post = ows_abacus_contract_client.post_contract(contract_body) assert response_post.status_code == 201 contract_id = response_post.json()['contract_id'] term = { 'term_type': 'label', 'attachments': ['1010', '2010'], 'attachments_relations': {'label_ids': ['1', '2'], 'upcs': ['3']}, 'is_base_term': is_base_term, } response_post_term = ows_abacus_contract_client.post_contract_term( contract_id, term ) assert response_post_term.status_code == 201 @pytest.mark.jira('PLATFORM-4340') def test_get_contract_terms_by_contract_id( admin_headers: dict[str, str], unauthorized_headers: dict[str, str], auth_headers: dict[str, str], ) -> None: """GET /contract//contract-terms.""" # create an account and contract. contract_id, _, _ = create_account_and_contract(account_id=TEST_ACCOUNT_ID) # create a contract terms using the admin headers. # create label base term. endpoint = '{}/contract/{}/contract-term'.format(QA_BASE_URL, contract_id) requests.post( endpoint, headers=admin_headers, json={ 'contract_term_name': 'test_term_integration_1', 'term_type': 'label', 'attachments': [str(TEST_ACCOUNT_ID), str(BAD_SEED_ACCOUNT_ID)], 'is_base_term': True, }, ) # create product term. requests.post( endpoint, headers=admin_headers, json={ 'contract_term_name': 'test_term_integration_2', 'term_type': 'product', 'attachments': ['3030', '4010'], 'attachments_relations': { 'label_ids': [str(TEST_ACCOUNT_ID), str(BAD_SEED_ACCOUNT_ID)], 'upcs': ['3'], }, 'is_base_term': False, }, ) # get the terms using the auth headers. endpoint = '{}/contracts/{}/contract-terms/'.format(QA_BASE_URL, contract_id) response_get_terms = requests.get(endpoint, headers=auth_headers) assert response_get_terms.status_code == 200 assert response_get_terms.json() == [ { 'contract_term_id': 1, 'contract_id': 1, 'contract_term_name': 'test_term_integration_1', 'term_type': 'label', 'attachments': ['7123', '57608'], 'attachments_relations': None, 'is_base_term': True, }, { 'contract_term_id': 2, 'contract_id': 1, 'contract_term_name': 'test_term_integration_2', 'term_type': 'product', 'attachments': ['3030', '4010'], 'attachments_relations': {'label_ids': ['7123', '57608'], 'upcs': ['3']}, 'is_base_term': False, }, ] result = requests.get(endpoint, headers=unauthorized_headers) assert result.status_code == 403 assert result.json()['message'] == 'User is forbidden'