"""Tests for ows-permissions service.""" from unittest.mock import MagicMock, patch import pytest from flexmock import flexmock from owsrequest import request from requests import HTTPError from assets.constants import service as service_constants from assets.models import ows_permissions class TestOWSPermissionsGetLabelResourcesResponse: """Test call to ows-permissions for label resources.""" profile_id = 1346777 profile_type = "LabelProfile" vendor_response = { "items": [{"type": ows_permissions.VENDOR_RESOURCE_TYPE, "id": 123}] } @pytest.fixture def mock_vendor_response(self) -> MagicMock: """Return mock response of ows-permissions.""" mock_response = MagicMock(status_code=200) mock_response.json = MagicMock(return_value=self.vendor_response) return mock_response @pytest.fixture def mock_vendor_request(self, mock_vendor_response: MagicMock) -> None: """Mock GET request.""" flexmock(request).should_receive("get").with_args( service_constants.OWS_PERMISSIONS, service_constants.OWS_PERMISSIONS_PROFILE_RESOURCE.format( profile_id=self.profile_id, profile_type=self.profile_type, resource=ows_permissions.LABEL_RESOURCE, ), ).and_return(mock_vendor_response) def test_vendor_success(self, mock_vendor_request: None) -> None: """Test expected response is returned.""" result = ows_permissions.get_label_resources(self.profile_type, self.profile_id) assert result == self.vendor_response def test_get_label_resources_failure() -> None: """Test none is returned.""" profile_id = 1346777 profile_type = "LabelProfile" with patch.object(request, "get", side_effect=HTTPError("mock error")) as mock_get: with pytest.raises(HTTPError): result = ows_permissions.get_label_resources(profile_type, profile_id) assert not result mock_get.assert_called_once_with( service_constants.OWS_PERMISSIONS, service_constants.OWS_PERMISSIONS_PROFILE_RESOURCE.format( profile_id=profile_id, profile_type=profile_type, resource=ows_permissions.LABEL_RESOURCE, ), )