From bbeb3595a81c6b41bf2fdcea80b664ca23b2f14c Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Tue, 14 Feb 2017 14:06:02 +0000 Subject: [PATCH] update tests to work with new correct logged_in_client fixtures mostly making sure that the correct user is set up. some minor changes, such as giving the platform_admin service permissions (so that we can test that platform admins can send letters) --- tests/app/main/views/test_letters.py | 4 +- tests/app/main/views/test_main_nav.py | 48 ++-- tests/app/main/views/test_send.py | 38 +-- tests/app/main/views/test_service_settings.py | 264 +++++------------- tests/app/main/views/test_templates.py | 52 +--- tests/conftest.py | 29 +- 6 files changed, 175 insertions(+), 260 deletions(-) diff --git a/tests/app/main/views/test_letters.py b/tests/app/main/views/test_letters.py index d0586b8ce..cae581f36 100644 --- a/tests/app/main/views/test_letters.py +++ b/tests/app/main/views/test_letters.py @@ -16,7 +16,7 @@ letters_urls = [ (False, 403) ]) def test_letters_access_restricted( - logged_in_client, + logged_in_platform_admin_client, mocker, can_send_letters, response_code, @@ -26,7 +26,7 @@ def test_letters_access_restricted( service = service_json(can_send_letters=can_send_letters) mocker.patch('app.service_api_client.get_service', return_value={"data": service}) - response = logged_in_client.get(url(service_id=service['id'])) + response = logged_in_platform_admin_client.get(url(service_id=service['id'])) assert response.status_code == response_code diff --git a/tests/app/main/views/test_main_nav.py b/tests/app/main/views/test_main_nav.py index 9e00548f5..6de7c1602 100644 --- a/tests/app/main/views/test_main_nav.py +++ b/tests/app/main/views/test_main_nav.py @@ -1,43 +1,57 @@ from flask import url_for from bs4 import BeautifulSoup -from tests import service_json +from tests.conftest import mock_get_user -def test_can_see_letters_if_allowed(logged_in_client, mocker): - service = service_json(can_send_letters=True) - mocker.patch('app.service_api_client.get_service', return_value={"data": service}) +def test_can_see_letters_if_allowed( + logged_in_client, + service_one, + mocker, + mock_get_users_by_service, + mock_get_invites_for_service +): + service_one['can_send_letters'] = True + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) - response = logged_in_client.get(url_for('main.service_settings', service_id=service['id'])) + response = logged_in_client.get(url_for('main.manage_users', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert 'Letter templates' in page.find('nav', class_='navigation').text -def test_cant_see_letters_if_not_allowed(logged_in_client, mocker): - service = service_json(can_send_letters=False) - mocker.patch('app.service_api_client.get_service', return_value={"data": service}) +def test_cant_see_letters_if_not_allowed( + logged_in_client, + service_one, + mocker, + mock_get_users_by_service, + mock_get_invites_for_service +): + service_one['can_send_letters'] = False + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) - response = logged_in_client.get(url_for('main.service_settings', service_id=service['id'])) + response = logged_in_client.get(url_for('main.manage_users', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert 'Letter templates' not in page.find('nav', class_='navigation').text -def test_can_see_letters_without_permissions( +def test_can_see_letters_without_edit_permissions( client, mocker, - mock_login, - mock_has_permissions, - api_user_active, + active_user_view_permissions, + mock_get_users_by_service, + mock_get_invites_for_service, + service_one ): - service = service_json(can_send_letters=True) - mocker.patch('app.service_api_client.get_service', return_value={"data": service}) + mock_get_user(mocker, user=active_user_view_permissions) + service_one['can_send_letters'] = True + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) - client.login(api_user_active) - response = client.get(url_for('main.service_settings', service_id=service['id'])) + client.login(active_user_view_permissions) + response = client.get(url_for('main.manage_users', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index 3cdb64788..82573cd26 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -416,20 +416,21 @@ def test_create_job_should_call_api( def test_can_start_letters_job( - logged_in_client, + logged_in_platform_admin_client, mock_create_job, - mock_get_service_letter_template, + service_one, fake_uuid ): - with logged_in_client.session_transaction() as session: + + with logged_in_platform_admin_client.session_transaction() as session: session['upload_data'] = { 'original_file_name': 'example.csv', 'template_id': fake_uuid, 'notification_count': 123, 'valid': True } - response = logged_in_client.post( - url_for('main.start_job', service_id=fake_uuid, upload_id=fake_uuid), + response = logged_in_platform_admin_client.post( + url_for('main.start_job', service_id=service_one['id'], upload_id=fake_uuid), data={} ) assert response.status_code == 302 @@ -447,13 +448,16 @@ def test_should_show_preview_letter_message( mock_letter_preview, view, expected_content_type, - logged_in_client, + logged_in_platform_admin_client, mock_get_service_letter_template, mock_get_users_by_service, mock_get_detailed_service_for_today, + service_one, fake_uuid, mocker, ): + service_one['can_send_letters'] = True + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) mocker.patch( 'app.main.views.send.s3download', @@ -463,16 +467,18 @@ def test_should_show_preview_letter_message( ) ) - service_id = fake_uuid + service_id = service_one['id'] template_id = fake_uuid - with logged_in_client.session_transaction() as session: + with logged_in_platform_admin_client.session_transaction() as session: session['upload_data'] = { 'original_file_name': 'example.csv', 'template_id': fake_uuid, 'notification_count': 1, 'valid': True } - response = logged_in_client.get(url_for(view, service_id=service_id, template_type='letter', upload_id=fake_uuid)) + response = logged_in_platform_admin_client.get( + url_for(view, service_id=service_id, template_type='letter', upload_id=fake_uuid) + ) assert response.status_code == 200 assert response.content_type == expected_content_type @@ -917,16 +923,16 @@ def test_check_messages_shows_over_max_row_error( ) -def test_check_messages_redirects_if_no_upload_data(logged_in_client, mocker): +def test_check_messages_redirects_if_no_upload_data(logged_in_client, service_one, mocker): checker = mocker.patch('app.main.views.send.get_check_messages_back_url', return_value='foo') response = logged_in_client.get(url_for( 'main.check_messages', - service_id='0', + service_id=service_one['id'], template_type='bar', upload_id='baz' )) - checker.assert_called_once_with('0', 'bar') + checker.assert_called_once_with(service_one['id'], 'bar') assert response.status_code == 301 assert response.location == 'http://localhost/foo' @@ -942,14 +948,14 @@ def test_get_check_messages_back_url_returns_to_correct_select_template(client, ) -def test_check_messages_back_from_help_goes_to_start_of_help(client, mocker): +def test_check_messages_back_from_help_goes_to_start_of_help(client, service_one, mocker): mocker.patch('app.main.views.send.get_help_argument', return_value=True) mocker.patch('app.service_api_client.get_service_templates', lambda service_id: { - 'data': [template_json('000', '111', type_='sms')] + 'data': [template_json(service_one['id'], '111', type_='sms')] }) - assert get_check_messages_back_url('000', 'sms') == url_for( + assert get_check_messages_back_url(service_one['id'], 'sms') == url_for( 'main.send_test', - service_id='000', + service_id=service_one['id'], template_id='111', help='1' ) diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 23e53a0d9..b35c06fcd 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -12,10 +12,7 @@ from tests import validate_route_permission, service_json def test_should_show_overview( logged_in_client, - active_user_with_permissions, - mocker, service_one, - mock_get_organisation, ): response = logged_in_client.get(url_for( 'main.service_settings', service_id=service_one['id'] @@ -54,8 +51,6 @@ def test_should_show_overview_for_service_with_more_things_set( def test_should_show_service_name( logged_in_client, - active_user_with_permissions, - mocker, service_one, ): response = logged_in_client.get(url_for( @@ -70,13 +65,8 @@ def test_should_show_service_name( def test_should_redirect_after_change_service_name( logged_in_client, service_one, - active_user_with_permissions, - mock_login, - mock_get_user, - mock_get_service, mock_update_service, mock_get_services, - mock_has_permissions, ): response = logged_in_client.post( url_for('main.service_name_change', service_id=service_one['id']), @@ -92,12 +82,6 @@ def test_should_redirect_after_change_service_name( def test_show_restricted_service( logged_in_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_has_permissions, - mock_get_service, - mock_get_organisation, ): response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -106,17 +90,11 @@ def test_show_restricted_service( def test_switch_service_to_live( - logged_in_client, + logged_in_platform_admin_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_service, mock_update_service, - mock_has_permissions, - mock_get_organisation, ): - response = logged_in_client.get( + response = logged_in_platform_admin_client.get( url_for('main.service_switch_live', service_id=service_one['id'])) assert response.status_code == 302 assert response.location == url_for( @@ -132,12 +110,7 @@ def test_switch_service_to_live( def test_show_live_service( logged_in_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_live_service, - mock_has_permissions, - mock_get_organisation, + mock_get_live_service ): response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -146,17 +119,12 @@ def test_show_live_service( def test_switch_service_to_restricted( - logged_in_client, + logged_in_platform_admin_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, mock_get_live_service, - mock_update_service, - mock_has_permissions, - mock_get_organisation, + mock_update_service ): - response = logged_in_client.get( + response = logged_in_platform_admin_client.get( url_for('main.service_switch_live', service_id=service_one['id'])) assert response.status_code == 302 assert response.location == url_for( @@ -171,7 +139,6 @@ def test_switch_service_to_restricted( def test_should_not_allow_duplicate_names( logged_in_client, - active_user_with_permissions, mocker, service_one, ): @@ -190,8 +157,6 @@ def test_should_not_allow_duplicate_names( def test_should_show_service_name_confirmation( logged_in_client, - active_user_with_permissions, - mocker, service_one, ): response = logged_in_client.get(url_for( @@ -205,14 +170,10 @@ def test_should_show_service_name_confirmation( def test_should_redirect_after_service_name_confirmation( logged_in_client, - active_user_with_permissions, service_one, - mocker, mock_update_service, - mock_verify_password, - mock_get_organisation, + mock_verify_password ): - logged_in_client.login(active_user_with_permissions, mocker, service_one) service_id = service_one['id'] service_new_name = 'New Name' with logged_in_client.session_transaction() as session: @@ -233,13 +194,9 @@ def test_should_redirect_after_service_name_confirmation( def test_should_raise_duplicate_name_handled( logged_in_client, - active_user_with_permissions, service_one, - mocker, - mock_get_services, mock_update_service_raise_httperror_duplicate_name, - mock_verify_password, - fake_uuid, + mock_verify_password ): service_new_name = 'New Name' with logged_in_client.session_transaction() as session: @@ -257,18 +214,11 @@ def test_should_raise_duplicate_name_handled( def test_should_show_request_to_go_live( logged_in_client, - api_user_active, mock_get_service, - mock_get_user, - mock_get_user_by_email, - mock_login, - mock_has_permissions, - fake_uuid, + service_one ): - service_id = fake_uuid response = logged_in_client.get( - url_for('main.service_request_to_go_live', service_id=service_id)) - service = mock_get_service.side_effect(service_id)['data'] + url_for('main.service_request_to_go_live', service_id=service_one['id'])) assert response.status_code == 200 resp_data = response.get_data(as_text=True) assert 'Request to go live' in resp_data @@ -277,18 +227,15 @@ def test_should_show_request_to_go_live( def test_should_redirect_after_request_to_go_live( logged_in_client, - api_user_active, - mock_get_user, - mock_get_service, - mock_has_permissions, - mock_get_organisation, + active_user_with_permissions, + service_one, mocker, ): mock_post = mocker.patch( 'app.main.views.feedback.requests.post', return_value=Mock(status_code=201)) response = logged_in_client.post( - url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'), + url_for('main.service_request_to_go_live', service_id=service_one['id']), data={ 'mou': 'yes', 'channel': 'emails', @@ -303,12 +250,12 @@ def test_should_redirect_after_request_to_go_live( mock_post.assert_called_with( ANY, data={ - 'subject': 'Request to go live - Test Service', + 'subject': 'Request to go live - service one', 'department_id': ANY, 'agent_team_id': ANY, 'message': ANY, - 'person_name': api_user_active.name, - 'person_email': api_user_active.email_address + 'person_name': active_user_with_permissions.name, + 'person_email': active_user_with_permissions.email_address }, headers=ANY ) @@ -330,10 +277,7 @@ def test_should_redirect_after_request_to_go_live( def test_log_error_on_request_to_go_live( app_, logged_in_client, - api_user_active, - mock_get_user, - mock_get_service, - mock_has_permissions, + service_one, mocker, ): mock_post = mocker.patch( @@ -348,8 +292,8 @@ def test_log_error_on_request_to_go_live( ) mock_logger = mocker.patch.object(app_.logger, 'error') with pytest.raises(InternalServerError): - resp = logged_in_client.post( - url_for('main.service_request_to_go_live', service_id='6ce466d0-fd6a-11e5-82f5-e0accb9d11a6'), + logged_in_client.post( + url_for('main.service_request_to_go_live', service_id=service_one['id']), data={ 'mou': 'yes', 'channel': 'emails', @@ -469,11 +413,8 @@ def test_route_for_platform_admin_update_service( def test_set_reply_to_email_address( logged_in_client, - active_user_with_permissions, - mocker, mock_update_service, service_one, - mock_get_organisation, ): data = {"email_address": "test@someservice.gov.uk"} response = logged_in_client.post(url_for('main.service_set_reply_to_email', service_id=service_one['id']), @@ -488,8 +429,6 @@ def test_set_reply_to_email_address( def test_if_reply_to_email_address_set_then_form_populated( logged_in_client, - active_user_with_permissions, - mocker, service_one, ): service_one['reply_to_email_address'] = 'test@service.gov.uk' @@ -501,75 +440,53 @@ def test_if_reply_to_email_address_set_then_form_populated( def test_switch_service_to_research_mode( - logged_in_client, + logged_in_platform_admin_client, + platform_admin_user, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_service, - mock_has_permissions, mocker, ): mocker.patch('app.service_api_client.post', return_value=service_one) - response = logged_in_client.get(url_for('main.service_switch_research_mode', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get( + url_for('main.service_switch_research_mode', service_id=service_one['id']) + ) assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) app.service_api_client.post.assert_called_with( '/service/{}'.format(service_one['id']), { 'research_mode': True, - 'created_by': active_user_with_permissions.id + 'created_by': platform_admin_user.id } ) def test_switch_service_from_research_mode_to_normal( - logged_in_client, - service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_service, - mock_has_permissions, + logged_in_platform_admin_client, mocker, ): service = service_json( - users=[active_user_with_permissions.id], - restricted=True, research_mode=True ) mocker.patch('app.service_api_client.get_service', return_value={"data": service}) - mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one) + update_service_mock = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service) - response = logged_in_client.get(url_for('main.service_switch_research_mode', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get( + url_for('main.service_switch_research_mode', service_id=service['id']) + ) assert response.status_code == 302 - assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) - app.service_api_client.update_service_with_properties.assert_called_with( - service_one['id'], {"research_mode": False} + assert response.location == url_for('main.service_settings', service_id=service['id'], _external=True) + update_service_mock.assert_called_with( + service['id'], {"research_mode": False} ) def test_shows_research_mode_indicator( logged_in_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_service, - mock_has_permissions, - mock_get_organisation, mocker, ): - service = service_json( - "1234", - "Test Service", - [active_user_with_permissions.id], - message_limit=1000, - active=False, - restricted=True, - research_mode=True - ) - mocker.patch('app.service_api_client.get_service', return_value={"data": service}) + service_one['research_mode'] = True + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one) response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) @@ -583,13 +500,6 @@ def test_shows_research_mode_indicator( def test_does_not_show_research_mode_indicator( logged_in_client, service_one, - mock_login, - mock_get_user, - active_user_with_permissions, - mock_get_service, - mock_has_permissions, - mock_get_organisation, - mocker, ): response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) assert response.status_code == 200 @@ -601,11 +511,8 @@ def test_does_not_show_research_mode_indicator( def test_set_text_message_sender( logged_in_client, - active_user_with_permissions, - mocker, mock_update_service, service_one, - mock_get_organisation, ): data = {"sms_sender": "elevenchars"} response = logged_in_client.post(url_for('main.service_set_sms_sender', service_id=service_one['id']), @@ -621,8 +528,6 @@ def test_set_text_message_sender( def test_if_sms_sender_set_then_form_populated( logged_in_client, - active_user_with_permissions, - mocker, service_one, ): service_one['sms_sender'] = 'elevenchars' @@ -634,13 +539,11 @@ def test_if_sms_sender_set_then_form_populated( def test_should_show_branding( - mocker, - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, - mock_get_organisations, + mock_get_organisations ): - response = logged_in_client.get(url_for( + response = logged_in_platform_admin_client.get(url_for( 'main.service_set_branding_and_org', service_id=service_one['id'] )) assert response.status_code == 200 @@ -659,13 +562,11 @@ def test_should_show_branding( def test_should_show_organisations( - mocker, - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, - mock_get_organisations, + mock_get_organisations ): - response = logged_in_client.get(url_for( + response = logged_in_platform_admin_client.get(url_for( 'main.service_set_branding_and_org', service_id=service_one['id'] )) assert response.status_code == 200 @@ -684,14 +585,12 @@ def test_should_show_organisations( def test_should_set_branding_and_organisations( - mocker, - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mock_get_organisations, mock_update_service, ): - response = logged_in_client.post( + response = logged_in_platform_admin_client.post( url_for( 'main.service_set_branding_and_org', service_id=service_one['id'] ), @@ -703,8 +602,8 @@ def test_should_set_branding_and_organisations( assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) - app.organisations_client.get_organisations.assert_called_once_with() - app.service_api_client.update_service.assert_called_once_with( + mock_get_organisations.assert_called_once_with() + mock_update_service.assert_called_once_with( service_one['id'], branding='org', organisation='organisation-id' @@ -712,14 +611,15 @@ def test_should_set_branding_and_organisations( def test_switch_service_enable_letters( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): mocked_fn = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one) - response = logged_in_client.get(url_for('main.service_switch_can_send_letters', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get( + url_for('main.service_switch_can_send_letters', service_id=service_one['id']) + ) assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) @@ -727,30 +627,31 @@ def test_switch_service_enable_letters( def test_switch_service_disable_letters( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, + service_one, mocker, ): - service = service_json("1234", "Test Service", [], can_send_letters=True) - mocker.patch('app.service_api_client.get_service', return_value={"data": service}) - mocked_fn = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service) + service_one['can_send_letters'] = True + mocker.patch('app.service_api_client.get_service', return_value={"data": service_one}) + mocked_fn = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one) - response = logged_in_client.get(url_for('main.service_switch_can_send_letters', service_id=service['id'])) + response = logged_in_platform_admin_client.get( + url_for('main.service_switch_can_send_letters', service_id=service_one['id']) + ) assert response.status_code == 302 - assert response.location == url_for('main.service_settings', service_id=service['id'], _external=True) - assert mocked_fn.call_args == call(service['id'], {"can_send_letters": False}) + assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) + assert mocked_fn.call_args == call(service_one['id'], {"can_send_letters": False}) def test_archive_service_after_confirm( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): mocked_fn = mocker.patch('app.service_api_client.post', return_value=service_one) - response = logged_in_client.post(url_for('main.archive_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.post(url_for('main.archive_service', service_id=service_one['id'])) assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) @@ -758,14 +659,13 @@ def test_archive_service_after_confirm( def test_archive_service_prompts_user( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): mocked_fn = mocker.patch('app.service_api_client.post') - response = logged_in_client.get(url_for('main.archive_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.archive_service', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -774,14 +674,12 @@ def test_archive_service_prompts_user( def test_cant_archive_inactive_service( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, - mocker, ): service_one['active'] = False - response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.service_settings', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -789,14 +687,13 @@ def test_cant_archive_inactive_service( def test_suspend_service_after_confirm( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): mocked_fn = mocker.patch('app.service_api_client.post', return_value=service_one) - response = logged_in_client.post(url_for('main.suspend_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.post(url_for('main.suspend_service', service_id=service_one['id'])) assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) @@ -804,14 +701,13 @@ def test_suspend_service_after_confirm( def test_suspend_service_prompts_user( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): mocked_fn = mocker.patch('app.service_api_client.post') - response = logged_in_client.get(url_for('main.suspend_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.suspend_service', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -821,14 +717,12 @@ def test_suspend_service_prompts_user( def test_cant_suspend_inactive_service( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, - mocker, ): service_one['active'] = False - response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.service_settings', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -836,15 +730,14 @@ def test_cant_suspend_inactive_service( def test_resume_service_after_confirm( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): service_one['active'] = False mocked_fn = mocker.patch('app.service_api_client.post', return_value=service_one) - response = logged_in_client.post(url_for('main.resume_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.post(url_for('main.resume_service', service_id=service_one['id'])) assert response.status_code == 302 assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True) @@ -852,15 +745,14 @@ def test_resume_service_after_confirm( def test_resume_service_prompts_user( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, mocker, ): service_one['active'] = False mocked_fn = mocker.patch('app.service_api_client.post') - response = logged_in_client.get(url_for('main.resume_service', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.resume_service', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') @@ -870,12 +762,10 @@ def test_resume_service_prompts_user( def test_cant_resume_active_service( - logged_in_client, - platform_admin_user, + logged_in_platform_admin_client, service_one, - mocker, ): - response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id'])) + response = logged_in_platform_admin_client.get(url_for('main.service_settings', service_id=service_one['id'])) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index 162198432..aa15e83f5 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -14,53 +14,43 @@ from app.main.views.templates import get_last_use_message, get_human_readable_de def test_should_show_page_for_one_template( - client, - active_user_with_permissions, - mocker, + logged_in_client, mock_get_service_template, + service_one, fake_uuid, ): - - service = create_sample_service(active_user_with_permissions) - client.login(active_user_with_permissions, mocker, service) - service_id = service['id'] template_id = fake_uuid - response = client.get(url_for( + response = logged_in_client.get(url_for( '.edit_service_template', - service_id=service_id, + service_id=service_one['id'], template_id=template_id)) assert response.status_code == 200 assert "Two week reminder" in response.get_data(as_text=True) assert "Template <em>content</em> with & entity" in response.get_data(as_text=True) assert "Use priority queue?" not in response.get_data(as_text=True) - mock_get_service_template.assert_called_with( - service_id, template_id) + mock_get_service_template.assert_called_with(service_one['id'], template_id) def test_should_show_page_template_with_priority_select_if_platform_admin( - logged_in_client, + logged_in_platform_admin_client, platform_admin_user, mocker, mock_get_service_template, fake_uuid, ): - - service = create_sample_service(platform_admin_user) mocker.patch('app.user_api_client.get_users_for_service', return_value=[platform_admin_user]) - service_id = service['id'] template_id = fake_uuid - response = logged_in_client.get(url_for( + response = logged_in_platform_admin_client.get(url_for( '.edit_service_template', - service_id=service_id, + service_id='1234', template_id=template_id)) assert response.status_code == 200 assert "Two week reminder" in response.get_data(as_text=True) assert "Template <em>content</em> with & entity" in response.get_data(as_text=True) assert "Use priority queue?" in response.get_data(as_text=True) - mock_get_service_template.assert_called_with( - service_id, template_id) + mock_get_service_template.assert_called_with('1234', template_id) @pytest.mark.parametrize('view_suffix, expected_content_type', [ @@ -278,28 +268,22 @@ def test_should_show_interstitial_when_making_breaking_change( def test_should_not_create_too_big_template( logged_in_client, - api_user_active, - mock_login, + service_one, mock_get_service_template, - mock_get_user, - mock_get_service, - mock_get_user_by_email, mock_create_service_template_content_too_big, - mock_has_permissions, fake_uuid, ): - service_id = fake_uuid template_type = 'sms' data = { 'name': "new name", 'template_content': "template content", 'template_type': template_type, - 'service': service_id, + 'service': service_one['id'], 'process_type': 'normal' } resp = logged_in_client.post(url_for( '.add_service_template', - service_id=service_id, + service_id=service_one['id'], template_type=template_type ), data=data) @@ -309,29 +293,23 @@ def test_should_not_create_too_big_template( def test_should_not_update_too_big_template( logged_in_client, - api_user_active, - mock_login, + service_one, mock_get_service_template, - mock_get_user, - mock_get_service, - mock_get_user_by_email, mock_update_service_template_400_content_too_big, - mock_has_permissions, fake_uuid, ): - service_id = fake_uuid template_id = fake_uuid data = { 'id': fake_uuid, 'name': "new name", 'template_content': "template content", - 'service': service_id, + 'service': service_one['id'], 'template_type': 'sms', 'process_type': 'normal' } resp = logged_in_client.post(url_for( '.edit_service_template', - service_id=service_id, + service_id=service_one['id'], template_id=template_id), data=data) assert resp.status_code == 200 diff --git a/tests/conftest.py b/tests/conftest.py index 9a83fadfe..98d9a9f50 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -520,7 +520,14 @@ def platform_admin_user(fake_uuid): 'mobile_number': '07700 900762', 'state': 'active', 'failed_login_count': 0, - 'permissions': {}, + 'permissions': {SERVICE_ONE_ID: ['send_texts', + 'send_emails', + 'send_letters', + 'manage_users', + 'manage_templates', + 'manage_settings', + 'manage_api_keys', + 'view_activity']}, 'platform_admin': True } user = User(user_data) @@ -589,6 +596,25 @@ def active_user_with_permissions(fake_uuid): return user +@pytest.fixture +def active_user_view_permissions(fake_uuid): + from app.notify_client.user_api_client import User + + user_data = {'id': fake_uuid, + 'name': 'Test User With Permissions', + 'password': 'somepassword', + 'password_changed_at': str(datetime.utcnow()), + 'email_address': 'test@user.gov.uk', + 'mobile_number': '07700 900762', + 'state': 'active', + 'failed_login_count': 0, + 'permissions': {SERVICE_ONE_ID: ['view_activity']}, + 'platform_admin': False + } + user = User(user_data) + return user + + @pytest.fixture(scope='function') def api_user_locked(fake_uuid): from app.notify_client.user_api_client import User @@ -1379,6 +1405,7 @@ def logged_in_platform_admin_client( service_one, mock_login, ): + mock_get_user(mocker, user=platform_admin_user) client.login(platform_admin_user, mocker, service_one) yield client