mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-29 02:34:02 -04: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']]
|
return [User(data) for data in resp['data']]
|
||||||
|
|
||||||
@cache.delete('service-{service_id}')
|
@cache.delete('service-{service_id}')
|
||||||
|
@cache.delete('service-{service_id}-template-folders')
|
||||||
@cache.delete('user-{user_id}')
|
@cache.delete('user-{user_id}')
|
||||||
def add_user_to_service(self, service_id, user_id, permissions, folder_permissions):
|
def add_user_to_service(self, service_id, user_id, permissions, folder_permissions):
|
||||||
# permissions passed in are the combined admin roles, not db permissions
|
# permissions passed in are the combined admin roles, not db permissions
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import uuid
|
||||||
from unittest.mock import call
|
from unittest.mock import call
|
||||||
|
|
||||||
import pytest
|
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 call('user-{}'.format(user_id)) in mock_redis_delete.call_args_list
|
||||||
assert len(mock_request.call_args_list) == 1
|
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