mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-24 00:06:16 -04:00
Include list of users_with_permission in all folders response
This adds a list of user_ids of the users who have permission to view a folder to the `get_template_folders_for_service` endpoint.
This commit is contained in:
@@ -754,7 +754,8 @@ class TemplateFolder(db.Model):
|
|||||||
'id': self.id,
|
'id': self.id,
|
||||||
'name': self.name,
|
'name': self.name,
|
||||||
'parent_id': self.parent_id,
|
'parent_id': self.parent_id,
|
||||||
'service_id': self.service_id
|
'service_id': self.service_id,
|
||||||
|
'users_with_permission': self.get_users_with_permission()
|
||||||
}
|
}
|
||||||
|
|
||||||
def is_parent_of(self, other):
|
def is_parent_of(self, other):
|
||||||
@@ -764,6 +765,12 @@ class TemplateFolder(db.Model):
|
|||||||
other = other.parent
|
other = other.parent
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def get_users_with_permission(self):
|
||||||
|
service_users = self.users
|
||||||
|
users_with_permission = [str(service_user.user_id) for service_user in service_users]
|
||||||
|
|
||||||
|
return users_with_permission
|
||||||
|
|
||||||
|
|
||||||
template_folder_map = db.Table(
|
template_folder_map = db.Table(
|
||||||
'template_folder_map',
|
'template_folder_map',
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ import uuid
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from app.dao.service_user_dao import dao_get_service_user
|
||||||
from app.models import TemplateFolder
|
from app.models import TemplateFolder
|
||||||
|
|
||||||
from tests.app.db import create_service, create_template_folder, create_template
|
from tests.app.db import create_service, create_template_folder, create_template, create_user
|
||||||
|
|
||||||
|
|
||||||
def test_get_folders_for_service(admin_request, notify_db_session):
|
def test_get_folders_for_service(admin_request, notify_db_session):
|
||||||
@@ -19,8 +20,8 @@ def test_get_folders_for_service(admin_request, notify_db_session):
|
|||||||
resp = admin_request.get('template_folder.get_template_folders_for_service', service_id=s1.id)
|
resp = admin_request.get('template_folder.get_template_folders_for_service', service_id=s1.id)
|
||||||
assert set(resp.keys()) == {'template_folders'}
|
assert set(resp.keys()) == {'template_folders'}
|
||||||
assert sorted(resp['template_folders'], key=lambda x: x['id']) == sorted([
|
assert sorted(resp['template_folders'], key=lambda x: x['id']) == sorted([
|
||||||
{'id': str(tf1.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None},
|
{'id': str(tf1.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None, 'users_with_permission': []},
|
||||||
{'id': str(tf2.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None},
|
{'id': str(tf2.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None, 'users_with_permission': []},
|
||||||
], key=lambda x: x['id'])
|
], key=lambda x: x['id'])
|
||||||
|
|
||||||
|
|
||||||
@@ -29,6 +30,28 @@ def test_get_folders_for_service_with_no_folders(sample_service, admin_request):
|
|||||||
assert resp == {'template_folders': []}
|
assert resp == {'template_folders': []}
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_folders_returns_users_with_permission(admin_request, sample_service):
|
||||||
|
user_1 = create_user(email='one@gov.uk')
|
||||||
|
user_2 = create_user(email='two@gov.uk')
|
||||||
|
user_3 = create_user(email='three@gov.uk')
|
||||||
|
template_folder = create_template_folder(sample_service)
|
||||||
|
|
||||||
|
sample_service.users = [user_1, user_2, user_3]
|
||||||
|
|
||||||
|
service_user_1 = dao_get_service_user(user_1.id, sample_service.id)
|
||||||
|
service_user_2 = dao_get_service_user(user_2.id, sample_service.id)
|
||||||
|
|
||||||
|
service_user_1.folders = [template_folder]
|
||||||
|
service_user_2.folders = [template_folder]
|
||||||
|
|
||||||
|
resp = admin_request.get('template_folder.get_template_folders_for_service', service_id=sample_service.id)
|
||||||
|
users_with_permission = resp['template_folders'][0]['users_with_permission']
|
||||||
|
|
||||||
|
assert len(users_with_permission) == 2
|
||||||
|
assert str(user_1.id) in users_with_permission
|
||||||
|
assert str(user_2.id) in users_with_permission
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('has_parent', [True, False])
|
@pytest.mark.parametrize('has_parent', [True, False])
|
||||||
def test_create_template_folder(admin_request, sample_service, has_parent):
|
def test_create_template_folder(admin_request, sample_service, has_parent):
|
||||||
existing_folder = create_template_folder(sample_service)
|
existing_folder = create_template_folder(sample_service)
|
||||||
|
|||||||
Reference in New Issue
Block a user