"""Integration tests for contract term schedules.""" import pytest import requests from abacus_contract.tests.integration import conftest from abacus_contract.tests.integration.consts import api, constants from abacus_contract.tests.integration.utils import generic_helper @pytest.mark.jira('ACC-6161') def test_post_put_get_contract_term_schedules(basic_headers, create_schedule_fixtures): """POST PUT GET /contract-term//contract-term-schedules.""" account_fixture = generic_helper.create_account() ows_abacus_contract_client = conftest.ows_abacus_contract_api_client(basic_headers) contract_name = f'orcd_autotest_{generic_helper.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 = { 'contract_term_name': 'automation', 'term_type': 'contributor_schedule', 'attachments': ['1010', '2010'], 'schedule_ids': ['1', '2'], 'is_base_term': True, } response_post_term = ows_abacus_contract_client.post_contract_term( contract_id, term ) assert response_post_term.status_code == 201 contract_term_id = response_post_term.json()['contract_term_id'] res_get = ows_abacus_contract_client.get_contract_term_schedules(contract_term_id) assert res_get.status_code == 200 assert res_get.json() == [ {'contract_term_id': 1, 'schedule_id': 1, 'contract_term_schedule_id': 1}, {'contract_term_id': 1, 'schedule_id': 2, 'contract_term_schedule_id': 2}, ] term = { 'contract_term_name': 'automation_update', 'term_type': 'contributor_schedule', 'attachments': ['1010', '2010'], 'schedule_ids': ['1'], 'is_base_term': True, } response_put_term = ows_abacus_contract_client.put_contract_term(contract_id, term) assert response_put_term.status_code == 200 res_get = ows_abacus_contract_client.get_contract_term_schedules(contract_term_id) assert res_get.status_code == 200 assert res_get.json() == [ {'contract_term_id': 1, 'schedule_id': 1, 'contract_term_schedule_id': 1} ] @pytest.mark.jira('PLATFORM-4472') def test_get_contract_term_schedules_authorization( admin_headers: dict[str, str], unauthorized_headers: dict[str, str], auth_headers: dict[str, str], create_schedule_fixtures: None, ) -> None: """GET /contract_terms/conditions endpoint.""" contract_id, _, _ = generic_helper.create_account_and_contract( account_id=constants.TEST_ACCOUNT_ID ) term = { 'contract_term_name': 'automation', 'term_type': 'contributor_schedule', 'attachments': ['1010', '2010'], # Defined in create_schedule_fixtures 'schedule_ids': ['1', '2'], 'is_base_term': True, } res = requests.post( f'{api.QA_BASE_URL}/contract/{contract_id}/contract-term', json=term, headers=admin_headers, ) assert res.status_code == 201 contract_term_id = res.json()['contract_term_id'] res = requests.get( f'{api.QA_BASE_URL}/contract-term/{contract_term_id}/contract-term-schedules', headers=unauthorized_headers, ) assert res.status_code == 403 assert res.json()['message'] == 'User is forbidden' res = requests.get( f'{api.QA_BASE_URL}/contract-term/{contract_term_id}/contract-term-schedules', headers=auth_headers, ) assert res.status_code == 200