diff --git a/app/template_folder/rest.py b/app/template_folder/rest.py index fac997e39..43e631c79 100644 --- a/app/template_folder/rest.py +++ b/app/template_folder/rest.py @@ -12,6 +12,7 @@ from app.dao.template_folder_dao import ( ) from app.dao.services_dao import dao_fetch_service_by_id from app.dao.service_user_dao import dao_get_active_service_users +from app.dao.service_user_dao import dao_get_service_user from app.errors import InvalidRequest, register_errors from app.models import TemplateFolder from app.template_folder.template_folder_schema import ( @@ -78,6 +79,8 @@ def update_template_folder(service_id, template_folder_id): template_folder = dao_get_template_folder_by_id_and_service_id(template_folder_id, service_id) template_folder.name = data['name'] + if 'users_with_permission' in data: + template_folder.users = [dao_get_service_user(user_id, service_id) for user_id in data['users_with_permission']] dao_update_template_folder(template_folder) diff --git a/app/template_folder/template_folder_schema.py b/app/template_folder/template_folder_schema.py index 006f6b761..7e375b033 100644 --- a/app/template_folder/template_folder_schema.py +++ b/app/template_folder/template_folder_schema.py @@ -17,6 +17,7 @@ post_update_template_folder_schema = { "type": "object", "properties": { "name": {"type": "string", "minLength": 1}, + "users_with_permission": {"type": "array", "items": uuid} }, "required": ["name"] } diff --git a/tests/app/template_folder/test_template_folder_rest.py b/tests/app/template_folder/test_template_folder_rest.py index 137551bcb..cd8d85f91 100644 --- a/tests/app/template_folder/test_template_folder_rest.py +++ b/tests/app/template_folder/test_template_folder_rest.py @@ -155,7 +155,7 @@ def test_create_template_folder_fails_if_parent_id_from_different_service(admin_ assert resp['message'] == 'parent_id not found' -def test_update_template_folder(admin_request, sample_service): +def test_update_template_folder_name(admin_request, sample_service): existing_folder = create_template_folder(sample_service) resp = admin_request.post( @@ -171,6 +171,24 @@ def test_update_template_folder(admin_request, sample_service): assert existing_folder.name == 'bar' +def test_update_template_folder_users(admin_request, sample_service): + existing_folder = create_template_folder(sample_service) + user = create_user() + assert len(existing_folder.users) == 0 + resp = admin_request.post( + 'template_folder.update_template_folder', + service_id=sample_service.id, + template_folder_id=existing_folder.id, + _data={ + 'name': 'foo', + 'users_with_permission': [str(user.id)] + } + ) + + assert resp['data']['users_with_permission'] == [str(user.id)] + assert len(existing_folder.users) == 1 + + @pytest.mark.parametrize('data, err', [ ({}, 'name is a required property'), ({'name': None}, 'name None is not of type string'),