mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 07:46:23 -04:00
Change permissions tests to support old API
User permissions were handled by a group of BooleanFields but introducing the new checkboxes changed this to just one field that stores its data in a list. It was mentioned in a comment that there could be a situation, when the instances roll, where clients are using the old fields but POSTing to a server running the new code. https://github.com/alphagov/notifications-admin/pull/3535#discussion_r460872903 This introduces tests for that situation.
This commit is contained in:
@@ -514,6 +514,22 @@ def test_should_not_show_page_for_non_team_member(
|
|||||||
{},
|
{},
|
||||||
set(),
|
set(),
|
||||||
),
|
),
|
||||||
|
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
|
||||||
|
{
|
||||||
|
'view_activity': 'y',
|
||||||
|
'send_messages': 'y',
|
||||||
|
'manage_templates': 'y',
|
||||||
|
'manage_service': 'y',
|
||||||
|
'manage_api_keys': 'y',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'view_activity',
|
||||||
|
'send_messages',
|
||||||
|
'manage_templates',
|
||||||
|
'manage_service',
|
||||||
|
'manage_api_keys',
|
||||||
|
}
|
||||||
|
),
|
||||||
])
|
])
|
||||||
def test_edit_user_permissions(
|
def test_edit_user_permissions(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -584,6 +600,20 @@ def test_edit_user_permissions(
|
|||||||
'view_activity',
|
'view_activity',
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
|
||||||
|
{
|
||||||
|
'send_messages': 'y',
|
||||||
|
'manage_templates': 'y',
|
||||||
|
'manage_service': 'y',
|
||||||
|
'manage_api_keys': 'y',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'view_activity',
|
||||||
|
'send_messages',
|
||||||
|
'manage_service',
|
||||||
|
'manage_templates',
|
||||||
|
}
|
||||||
|
),
|
||||||
])
|
])
|
||||||
def test_edit_user_permissions_for_broadcast_service(
|
def test_edit_user_permissions_for_broadcast_service(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -828,9 +858,10 @@ def test_should_show_folder_permission_form_if_service_has_folder_permissions_en
|
|||||||
assert len(folder_checkboxes) == 3
|
assert len(folder_checkboxes) == 3
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('email_address, gov_user', [
|
@pytest.mark.parametrize('email_address, gov_user, old_permissions', [
|
||||||
('test@example.gov.uk', True),
|
('test@example.gov.uk', True, False),
|
||||||
('test@example.com', False)
|
('test@example.com', False, False),
|
||||||
|
('test@example.gov.uk', True, True)
|
||||||
])
|
])
|
||||||
def test_invite_user(
|
def test_invite_user(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -839,6 +870,7 @@ def test_invite_user(
|
|||||||
sample_invite,
|
sample_invite,
|
||||||
email_address,
|
email_address,
|
||||||
gov_user,
|
gov_user,
|
||||||
|
old_permissions,
|
||||||
mock_get_template_folders,
|
mock_get_template_folders,
|
||||||
mock_get_organisations,
|
mock_get_organisations,
|
||||||
):
|
):
|
||||||
@@ -848,19 +880,25 @@ def test_invite_user(
|
|||||||
mocker.patch('app.models.user.InvitedUsers.client_method', return_value=[sample_invite])
|
mocker.patch('app.models.user.InvitedUsers.client_method', return_value=[sample_invite])
|
||||||
mocker.patch('app.models.user.Users.client_method', return_value=[active_user_with_permissions])
|
mocker.patch('app.models.user.Users.client_method', return_value=[active_user_with_permissions])
|
||||||
mocker.patch('app.invite_api_client.create_invite', return_value=sample_invite)
|
mocker.patch('app.invite_api_client.create_invite', return_value=sample_invite)
|
||||||
|
data = {'email_address': email_address}
|
||||||
|
if old_permissions:
|
||||||
|
data['view_activity'] = 'y'
|
||||||
|
data['send_messages'] = 'y'
|
||||||
|
data['manage_templates'] = 'y'
|
||||||
|
data['manage_service'] = 'y'
|
||||||
|
data['manage_api_keys'] = 'y'
|
||||||
|
else:
|
||||||
|
data['permissions_field'] = [
|
||||||
|
'view_activity',
|
||||||
|
'send_messages',
|
||||||
|
'manage_templates',
|
||||||
|
'manage_service',
|
||||||
|
'manage_api_keys',
|
||||||
|
]
|
||||||
page = client_request.post(
|
page = client_request.post(
|
||||||
'main.invite_user',
|
'main.invite_user',
|
||||||
service_id=SERVICE_ONE_ID,
|
service_id=SERVICE_ONE_ID,
|
||||||
_data={
|
_data=data,
|
||||||
'email_address': email_address,
|
|
||||||
'permissions_field': [
|
|
||||||
'view_activity',
|
|
||||||
'send_messages',
|
|
||||||
'manage_templates',
|
|
||||||
'manage_service',
|
|
||||||
'manage_api_keys',
|
|
||||||
]
|
|
||||||
},
|
|
||||||
_follow_redirects=True,
|
_follow_redirects=True,
|
||||||
)
|
)
|
||||||
assert page.h1.string.strip() == 'Team members'
|
assert page.h1.string.strip() == 'Team members'
|
||||||
@@ -965,6 +1003,19 @@ def test_invite_user_with_email_auth_service(
|
|||||||
'view_activity',
|
'view_activity',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
( # should be able to handle permissions being sent as booleans, until changeover to a list is complete
|
||||||
|
{
|
||||||
|
'send_messages': 'y',
|
||||||
|
'manage_templates': 'y',
|
||||||
|
'manage_service': 'y',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'view_activity',
|
||||||
|
'send_messages',
|
||||||
|
'manage_templates',
|
||||||
|
'manage_service',
|
||||||
|
},
|
||||||
|
)
|
||||||
))
|
))
|
||||||
def test_invite_user_to_broadcast_service(
|
def test_invite_user_to_broadcast_service(
|
||||||
client_request,
|
client_request,
|
||||||
|
|||||||
Reference in New Issue
Block a user