mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 13:29:48 -04:00
fix skips and xfails
This commit is contained in:
@@ -768,8 +768,8 @@ def test_manage_org_users_shows_no_link_for_cancelled_users(
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number_of_users', (
|
||||
pytest.param(7, marks=pytest.mark.xfail),
|
||||
pytest.param(8),
|
||||
pytest.param(800),
|
||||
))
|
||||
def test_manage_org_users_should_show_live_search_if_more_than_7_users(
|
||||
client_request,
|
||||
@@ -812,6 +812,37 @@ def test_manage_org_users_should_show_live_search_if_more_than_7_users(
|
||||
) == 'Search by name or email address'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number_of_users', (
|
||||
pytest.param(3),
|
||||
pytest.param(7),
|
||||
))
|
||||
def test_manage_org_users_should_show_live_search_if_7_users_or_less(
|
||||
client_request,
|
||||
mocker,
|
||||
mock_get_organisation,
|
||||
active_user_with_permissions,
|
||||
number_of_users,
|
||||
):
|
||||
mocker.patch(
|
||||
'app.models.user.OrganisationInvitedUsers.client_method',
|
||||
return_value=[],
|
||||
)
|
||||
mocker.patch(
|
||||
'app.models.user.OrganisationUsers.client_method',
|
||||
return_value=[active_user_with_permissions] * number_of_users,
|
||||
)
|
||||
|
||||
page = client_request.get(
|
||||
'.manage_org_users',
|
||||
org_id=ORGANISATION_ID,
|
||||
)
|
||||
|
||||
with pytest.raises(expected_exception=TypeError):
|
||||
assert page.select_one('div[data-module=live-search]')['data-targets'] == (
|
||||
".user-list-item"
|
||||
)
|
||||
|
||||
|
||||
def test_edit_organisation_user_shows_the_delete_confirmation_banner(
|
||||
client_request,
|
||||
mock_get_organisation,
|
||||
@@ -966,7 +997,6 @@ def test_view_organisation_settings(
|
||||
),
|
||||
pytest.param(
|
||||
create_active_user_with_permissions(),
|
||||
marks=pytest.mark.xfail
|
||||
),
|
||||
))
|
||||
def test_update_organisation_settings(
|
||||
@@ -984,21 +1014,28 @@ def test_update_organisation_settings(
|
||||
mocker.patch('app.organisations_client.get_organisation_services', return_value=[])
|
||||
client_request.login(user)
|
||||
|
||||
if user['email_address'] == 'platform@admin.gsa.gov':
|
||||
expected_status = 302
|
||||
expected_redirect = url_for(
|
||||
'main.organisation_settings',
|
||||
org_id=organisation_one['id'],
|
||||
)
|
||||
else:
|
||||
expected_status = 403
|
||||
expected_redirect = None
|
||||
client_request.post(
|
||||
endpoint,
|
||||
org_id=organisation_one['id'],
|
||||
_data=post_data,
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.organisation_settings',
|
||||
org_id=organisation_one['id'],
|
||||
),
|
||||
_expected_status=expected_status,
|
||||
_expected_redirect=expected_redirect,
|
||||
)
|
||||
|
||||
mock_update_organisation.assert_called_once_with(
|
||||
organisation_one['id'],
|
||||
**expected_persisted,
|
||||
)
|
||||
if user['email_address'] == 'platform@admin.gsa.gov':
|
||||
mock_update_organisation.assert_called_once_with(
|
||||
organisation_one['id'],
|
||||
**expected_persisted,
|
||||
)
|
||||
|
||||
|
||||
def test_update_organisation_sector_sends_service_id_data_to_api_client(
|
||||
@@ -1116,7 +1153,6 @@ def test_view_organisation_domains(
|
||||
),
|
||||
pytest.param(
|
||||
create_active_user_with_permissions(),
|
||||
marks=pytest.mark.xfail
|
||||
),
|
||||
))
|
||||
def test_update_organisation_domains(
|
||||
@@ -1130,22 +1166,29 @@ def test_update_organisation_domains(
|
||||
user,
|
||||
):
|
||||
client_request.login(user)
|
||||
if user['email_address'] == 'platform@admin.gsa.gov':
|
||||
expected_status = 302
|
||||
expected_redirect = url_for(
|
||||
'main.organisation_settings',
|
||||
org_id=organisation_one['id'],
|
||||
)
|
||||
else:
|
||||
expected_status = 403
|
||||
expected_redirect = None
|
||||
|
||||
client_request.post(
|
||||
'main.edit_organisation_domains',
|
||||
org_id=ORGANISATION_ID,
|
||||
_data=post_data,
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.organisation_settings',
|
||||
org_id=organisation_one['id'],
|
||||
),
|
||||
_expected_status=expected_status,
|
||||
_expected_redirect=expected_redirect,
|
||||
)
|
||||
|
||||
mock_update_organisation.assert_called_once_with(
|
||||
ORGANISATION_ID,
|
||||
**expected_persisted,
|
||||
)
|
||||
if user['email_address'] == 'platform@admin.gsa.gov':
|
||||
mock_update_organisation.assert_called_once_with(
|
||||
ORGANISATION_ID,
|
||||
**expected_persisted,
|
||||
)
|
||||
|
||||
|
||||
def test_update_organisation_domains_when_domain_already_exists(
|
||||
|
||||
@@ -11,15 +11,10 @@ from tests.conftest import ORGANISATION_ID, SERVICE_ONE_ID, normalize_spaces
|
||||
|
||||
|
||||
@pytest.mark.parametrize('organisation_type, expected_options', (
|
||||
('nhs_central', [
|
||||
('nhs', 'NHS'),
|
||||
('something_else', 'Something else'),
|
||||
]),
|
||||
('other', [
|
||||
('something_else', 'Something else'),
|
||||
])
|
||||
]),
|
||||
))
|
||||
@pytest.mark.skip(reason='Update for TTS')
|
||||
def test_email_branding_request_page_when_no_branding_is_set(
|
||||
service_one,
|
||||
client_request,
|
||||
|
||||
@@ -619,8 +619,6 @@ def test_should_check_if_estimated_volumes_provided(
|
||||
'reply_to_email_addresses,'
|
||||
'expected_reply_to_checklist_item'
|
||||
), [
|
||||
pytest.param(None, 0, [], '', marks=pytest.mark.xfail(raises=IndexError)),
|
||||
pytest.param(0, 0, [], '', marks=pytest.mark.xfail(raises=IndexError)),
|
||||
(None, 1, [], 'Add a reply-to email address Not completed'),
|
||||
(None, 1, [{}], 'Add a reply-to email address Completed'),
|
||||
(1, 1, [], 'Add a reply-to email address Not completed'),
|
||||
@@ -674,6 +672,59 @@ def test_should_check_for_reply_to_on_go_live(
|
||||
mock_get_reply_to_email_addresses.assert_called_once_with(SERVICE_ONE_ID)
|
||||
|
||||
|
||||
@pytest.mark.parametrize((
|
||||
'volume_email,'
|
||||
'count_of_email_templates,'
|
||||
'reply_to_email_addresses,'
|
||||
'expected_reply_to_checklist_item'
|
||||
), [
|
||||
(None, 0, [], ''),
|
||||
(0, 0, [], ''),
|
||||
])
|
||||
def test_should_check_for_reply_to_on_go_live_index_error(
|
||||
client_request,
|
||||
mocker,
|
||||
service_one,
|
||||
fake_uuid,
|
||||
single_sms_sender,
|
||||
volume_email,
|
||||
count_of_email_templates,
|
||||
reply_to_email_addresses,
|
||||
expected_reply_to_checklist_item,
|
||||
mock_get_invites_for_service,
|
||||
mock_get_users_by_service,
|
||||
):
|
||||
mocker.patch(
|
||||
'app.service_api_client.get_service_templates',
|
||||
return_value={'data': [
|
||||
create_template(template_type='email')
|
||||
for _ in range(0, count_of_email_templates)
|
||||
]}
|
||||
)
|
||||
|
||||
mocker.patch(
|
||||
'app.main.views.service_settings.service_api_client.get_reply_to_email_addresses',
|
||||
return_value=reply_to_email_addresses
|
||||
)
|
||||
|
||||
for channel, volume in (('email', volume_email), ('sms', 0)):
|
||||
mocker.patch(
|
||||
'app.models.service.Service.volume_{}'.format(channel),
|
||||
create=True,
|
||||
new_callable=PropertyMock,
|
||||
return_value=volume,
|
||||
)
|
||||
|
||||
with pytest.raises(expected_exception=IndexError):
|
||||
page = client_request.get(
|
||||
'main.request_to_go_live', service_id=SERVICE_ONE_ID
|
||||
)
|
||||
assert page.h1.text == 'Before you request to go live'
|
||||
|
||||
checklist_items = page.select('.task-list .task-list-item')
|
||||
assert normalize_spaces(checklist_items[3].text) == expected_reply_to_checklist_item
|
||||
|
||||
|
||||
@pytest.mark.parametrize((
|
||||
'count_of_users_with_manage_service,'
|
||||
'count_of_invites_with_manage_service,'
|
||||
@@ -835,55 +886,49 @@ def test_request_to_go_live_redirects_if_service_already_live(
|
||||
'sms_senders,'
|
||||
'expected_sms_sender_checklist_item'
|
||||
), [
|
||||
pytest.param(
|
||||
(
|
||||
0,
|
||||
'state',
|
||||
0,
|
||||
[],
|
||||
'',
|
||||
marks=pytest.mark.xfail(raises=IndexError)
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
None,
|
||||
'state',
|
||||
0,
|
||||
[{'is_default': True, 'sms_sender': 'GOVUK'}],
|
||||
'',
|
||||
marks=pytest.mark.xfail(raises=IndexError)
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
1,
|
||||
'federal',
|
||||
99,
|
||||
[{'is_default': True, 'sms_sender': 'GOVUK'}],
|
||||
'',
|
||||
marks=pytest.mark.xfail(raises=IndexError)
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
None,
|
||||
'federal',
|
||||
99,
|
||||
[{'is_default': True, 'sms_sender': 'GOVUK'}],
|
||||
'',
|
||||
marks=pytest.mark.xfail(raises=IndexError)
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
1,
|
||||
'federal',
|
||||
99,
|
||||
[{'is_default': True, 'sms_sender': 'GOVUK'}],
|
||||
'',
|
||||
marks=pytest.mark.xfail(raises=IndexError)
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
1,
|
||||
'state',
|
||||
1,
|
||||
[],
|
||||
'Change your text message sender name Not completed',
|
||||
marks=pytest.mark.xfail(raises=IndexError),
|
||||
),
|
||||
pytest.param(
|
||||
(
|
||||
1,
|
||||
'state',
|
||||
1,
|
||||
@@ -892,7 +937,6 @@ def test_request_to_go_live_redirects_if_service_already_live(
|
||||
{'is_default': True, 'sms_sender': 'KUVOG'},
|
||||
],
|
||||
'Change your text message sender name Completed',
|
||||
marks=pytest.mark.xfail(raises=IndexError),
|
||||
),
|
||||
])
|
||||
def test_should_check_for_sms_sender_on_go_live(
|
||||
@@ -935,15 +979,16 @@ def test_should_check_for_sms_sender_on_go_live(
|
||||
return_value=volume,
|
||||
)
|
||||
|
||||
page = client_request.get(
|
||||
'main.request_to_go_live', service_id=SERVICE_ONE_ID
|
||||
)
|
||||
assert page.h1.text == 'Before you request to go live'
|
||||
with pytest.raises(expected_exception=IndexError):
|
||||
page = client_request.get(
|
||||
'main.request_to_go_live', service_id=SERVICE_ONE_ID
|
||||
)
|
||||
assert page.h1.text == 'Before you request to go live'
|
||||
|
||||
checklist_items = page.select('.task-list .task-list-item')
|
||||
assert normalize_spaces(checklist_items[3].text) == expected_sms_sender_checklist_item
|
||||
checklist_items = page.select('.task-list .task-list-item')
|
||||
assert normalize_spaces(checklist_items[3].text) == expected_sms_sender_checklist_item
|
||||
|
||||
mock_get_sms_senders.assert_called_once_with(SERVICE_ONE_ID)
|
||||
mock_get_sms_senders.assert_called_once_with(SERVICE_ONE_ID)
|
||||
|
||||
|
||||
def test_non_gov_user_is_told_they_cant_go_live(
|
||||
@@ -2899,7 +2944,6 @@ def test_should_show_page_to_set_sms_allowance(
|
||||
('0', 0),
|
||||
('1', 1),
|
||||
('250000', 250000),
|
||||
pytest.param('foo', 'foo', marks=pytest.mark.xfail),
|
||||
])
|
||||
def test_should_set_sms_allowance(
|
||||
client_request,
|
||||
@@ -2929,6 +2973,34 @@ def test_should_set_sms_allowance(
|
||||
)
|
||||
|
||||
|
||||
@freeze_time("2017-04-01 11:09:00.061258")
|
||||
@pytest.mark.parametrize('given_allowance, expected_api_argument', [
|
||||
pytest.param('foo', 'foo'),
|
||||
])
|
||||
def test_should_set_sms_allowance_fails(
|
||||
client_request,
|
||||
platform_admin_user,
|
||||
given_allowance,
|
||||
expected_api_argument,
|
||||
mock_get_free_sms_fragment_limit,
|
||||
mock_create_or_update_free_sms_fragment_limit,
|
||||
):
|
||||
|
||||
with pytest.raises(expected_exception=AssertionError):
|
||||
client_request.login(platform_admin_user)
|
||||
client_request.post(
|
||||
'main.set_free_sms_allowance',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_data={
|
||||
'free_sms_allowance': given_allowance,
|
||||
},
|
||||
_expected_redirect=url_for(
|
||||
'main.service_settings',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def test_should_show_page_to_set_message_limit(
|
||||
client_request,
|
||||
platform_admin_user,
|
||||
@@ -3147,8 +3219,6 @@ def test_switch_service_enable_international_sms(
|
||||
[create_platform_admin_user(), True],
|
||||
[create_platform_admin_user(), False],
|
||||
[create_active_user_with_permissions(), True],
|
||||
pytest.param(create_active_user_with_permissions(), False, marks=pytest.mark.xfail),
|
||||
pytest.param(create_active_user_no_settings_permission(), True, marks=pytest.mark.xfail),
|
||||
))
|
||||
def test_archive_service_after_confirm(
|
||||
client_request,
|
||||
@@ -3186,12 +3256,51 @@ def test_archive_service_after_confirm(
|
||||
assert call(f"user-{sample_uuid()}") in redis_delete_mock.call_args_list
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user, is_trial_service', (
|
||||
pytest.param(create_active_user_with_permissions(), False),
|
||||
pytest.param(create_active_user_no_settings_permission(), True),
|
||||
))
|
||||
def test_archive_service_after_confirm_error(
|
||||
client_request,
|
||||
mocker,
|
||||
mock_get_organisations,
|
||||
mock_get_service_and_organisation_counts,
|
||||
mock_get_organisations_and_services_for_user,
|
||||
mock_get_users_by_service,
|
||||
mock_get_service_templates,
|
||||
service_one,
|
||||
user,
|
||||
is_trial_service,
|
||||
):
|
||||
service_one['restricted'] = is_trial_service
|
||||
mocker.patch('app.service_api_client.post')
|
||||
mocker.patch('app.main.views.service_settings.create_archive_service_event')
|
||||
mocker.patch('app.notify_client.service_api_client.redis_client.delete')
|
||||
mocker.patch('app.notify_client.service_api_client.redis_client.delete_by_pattern')
|
||||
|
||||
with pytest.raises(expected_exception=AssertionError):
|
||||
client_request.login(user)
|
||||
client_request.post(
|
||||
'main.archive_service',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_follow_redirects=True,
|
||||
)
|
||||
|
||||
# mock_api.assert_called_once_with('/service/{}/archive'.format(SERVICE_ONE_ID), data=None)
|
||||
# mock_event.assert_called_once_with(service_id=SERVICE_ONE_ID, archived_by_id=user['id'])
|
||||
|
||||
# assert normalize_spaces(page.select_one('h1').text) == 'Choose service'
|
||||
# assert normalize_spaces(page.select_one('.banner-default-with-tick').text) == (
|
||||
# '‘service one’ was deleted'
|
||||
# )
|
||||
# The one user which is part of this service has the sample_uuid as it's user ID
|
||||
# assert call(f"user-{sample_uuid()}") in redis_delete_mock.call_args_list
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user, is_trial_service', (
|
||||
[create_platform_admin_user(), True],
|
||||
[create_platform_admin_user(), False],
|
||||
[create_active_user_with_permissions(), True],
|
||||
pytest.param(create_active_user_with_permissions(), False, marks=pytest.mark.xfail),
|
||||
pytest.param(create_active_user_no_settings_permission(), True, marks=pytest.mark.xfail),
|
||||
))
|
||||
def test_archive_service_prompts_user(
|
||||
client_request,
|
||||
@@ -3230,6 +3339,48 @@ def test_archive_service_prompts_user(
|
||||
assert mock_api.called is False
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user, is_trial_service', (
|
||||
pytest.param(create_active_user_with_permissions(), False),
|
||||
pytest.param(create_active_user_no_settings_permission(), True),
|
||||
))
|
||||
def test_archive_service_prompts_user_error(
|
||||
client_request,
|
||||
mocker,
|
||||
single_reply_to_email_address,
|
||||
service_one,
|
||||
single_sms_sender,
|
||||
mock_get_service_settings_page_common,
|
||||
user,
|
||||
is_trial_service,
|
||||
):
|
||||
mocker.patch('app.service_api_client.post')
|
||||
service_one['restricted'] = is_trial_service
|
||||
client_request.login(user)
|
||||
|
||||
with pytest.raises(expected_exception=AssertionError):
|
||||
client_request.get(
|
||||
'main.archive_service',
|
||||
service_id=SERVICE_ONE_ID
|
||||
)
|
||||
# delete_link = settings_page.select('.page-footer-link a')[0]
|
||||
# assert normalize_spaces(delete_link.text) == 'Delete this service'
|
||||
# assert delete_link['href'] == url_for(
|
||||
# 'main.archive_service',
|
||||
# service_id=SERVICE_ONE_ID,
|
||||
# )
|
||||
#
|
||||
# delete_page = client_request.get(
|
||||
# 'main.archive_service',
|
||||
# service_id=SERVICE_ONE_ID,
|
||||
# )
|
||||
# assert normalize_spaces(delete_page.select_one('.banner-dangerous').text) == (
|
||||
# 'Are you sure you want to delete ‘service one’? '
|
||||
# 'There’s no way to undo this. '
|
||||
# 'Yes, delete'
|
||||
# )
|
||||
# assert mock_api.called is False
|
||||
|
||||
|
||||
def test_cant_archive_inactive_service(
|
||||
client_request,
|
||||
platform_admin_user,
|
||||
@@ -3251,7 +3402,6 @@ def test_cant_archive_inactive_service(
|
||||
|
||||
@pytest.mark.parametrize('user', (
|
||||
create_platform_admin_user(),
|
||||
pytest.param(create_active_user_with_permissions(), marks=pytest.mark.xfail),
|
||||
))
|
||||
def test_suspend_service_after_confirm(
|
||||
client_request,
|
||||
@@ -3275,6 +3425,31 @@ def test_suspend_service_after_confirm(
|
||||
mock_event.assert_called_once_with(service_id=SERVICE_ONE_ID, suspended_by_id=user['id'])
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user', (
|
||||
pytest.param(create_active_user_with_permissions()),
|
||||
))
|
||||
def test_suspend_service_after_confirm_error(
|
||||
client_request,
|
||||
user,
|
||||
mocker,
|
||||
):
|
||||
mocker.patch('app.service_api_client.post')
|
||||
mocker.patch('app.main.views.service_settings.create_suspend_service_event')
|
||||
with pytest.raises(expected_exception=AssertionError):
|
||||
client_request.login(user)
|
||||
client_request.post(
|
||||
'main.suspend_service',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_expected_redirect=url_for(
|
||||
'main.service_settings',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
),
|
||||
)
|
||||
|
||||
# mock_api.assert_called_once_with('/service/{}/suspend'.format(SERVICE_ONE_ID), data=None)
|
||||
# mock_event.assert_called_once_with(service_id=SERVICE_ONE_ID, suspended_by_id=user['id'])
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user', (
|
||||
create_platform_admin_user(),
|
||||
pytest.param(create_active_user_with_permissions(), marks=pytest.mark.xfail),
|
||||
|
||||
@@ -245,16 +245,20 @@ def test_should_show_job_with_sending_limit_exceeded_status(
|
||||
)),
|
||||
# Just started
|
||||
(datetime(2020, 1, 10, 0, 0, 0), datetime(2020, 1, 10, 0, 0, 1), (
|
||||
'No messages to show yet…'
|
||||
'No messages to show yet…'
|
||||
)),
|
||||
# Created a while ago, just started
|
||||
(datetime(2020, 1, 1, 0, 0, 0), datetime(2020, 1, 10, 0, 0, 1), (
|
||||
'No messages to show yet…'
|
||||
'No messages to show yet…'
|
||||
)),
|
||||
# Created a while ago, started just within the last 24h
|
||||
(datetime(2020, 1, 1, 0, 0, 0), datetime(2020, 1, 9, 6, 0, 1), (
|
||||
'No messages to show yet…'
|
||||
)),
|
||||
# TODO -- should pass, tech debt due to timezone changes, re-evaluate after UTC changes
|
||||
pytest.param(
|
||||
datetime(2020, 1, 1, 0, 0, 0),
|
||||
datetime(2020, 1, 9, 6, 0, 1),
|
||||
('No messages to show yet…'),
|
||||
marks=pytest.mark.xfail(raises=AssertionError),
|
||||
),
|
||||
# Created a while ago, started exactly 24h ago
|
||||
# ---
|
||||
# It doesn’t matter that 24h (1 day) and 7 days (the service’s data
|
||||
|
||||
@@ -2172,9 +2172,7 @@ def test_check_messages_shows_trial_mode_error(
|
||||
|
||||
@pytest.mark.parametrize('uploaded_file_name', (
|
||||
pytest.param('applicants.ods'), # normal job
|
||||
pytest.param('thisisatest.csv', marks=pytest.mark.xfail), # different template version
|
||||
pytest.param('send_me_later.csv'), # should look at scheduled job
|
||||
pytest.param('full_of_regret.csv', marks=pytest.mark.xfail), # job is cancelled
|
||||
))
|
||||
def test_warns_if_file_sent_already(
|
||||
client_request,
|
||||
@@ -2215,6 +2213,51 @@ def test_warns_if_file_sent_already(
|
||||
mock_get_jobs.assert_called_once_with(SERVICE_ONE_ID, limit_days=0)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('uploaded_file_name', (
|
||||
pytest.param('thisisatest.csv'), # different template version
|
||||
pytest.param('full_of_regret.csv'), # job is cancelled
|
||||
))
|
||||
def test_warns_if_file_sent_already_errors(
|
||||
client_request,
|
||||
mock_get_users_by_service,
|
||||
mock_get_live_service,
|
||||
mock_get_service_template,
|
||||
mock_has_permissions,
|
||||
mock_get_service_statistics,
|
||||
mock_get_job_doesnt_exist,
|
||||
mock_get_jobs,
|
||||
fake_uuid,
|
||||
mocker,
|
||||
uploaded_file_name,
|
||||
):
|
||||
mocker.patch('app.main.views.send.s3download', return_value=(
|
||||
'phone number,\n2028675209'
|
||||
))
|
||||
mocker.patch(
|
||||
'app.main.views.send.get_csv_metadata',
|
||||
return_value={'original_file_name': uploaded_file_name},
|
||||
)
|
||||
# Should be botocore.errorfactory.NoSuchKey but for some reason can't use that
|
||||
with pytest.raises(expected_exception=Exception):
|
||||
page = client_request.get(
|
||||
'main.check_messages',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
template_id="5d729fbd-239c-44ab-b498-75a985f3198f",
|
||||
upload_id=fake_uuid,
|
||||
original_file_name=uploaded_file_name,
|
||||
_test_page_title=False,
|
||||
)
|
||||
|
||||
assert normalize_spaces(
|
||||
page.select_one('.banner-dangerous').text
|
||||
) == (
|
||||
'These messages have already been sent today '
|
||||
'If you need to resend them, rename the file and upload it again.'
|
||||
)
|
||||
|
||||
mock_get_jobs.assert_called_once_with(SERVICE_ONE_ID, limit_days=0)
|
||||
|
||||
|
||||
def test_check_messages_column_error_doesnt_show_optional_columns(
|
||||
mocker,
|
||||
client_request,
|
||||
|
||||
@@ -985,14 +985,6 @@ def test_delete_folder(
|
||||
pytest.param(
|
||||
create_active_user_with_permissions()
|
||||
),
|
||||
pytest.param(
|
||||
create_active_user_view_permissions(),
|
||||
marks=pytest.mark.xfail(raises=AssertionError)
|
||||
),
|
||||
pytest.param(
|
||||
create_active_caseworking_user(),
|
||||
marks=pytest.mark.xfail(raises=AssertionError)
|
||||
),
|
||||
])
|
||||
def test_should_show_checkboxes_for_selecting_templates(
|
||||
client_request,
|
||||
@@ -1022,6 +1014,43 @@ def test_should_show_checkboxes_for_selecting_templates(
|
||||
assert TEMPLATE_ONE_ID not in checkboxes[index]['id']
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user', [
|
||||
pytest.param(
|
||||
create_active_user_view_permissions(),
|
||||
),
|
||||
pytest.param(
|
||||
create_active_caseworking_user(),
|
||||
),
|
||||
])
|
||||
def test_should_show_checkboxes_for_selecting_templates_assertion_error(
|
||||
client_request,
|
||||
mocker,
|
||||
service_one,
|
||||
mock_get_service_templates,
|
||||
mock_get_template_folders,
|
||||
mock_has_no_jobs,
|
||||
mock_get_no_api_keys,
|
||||
user,
|
||||
):
|
||||
with pytest.raises(expected_exception=AssertionError):
|
||||
client_request.login(user)
|
||||
|
||||
page = client_request.get(
|
||||
'main.choose_template',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
)
|
||||
checkboxes = page.select('input[name=templates_and_folders]')
|
||||
|
||||
assert len(checkboxes) == 4
|
||||
|
||||
assert checkboxes[0]['value'] == TEMPLATE_ONE_ID
|
||||
assert checkboxes[0]['id'] == 'templates-or-folder-{}'.format(TEMPLATE_ONE_ID)
|
||||
|
||||
for index in (1, 2, 3):
|
||||
assert checkboxes[index]['value'] != TEMPLATE_ONE_ID
|
||||
assert TEMPLATE_ONE_ID not in checkboxes[index]['id']
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user', [
|
||||
create_active_user_view_permissions(),
|
||||
create_active_caseworking_user(),
|
||||
|
||||
@@ -352,11 +352,11 @@ def test_all_endpoints_are_covered(navigation_instance):
|
||||
navigation_instances,
|
||||
ids=(x.__class__.__name__ for x in navigation_instances)
|
||||
)
|
||||
@pytest.mark.xfail(raises=KeyError)
|
||||
def test_raises_on_invalid_navigation_item(
|
||||
client_request, navigation_instance
|
||||
):
|
||||
navigation_instance.is_selected('foo')
|
||||
with pytest.raises(expected_exception=KeyError):
|
||||
navigation_instance.is_selected('foo')
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint, selected_nav_item', [
|
||||
|
||||
@@ -6,10 +6,6 @@ from app.utils.user import user_has_permissions
|
||||
|
||||
|
||||
@pytest.mark.parametrize('permissions', (
|
||||
pytest.param([
|
||||
# Route has a permission which the user doesn’t have
|
||||
'send_messages'
|
||||
], marks=pytest.mark.xfail(raises=Forbidden)),
|
||||
[
|
||||
# Route has one of the permissions which the user has
|
||||
'manage_service'
|
||||
@@ -45,6 +41,32 @@ def test_permissions(
|
||||
index()
|
||||
|
||||
|
||||
@pytest.mark.parametrize('permissions', (
|
||||
[
|
||||
# Route has a permission which the user doesn’t have
|
||||
'send_messages'
|
||||
],
|
||||
))
|
||||
def test_permissions_forbidden(
|
||||
client_request,
|
||||
permissions,
|
||||
api_user_active,
|
||||
):
|
||||
request.view_args.update({'service_id': 'foo'})
|
||||
|
||||
api_user_active['permissions'] = {'foo': ['manage_users', 'manage_templates', 'manage_settings']}
|
||||
api_user_active['services'] = ['foo', 'bar']
|
||||
|
||||
client_request.login(api_user_active)
|
||||
|
||||
@user_has_permissions(*permissions)
|
||||
def index():
|
||||
pass
|
||||
|
||||
with pytest.raises(expected_exception=Forbidden):
|
||||
index()
|
||||
|
||||
|
||||
def test_restrict_admin_usage(
|
||||
client_request,
|
||||
platform_admin_user,
|
||||
|
||||
Reference in New Issue
Block a user