"""Unit testcases for ows-royalties requests.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from contract_lifecycle_automation.ows_royalties import \ bulk_activate_contract_lifecycles from contract_lifecycle_automation.ows_royalties import \ bulk_renew_contract_lifecycles from contract_lifecycle_automation.ows_royalties import \ bulk_terminate_contract_lifecycles from contract_lifecycle_automation.ows_royalties import \ get_activable_contract_lifecycles from contract_lifecycle_automation.ows_royalties import \ get_renewable_contract_lifecycles from contract_lifecycle_automation.ows_royalties import \ get_terminable_contract_lifecycles from contract_lifecycle_automation.requests import OwsServiceException @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_terminable_contract_lifecycles( mock_get, mock_terminable_contract_lifecycles ): """Test to get terminable contract lifecycles.""" mock_endpoint_response = { 'items': mock_terminable_contract_lifecycles, 'total_count': len(mock_terminable_contract_lifecycles) } path = '/contract-lifecycles/terminable/?limit=1000&offset=0' mock_json_response = MagicMock(return_value=mock_endpoint_response) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response results = get_terminable_contract_lifecycles(1000, 0) assert results == mock_endpoint_response mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_terminable_contract_lifecycles_error(mock_get): """Test error is raised when getting terminable contract lifecycles.""" path = '/contract-lifecycles/terminable/?limit=1000&offset=0' mock_response = MagicMock(status_code=500) mock_get.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: get_terminable_contract_lifecycles(1000, 0) assert f'ERROR in GET {path}' in str(excinfo.value) mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_terminate_contract_lifecycles( mock_post, mock_terminable_contract_lifecycles ): """Test bulk terminating contract lifecycles.""" path = '/contract-lifecycles/terminate/' mock_post_request_payload = [1, 2, 3] mock_json_response = MagicMock(return_value=mock_terminable_contract_lifecycles) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_post.return_value = mock_response results = bulk_terminate_contract_lifecycles(mock_post_request_payload) assert results == mock_terminable_contract_lifecycles mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' ) @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_terminate_contract_lifecycles_error(mock_post): """Test error is raised while terminating contract lifecycles.""" path = '/contract-lifecycles/terminate/' mock_post_request_payload = [1, 2, 3] mock_response = MagicMock(status_code=500) mock_post.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: bulk_terminate_contract_lifecycles(mock_post_request_payload) assert f'ERROR in POST {path}' in str(excinfo.value) mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' ) @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_activable_contract_lifecycles( mock_get, mock_activable_contract_lifecycles ): """Test to get activable contract lifecycles.""" mock_endpoint_response = { 'items': mock_activable_contract_lifecycles, 'total_count': len(mock_activable_contract_lifecycles) } path = '/contract-lifecycles/activable/?limit=1000&offset=0' mock_json_response = MagicMock(return_value=mock_endpoint_response) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response results = get_activable_contract_lifecycles(1000, 0) assert results == mock_endpoint_response mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_activable_contract_lifecycles_error(mock_get): """Test error is raised when getting activable contract lifecycles.""" path = '/contract-lifecycles/activable/?limit=1000&offset=0' mock_response = MagicMock(status_code=500) mock_get.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: get_activable_contract_lifecycles(1000, 0) assert f'ERROR in GET {path}' in str(excinfo.value) mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_activate_contract_lifecycles( mock_post, mock_activable_contract_lifecycles ): """Test bulk activating contract lifecycles.""" path = '/contract-lifecycles/activate/' mock_post_request_payload = [1, 2, 3] mock_json_response = MagicMock(return_value=mock_activable_contract_lifecycles) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_post.return_value = mock_response results = bulk_activate_contract_lifecycles(mock_post_request_payload) assert results == mock_activable_contract_lifecycles mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' ) @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_activate_contract_lifecycles_error(mock_post): """Test error is raised while activating contract lifecycles.""" path = '/contract-lifecycles/activate/' mock_post_request_payload = [1, 2, 3] mock_response = MagicMock(status_code=500) mock_post.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: bulk_activate_contract_lifecycles(mock_post_request_payload) assert f'ERROR in POST {path}' in str(excinfo.value) mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' ) @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_renewable_contract_lifecycles( mock_get, mock_renewable_contract_lifecycles ): """Test to get renewable contract lifecycles.""" mock_endpoint_response = { 'items': mock_renewable_contract_lifecycles, 'total_count': len(mock_renewable_contract_lifecycles) } path = '/contract-lifecycles/renewable/?limit=1000&offset=0' mock_json_response = MagicMock(return_value=mock_endpoint_response) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response results = get_renewable_contract_lifecycles(1000, 0) assert results == mock_endpoint_response mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.get') def test_get_renewable_contract_lifecycles_error(mock_get): """Test error is raised when getting renewable contract lifecycles.""" path = '/contract-lifecycles/renewable/?limit=1000&offset=0' mock_response = MagicMock(status_code=500) mock_get.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: get_renewable_contract_lifecycles(1000, 0) assert f'ERROR in GET {path}' in str(excinfo.value) mock_get.assert_called_once_with(path, 'ows-royalties') @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_renew_contract_lifecycles( mock_post, mock_renewable_contract_lifecycles ): """Test bulk renewing contract lifecycles.""" path = '/contract-lifecycles/renew/' mock_post_request_payload = [1, 2, 3] mock_json_response = MagicMock(return_value=mock_renewable_contract_lifecycles) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_post.return_value = mock_response results = bulk_renew_contract_lifecycles(mock_post_request_payload) assert results == mock_renewable_contract_lifecycles mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' ) @patch('contract_lifecycle_automation.ows_royalties.requests.post') def test_bulk_renew_contract_lifecycles_error(mock_post): """Test error is raised while renewing contract lifecycles.""" path = '/contract-lifecycles/renew/' mock_post_request_payload = [1, 2, 3] mock_response = MagicMock(status_code=500) mock_post.return_value = mock_response with pytest.raises(OwsServiceException) as excinfo: bulk_renew_contract_lifecycles(mock_post_request_payload) assert f'ERROR in POST {path}' in str(excinfo.value) mock_post.assert_called_once_with( mock_post_request_payload, path, 'ows-royalties' )