"""Integration tests for contract reserves endpoints.""" import pytest import requests from tests.integration import conftest from tests.integration.consts import api, constants from tests.integration.utils import generic_helper @pytest.mark.jira('ACC-4555') def test_post_get_contract_reserves( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_account_tax_info_fixture ): """Check reserves endpoints.""" ows_abacus_contract_client = conftest.ows_abacus_contract_api_client( basic_headers ) # defined in fixtures in conftest.py contract_id = 1 post_reserves_body = { 'installments_in_months': 2, 'reserve_rate': 1.8, 'reserve_release_offset_in_months': 1 } res_post = ows_abacus_contract_client.post_contract_reserves( contract_id, post_reserves_body ) assert res_post.status_code == 201 res_get = ows_abacus_contract_client.get_contract_reserves(contract_id) assert res_get.status_code == 200 res_get_body = res_get.json() assert res_get_body['installments_in_months'] == \ post_reserves_body['installments_in_months'] assert float(res_get_body['reserve_rate']) == \ post_reserves_body['reserve_rate'] assert res_get_body['reserve_release_offset_in_months'] == \ post_reserves_body['reserve_release_offset_in_months'] assert res_get_body['contract_id'] == contract_id assert 'release_schedule' in res_get_body contract_reserve_id = res_get_body['contract_reserve_id'] res_get = ows_abacus_contract_client.get_contract_reserves_batch( [contract_reserve_id] ) assert res_get.status_code == 200 res_get_body = res_get.json()[0] assert res_get_body['installments_in_months'] == \ post_reserves_body['installments_in_months'] assert float(res_get_body['reserve_rate']) == \ post_reserves_body['reserve_rate'] assert res_get_body['reserve_release_offset_in_months'] == \ post_reserves_body['reserve_release_offset_in_months'] assert res_get_body['contract_id'] == contract_id assert 'release_schedule' in res_get_body res_get = ows_abacus_contract_client.get_contract_reserves_by_contract_ids( [contract_id] ) assert res_get.status_code == 200 res_get_body = res_get.json()[0] assert res_get_body['installments_in_months'] == \ post_reserves_body['installments_in_months'] assert float(res_get_body['reserve_rate']) == \ post_reserves_body['reserve_rate'] assert res_get_body['reserve_release_offset_in_months'] == \ post_reserves_body['reserve_release_offset_in_months'] assert res_get_body['contract_id'] == contract_id assert 'release_schedule' in res_get_body @pytest.mark.jira('PLATFORM-4470') def test_get_contract_reserves_authorization( admin_headers: dict[str, str], auth_headers: dict[str, str], unauthorized_headers: dict[str, str], ) -> None: """Test authorization for get contract reserves endpoint.""" contract_id, _, _ = generic_helper.create_account_and_contract( account_id=constants.TEST_ACCOUNT_ID ) reserve_dict = { 'installments_in_months': 2, 'reserve_rate': 1.8, 'reserve_release_offset_in_months': 1 } res = requests.post( f'{api.QA_BASE_URL}/contract/{contract_id}/reserves/', headers=admin_headers, json=reserve_dict, ) assert res.status_code == 201 res = requests.get( f'{api.QA_BASE_URL}/contract/{contract_id}/reserves/', headers=auth_headers ) assert res.status_code == 200 assert res.json()['installments_in_months'] == \ reserve_dict['installments_in_months'] assert float(res.json()['reserve_rate']) == \ reserve_dict['reserve_rate'] assert res.json()['reserve_release_offset_in_months'] == \ reserve_dict['reserve_release_offset_in_months'] res = requests.get( f'{api.QA_BASE_URL}/contract/{contract_id}/reserves/', headers=unauthorized_headers, ) assert res.status_code == 403 assert res.json()['message'] == 'User is forbidden' @pytest.mark.jira('ACC-5363') def test_put_contract_reserves( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_account_tax_info_fixture ): """Check PUT /contract_reserve endpoint.""" ows_abacus_contract_client = conftest.ows_abacus_contract_api_client( basic_headers ) # defined in fixtures in conftest.py contract_id = 1 post_reserves_body = { 'installments_in_months': 2, 'reserve_rate': 1.8, 'reserve_release_offset_in_months': 1 } res_post = ows_abacus_contract_client.post_contract_reserves( contract_id, post_reserves_body ) assert res_post.status_code == 201 put_reserves_body = { 'installments_in_months': 6, 'reserve_rate': 2.40, 'reserve_release_offset_in_months': 3 } res_put = ows_abacus_contract_client.put_contract_reserves( contract_id, put_reserves_body ) assert res_put.status_code == 201 assert float(res_put.json()['reserve_rate']) == \ put_reserves_body['reserve_rate'] assert res_put.json()['installments_in_months'] == \ put_reserves_body['installments_in_months'] assert res_put.json()['reserve_release_offset_in_months'] == \ put_reserves_body['reserve_release_offset_in_months'] res_get = ows_abacus_contract_client.get_contract_reserves_by_contract_ids( [contract_id] ) assert res_get.status_code == 200 assert float(res_get.json()[0]['reserve_rate']) == \ put_reserves_body['reserve_rate'] assert res_get.json()[0]['installments_in_months'] == \ put_reserves_body['installments_in_months'] assert res_get.json()[0]['reserve_release_offset_in_months'] == \ put_reserves_body['reserve_release_offset_in_months']