"""Test get_my_adminable_resources endpoint.""" import json from unittest.mock import patch from owsresponse import response from permissions import handlers # noqa (handlers are imported for test client) from permissions.connectors import redis from permissions.constants import constants @patch( 'permissions.handlers.handlers.resource.get_resources_for_identity_uuid', return_value=response.Response( { 'items': {'foo': 'bar'}, 'pagination': { 'type': 'standard', 'total_records': 29, }, } ), ) @patch('permissions.handlers.handlers.g') def test_get_my_adminable_resources(mock_g, mock_logic, app_context, fixture_client): """Test get_my_adminable_resources for real identity id.""" mock_g.request_context.jwt_identity_id = 'mock-identity-uuid' url = '/identity/admin/resources/all/' result = fixture_client.get(url) assert result.status_code == 200 mock_logic.assert_called_once_with( 'mock-identity-uuid', constants.DEFAULT_LIMIT, constants.DEFAULT_OFFSET ) json_result = json.loads(result.data.decode('utf-8')) assert json_result['items'] == {'foo': 'bar'} assert json_result['pagination'] == {'type': 'standard', 'total_records': 29} @patch( 'permissions.handlers.handlers.resource.get_resources_for_identity_uuid', return_value=response.Response( { 'items': {'foo': 'bar'}, 'pagination': { 'type': 'standard', 'total_records': 964, }, } ), ) @patch('permissions.handlers.handlers.g') def test_get_my_adminable_resources_from_cache(mock_g, mock_logic, app_context, fixture_client): """Test get_my_adminable_resources with caching.""" mock_g.request_context.jwt_identity_id = 'mock-identity-uuid' url = '/identity/admin/resources/all/' redis.delete('resources_for_identity_mock-identity-uuid_all_admin') result = fixture_client.get(url) assert result.status_code == 200 mock_logic.assert_called_once() first_call_result = json.loads(result.data.decode('utf-8')) mock_logic.reset_mock() result = fixture_client.get(url) assert result.status_code == 200 assert mock_logic.call_count == 0 second_call_result = json.loads(result.data.decode('utf-8')) assert first_call_result == second_call_result