From 782bd34394eee9ca0dd1f568cf78920bd6490b4d Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Fri, 15 Mar 2019 10:25:00 +0000 Subject: [PATCH] Use folder_permissions in the InvitedUser model We were already invitializing InvitedUser with folder_permissions (defaulting to None), but this removes the default and adds folder_permissions to the serialize method. Folder permissions should now always be returned from api, either as an empty list or a list of UUIDs. --- app/models/user.py | 6 ++++-- tests/__init__.py | 13 +++++++++++-- tests/app/main/views/test_register.py | 8 +++++--- tests/app/notify_client/test_invite_client.py | 5 +++-- tests/conftest.py | 4 +++- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/models/user.py b/app/models/user.py index 01e9d7bca..ba314471a 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -193,7 +193,7 @@ class InvitedUser(object): status, created_at, auth_type, - folder_permissions=None): + folder_permissions): self.id = id self.service = str(service) self.from_user = from_user @@ -209,6 +209,7 @@ class InvitedUser(object): self.created_at = created_at self.auth_type = auth_type self.permissions = translate_permissions_from_db_to_admin_roles(self.permissions) + self.folder_permissions = folder_permissions or [] def has_permissions(self, *permissions): if self.status == 'cancelled': @@ -240,7 +241,8 @@ class InvitedUser(object): 'email_address': self.email_address, 'status': self.status, 'created_at': str(self.created_at), - 'auth_type': self.auth_type + 'auth_type': self.auth_type, + 'folder_permissions': self.folder_permissions } if permissions_as_string: data['permissions'] = ','.join(self.permissions) diff --git a/tests/__init__.py b/tests/__init__.py index c142eba60..30119aad9 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -272,7 +272,15 @@ def api_key_json(id_, name, expiry_date=None): } -def invite_json(id_, from_user, service_id, email_address, permissions, created_at, status, auth_type): +def invite_json(id_, + from_user, + service_id, + email_address, + permissions, + created_at, + status, + auth_type, + folder_permissions): return { 'id': id_, 'from_user': from_user, @@ -281,7 +289,8 @@ def invite_json(id_, from_user, service_id, email_address, permissions, created_ 'status': status, 'permissions': permissions, 'created_at': created_at, - 'auth_type': auth_type + 'auth_type': auth_type, + 'folder_permissions': folder_permissions, } diff --git a/tests/app/main/views/test_register.py b/tests/app/main/views/test_register.py index 279e53817..e83d9c849 100644 --- a/tests/app/main/views/test_register.py +++ b/tests/app/main/views/test_register.py @@ -198,7 +198,7 @@ def test_shows_registration_page_from_invite( ["manage_users"], "pending", datetime.utcnow(), - 'sms_auth', + 'sms_auth', [] ).serialize() page = client_request.get('main.register_from_invite') assert page.select_one('input[name=name]')['value'] == expected_value @@ -217,7 +217,8 @@ def test_register_from_invite( ["manage_users"], "pending", datetime.utcnow(), - 'sms_auth') + 'sms_auth', + []) with client.session_transaction() as session: session['invited_user'] = invited_user.serialize() response = client.post( @@ -253,7 +254,8 @@ def test_register_from_invite_when_user_registers_in_another_browser( ["manage_users"], "pending", datetime.utcnow(), - 'sms_auth') + 'sms_auth', + []) with client.session_transaction() as session: session['invited_user'] = invited_user.serialize() response = client.post( diff --git a/tests/app/notify_client/test_invite_client.py b/tests/app/notify_client/test_invite_client.py index 82860acb1..6d61c6521 100644 --- a/tests/app/notify_client/test_invite_client.py +++ b/tests/app/notify_client/test_invite_client.py @@ -16,12 +16,12 @@ def test_client_creates_invite( 'app.invite_api_client.post', return_value={'data': dict.fromkeys({ 'id', 'service', 'from_user', 'email_address', - 'permissions', 'status', 'created_at', 'auth_type' + 'permissions', 'status', 'created_at', 'auth_type', 'folder_permissions' })} ) invite_api_client.create_invite( - '12345', '67890', 'test@example.com', {'send_messages'}, 'sms_auth' + '12345', '67890', 'test@example.com', {'send_messages'}, 'sms_auth', [fake_uuid] ) mock_post.assert_called_once_with( @@ -34,6 +34,7 @@ def test_client_creates_invite( 'created_by': ANY, 'permissions': 'send_emails,send_letters,send_texts', 'invite_link_host': 'http://localhost:6012', + 'folder_permissions': [fake_uuid] } ) diff --git a/tests/conftest.py b/tests/conftest.py index de4566c59..ac0d6a618 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2211,8 +2211,10 @@ def sample_invite(mocker, service_one, status='pending'): permissions = 'view_activity,send_messages,manage_service,manage_api_keys' created_at = str(datetime.utcnow()) auth_type = 'sms_auth' + folder_permissions = [str(sample_uuid())] - return invite_json(id_, from_user, service_id, email_address, permissions, created_at, status, auth_type) + return invite_json( + id_, from_user, service_id, email_address, permissions, created_at, status, auth_type, folder_permissions) @pytest.fixture(scope='function')