diff --git a/app/notify_client/models.py b/app/notify_client/models.py index 55dbd2f50..3267a0fea 100644 --- a/app/notify_client/models.py +++ b/app/notify_client/models.py @@ -183,6 +183,7 @@ class InvitedUser(object): self.status = status self.created_at = created_at self.auth_type = auth_type + self.permissions = translate_permissions_from_db_to_admin_roles(self.permissions) def has_permissions(self, *permissions): if self.status == 'cancelled': @@ -217,7 +218,7 @@ class InvitedUser(object): if permissions_as_string: data['permissions'] = ','.join(self.permissions) else: - data['permissions'] = self.permissions + data['permissions'] = sorted(self.permissions) return data diff --git a/app/notify_client/user_api_client.py b/app/notify_client/user_api_client.py index ac525d695..76968eb9d 100644 --- a/app/notify_client/user_api_client.py +++ b/app/notify_client/user_api_client.py @@ -148,8 +148,7 @@ class UserApiClient(NotifyAdminAPIClient): # permissions passed in are the combined admin roles, not db permissions endpoint = '/service/{}/users/{}'.format(service_id, user_id) data = [{'permission': x} for x in translate_permissions_from_admin_roles_to_db(permissions)] - resp = self.post(endpoint, data=data) - return User(resp['data'], max_failed_login_count=self.max_failed_login_count) + self.post(endpoint, data=data) def add_user_to_organisation(self, org_id, user_id): resp = self.post('/organisations/{}/users/{}'.format(org_id, user_id), data={}) diff --git a/tests/app/main/views/test_accept_invite.py b/tests/app/main/views/test_accept_invite.py index 406a58c47..8f8efaa9d 100644 --- a/tests/app/main/views/test_accept_invite.py +++ b/tests/app/main/views/test_accept_invite.py @@ -22,7 +22,7 @@ def test_existing_user_accept_invite_calls_api_and_redirects_to_dashboard( mocker, ): expected_service = service_one['id'] - expected_permissions = ['send_messages', 'manage_service', 'manage_api_keys'] + expected_permissions = {'send_messages', 'manage_service', 'manage_api_keys'} response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken')) @@ -49,7 +49,7 @@ def test_existing_user_with_no_permissions_accept_invite( ): expected_service = service_one['id'] sample_invite['permissions'] = '' - expected_permissions = [] + expected_permissions = set() mocker.patch('app.invite_api_client.accept_invite', return_value=sample_invite) response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken')) @@ -121,7 +121,7 @@ def test_existing_signed_out_user_accept_invite_redirects_to_sign_in( mocker, ): expected_service = service_one['id'] - expected_permissions = ['send_messages', 'manage_service', 'manage_api_keys'] + expected_permissions = {'send_messages', 'manage_service', 'manage_api_keys'} response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken'), follow_redirects=True) @@ -368,7 +368,7 @@ def test_new_invited_user_verifies_and_added_to_service( # when they post codes back to admin user should be added to # service and sent on to dash board - expected_permissions = ['send_messages', 'manage_service', 'manage_api_keys'] + expected_permissions = {'send_messages', 'manage_service', 'manage_api_keys'} with client.session_transaction() as session: new_user_id = session['user_id'] diff --git a/tests/conftest.py b/tests/conftest.py index 643c30aef..7635a709b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2052,7 +2052,7 @@ def mock_accept_invite(mocker, sample_invite): @pytest.fixture(scope='function') def mock_add_user_to_service(mocker, service_one, api_user_active): def _add_user(service_id, user_id, permissions): - return api_user_active + return return mocker.patch('app.user_api_client.add_user_to_service', side_effect=_add_user)