mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-06 03:13:42 -05:00
Delete cached template-folders when adding user to service
The api endpoint to get all template folders also returns the users who can see each folder. We need to clear the template-folder cache when adding a user to a service so that we are not using out of date data about who can see each folder.
This commit is contained in:
@@ -149,6 +149,7 @@ class UserApiClient(NotifyAdminAPIClient):
|
||||
return [User(data) for data in resp['data']]
|
||||
|
||||
@cache.delete('service-{service_id}')
|
||||
@cache.delete('service-{service_id}-template-folders')
|
||||
@cache.delete('user-{user_id}')
|
||||
def add_user_to_service(self, service_id, user_id, permissions, folder_permissions):
|
||||
# permissions passed in are the combined admin roles, not db permissions
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import uuid
|
||||
from unittest.mock import call
|
||||
|
||||
import pytest
|
||||
@@ -272,3 +273,25 @@ def test_deletes_user_cache(
|
||||
|
||||
assert call('user-{}'.format(user_id)) in mock_redis_delete.call_args_list
|
||||
assert len(mock_request.call_args_list) == 1
|
||||
|
||||
|
||||
def test_add_user_to_service_calls_correct_endpoint_and_deletes_keys_from_cache(mocker):
|
||||
mock_redis_delete = mocker.patch('app.extensions.RedisClient.delete')
|
||||
|
||||
service_id = uuid.uuid4()
|
||||
user_id = uuid.uuid4()
|
||||
folder_id = uuid.uuid4()
|
||||
|
||||
expected_url = '/service/{}/users/{}'.format(service_id, user_id)
|
||||
data = {'permissions': [], 'folder_permissions': [folder_id]}
|
||||
|
||||
mock_post = mocker.patch('app.notify_client.user_api_client.UserApiClient.post')
|
||||
|
||||
user_api_client.add_user_to_service(service_id, user_id, [], [folder_id])
|
||||
|
||||
mock_post.assert_called_once_with(expected_url, data=data)
|
||||
assert mock_redis_delete.call_args_list == [
|
||||
call('service-{service_id}'.format(service_id=service_id)),
|
||||
call('service-{service_id}-template-folders'.format(service_id=service_id)),
|
||||
call('user-{user_id}'.format(user_id=user_id)),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user