from http import HTTPStatus from unittest.mock import call, Mock, patch from owsrequest.constants.headers import ORCHARD_REQUESTOR_SERVICE @patch('payee.utils.permissions.authorization_backend.is_authorized', return_value=True) @patch('payee.blueprints.tax_reset.logic') def test_tax_reset_success( mock_logic: Mock, _, fixture_client, mock_headers, faker ) -> None: """Test tax_reset success with user permissions.""" account_payee_id = faker.pyint() res = fixture_client.delete( f'/account-payee/{account_payee_id}/tax-reset', headers={ORCHARD_REQUESTOR_SERVICE: 'graphql-abacus', **mock_headers}, ) assert res.status_code == HTTPStatus.NO_CONTENT assert mock_logic.reset_by_account_payee_id.call_args_list == [ call(account_payee_id) ] @patch( 'payee.utils.permissions.authorization_backend.is_authorized', return_value=False ) @patch('payee.blueprints.tax_reset.logic') def test_tax_reset_failure_permissions( mock_logic: Mock, _, fixture_client, mock_account360_headers, faker ) -> None: """Test tax_reset failure due to insufficient permissions.""" account_payee_id = faker.pyint() res = fixture_client.delete( f'/account-payee/{account_payee_id}/tax-reset', headers={ ORCHARD_REQUESTOR_SERVICE: 'graphql-abacus', # just some other headers, that are not required abacus headers **mock_account360_headers, }, ) assert res.status_code == HTTPStatus.FORBIDDEN assert res.json == {'code': 'authorization_error', 'message': 'access denied'} mock_logic.reset_by_account_payee_id.assert_not_called()