mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 14:29:51 -04:00
Merge pull request #3520 from alphagov/broadcast-user-permissions
Make user permissions make sense for services with the broadcast permission
This commit is contained in:
@@ -193,6 +193,35 @@ def test_should_show_caseworker_on_overview_page(
|
||||
)
|
||||
|
||||
|
||||
def test_should_show_overview_page_for_broadcast_service(
|
||||
client_request,
|
||||
mocker,
|
||||
mock_get_invites_for_service,
|
||||
mock_get_template_folders,
|
||||
service_one,
|
||||
active_user_view_permissions,
|
||||
active_user_with_permissions,
|
||||
):
|
||||
service_one['permissions'].append('broadcast')
|
||||
mocker.patch('app.models.user.Users.client_method', return_value=[
|
||||
active_user_with_permissions,
|
||||
active_user_view_permissions,
|
||||
])
|
||||
page = client_request.get('main.manage_users', service_id=SERVICE_ONE_ID)
|
||||
assert normalize_spaces(page.select('.user-list-item')[0].text) == (
|
||||
'Test User (you) '
|
||||
'Can Prepare and approve broadcasts '
|
||||
'Can Add and edit templates '
|
||||
'Can Manage settings and team'
|
||||
)
|
||||
assert normalize_spaces(page.select('.user-list-item')[1].text) == (
|
||||
'Test User With Permissions (you) '
|
||||
'Cannot Prepare and approve broadcasts '
|
||||
'Cannot Add and edit templates '
|
||||
'Cannot Manage settings and team'
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint, extra_args, service_has_email_auth, auth_options_hidden', [
|
||||
(
|
||||
'main.edit_user_permissions',
|
||||
@@ -266,6 +295,39 @@ def test_service_without_caseworking_doesnt_show_admin_vs_caseworker(
|
||||
assert page.select('input[type=checkbox]')[4]['name'] == 'manage_api_keys'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint, extra_args', [
|
||||
(
|
||||
'main.edit_user_permissions',
|
||||
{'user_id': sample_uuid()},
|
||||
),
|
||||
(
|
||||
'main.invite_user',
|
||||
{},
|
||||
),
|
||||
])
|
||||
def test_broadcast_service_only_shows_relevant_permissions(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_get_users_by_service,
|
||||
mock_get_template_folders,
|
||||
endpoint,
|
||||
extra_args,
|
||||
):
|
||||
service_one['permissions'] = ['broadcast']
|
||||
page = client_request.get(
|
||||
endpoint,
|
||||
service_id=SERVICE_ONE_ID,
|
||||
**extra_args
|
||||
)
|
||||
assert [
|
||||
field['name'] for field in page.select('input[type=checkbox]')
|
||||
] == [
|
||||
'send_messages',
|
||||
'manage_templates',
|
||||
'manage_service',
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('service_has_email_auth, displays_auth_type', [
|
||||
(True, True),
|
||||
(False, False)
|
||||
@@ -477,6 +539,76 @@ def test_edit_user_permissions(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('submitted_permissions, permissions_sent_to_api', [
|
||||
(
|
||||
{
|
||||
'view_activity': 'y',
|
||||
'send_messages': 'y',
|
||||
'manage_templates': 'y',
|
||||
'manage_service': 'y',
|
||||
'manage_api_keys': 'y',
|
||||
},
|
||||
{
|
||||
'view_activity',
|
||||
'send_messages',
|
||||
'manage_service',
|
||||
'manage_templates',
|
||||
}
|
||||
),
|
||||
(
|
||||
{
|
||||
'view_activity': 'y',
|
||||
'send_messages': 'y',
|
||||
},
|
||||
{
|
||||
'view_activity',
|
||||
'send_messages',
|
||||
}
|
||||
),
|
||||
(
|
||||
{
|
||||
},
|
||||
{
|
||||
'view_activity',
|
||||
}
|
||||
),
|
||||
])
|
||||
def test_edit_user_permissions_for_broadcast_service(
|
||||
client_request,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_users_by_service,
|
||||
mock_get_invites_for_service,
|
||||
mock_set_user_permissions,
|
||||
mock_get_template_folders,
|
||||
fake_uuid,
|
||||
submitted_permissions,
|
||||
permissions_sent_to_api,
|
||||
):
|
||||
service_one['permissions'] = 'broadcast'
|
||||
client_request.post(
|
||||
'main.edit_user_permissions',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
user_id=fake_uuid,
|
||||
_data=dict(
|
||||
email_address="test@example.com",
|
||||
**submitted_permissions
|
||||
),
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.manage_users',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_external=True,
|
||||
),
|
||||
)
|
||||
mock_set_user_permissions.assert_called_with(
|
||||
fake_uuid,
|
||||
SERVICE_ONE_ID,
|
||||
permissions=permissions_sent_to_api,
|
||||
folder_permissions=[]
|
||||
)
|
||||
|
||||
|
||||
def test_edit_user_folder_permissions(
|
||||
client_request,
|
||||
mocker,
|
||||
@@ -787,6 +919,62 @@ def test_invite_user_with_email_auth_service(
|
||||
[])
|
||||
|
||||
|
||||
@pytest.mark.parametrize('post_data, expected_permissions_to_api', (
|
||||
(
|
||||
{
|
||||
'send_messages': 'y',
|
||||
'manage_templates': 'y',
|
||||
'manage_service': 'y',
|
||||
},
|
||||
{
|
||||
'view_activity',
|
||||
'send_messages',
|
||||
'manage_templates',
|
||||
'manage_service',
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
'view_activity': 'y',
|
||||
'manage_api_keys': 'y',
|
||||
'foo': 'y',
|
||||
},
|
||||
{
|
||||
'view_activity',
|
||||
},
|
||||
),
|
||||
))
|
||||
def test_invite_user_to_broadcast_service(
|
||||
client_request,
|
||||
service_one,
|
||||
active_user_with_permissions,
|
||||
mocker,
|
||||
sample_invite,
|
||||
mock_get_template_folders,
|
||||
mock_get_organisations,
|
||||
post_data,
|
||||
expected_permissions_to_api,
|
||||
):
|
||||
service_one['permissions'] = ['broadcast']
|
||||
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.invite_api_client.create_invite', return_value=sample_invite)
|
||||
post_data['email_address'] = 'broadcast@example.gov.uk'
|
||||
client_request.post(
|
||||
'main.invite_user',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_data=post_data,
|
||||
)
|
||||
app.invite_api_client.create_invite.assert_called_once_with(
|
||||
sample_invite['from_user'],
|
||||
sample_invite['service'],
|
||||
'broadcast@example.gov.uk',
|
||||
expected_permissions_to_api,
|
||||
'sms_auth',
|
||||
[],
|
||||
)
|
||||
|
||||
|
||||
def test_cancel_invited_user_cancels_user_invitations(
|
||||
client_request,
|
||||
mock_get_invites_for_service,
|
||||
|
||||
Reference in New Issue
Block a user