diff --git a/app/templates/views/service-settings/set-auth-type.html b/app/templates/views/service-settings/set-auth-type.html
index 338c027e2..ef163ab5e 100644
--- a/app/templates/views/service-settings/set-auth-type.html
+++ b/app/templates/views/service-settings/set-auth-type.html
@@ -3,7 +3,7 @@
{% from "components/page-footer.html" import page_footer %}
{% block service_page_title %}
- Text message sender
+ Sign-in method
{% endblock %}
{% block maincolumn_content %}
diff --git a/app/templates/views/templates/action_blocked.html b/app/templates/views/templates/action_blocked.html
index a9b52d72d..2e6e641bc 100644
--- a/app/templates/views/templates/action_blocked.html
+++ b/app/templates/views/templates/action_blocked.html
@@ -3,7 +3,7 @@
{% from "components/page-footer.html" import page_footer %}
{% block service_page_title %}
- Emails
+ {{ notification_type.capitalize() }} are disabled
{% endblock %}
{% block maincolumn_content %}
diff --git a/tests/app/main/views/organisations/test_organisation_invites.py b/tests/app/main/views/organisations/test_organisation_invites.py
index 145b8868c..bff550321 100644
--- a/tests/app/main/views/organisations/test_organisation_invites.py
+++ b/tests/app/main/views/organisations/test_organisation_invites.py
@@ -50,7 +50,7 @@ def test_organisation_page_shows_all_organisations(
def test_view_organisation_shows_the_correct_organisation(
- logged_in_client,
+ client_request,
mocker
):
org = {'id': ORGANISATION_ID, 'name': 'Test 1', 'active': True}
@@ -61,13 +61,11 @@ def test_view_organisation_shows_the_correct_organisation(
'app.organisations_client.get_organisation_services', return_value=[]
)
- response = logged_in_client.get(
- url_for('.organisation_dashboard', org_id=ORGANISATION_ID)
+ page = client_request.get(
+ '.organisation_dashboard',
+ org_id=ORGANISATION_ID,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
assert normalize_spaces(page.select_one('.heading-large').text) == 'Services'
@@ -92,19 +90,17 @@ def test_create_new_organisation(
def test_organisation_services_show(
- logged_in_client,
+ client_request,
mock_get_organisation,
mock_get_organisation_services,
mocker,
fake_uuid,
):
- response = logged_in_client.get(
- url_for('.organisation_dashboard', org_id=ORGANISATION_ID),
+ page = client_request.get(
+ '.organisation_dashboard',
+ org_id=ORGANISATION_ID,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
assert len(page.select('.browse-list-item')) == 3
for i in range(0, 2):
@@ -121,20 +117,18 @@ def test_organisation_services_show(
def test_view_team_members(
- logged_in_client,
+ client_request,
mocker,
mock_get_organisation,
mock_get_users_for_organisation,
mock_get_invited_users_for_organisation,
fake_uuid
):
- response = logged_in_client.get(
- url_for('.manage_org_users', org_id=ORGANISATION_ID),
+ page = client_request.get(
+ '.manage_org_users',
+ org_id=ORGANISATION_ID,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
for i in range(0, 2):
assert normalize_spaces(
page.select('.user-list-item .heading-small')[i].text
@@ -146,7 +140,7 @@ def test_view_team_members(
def test_invite_org_user(
- logged_in_client,
+ client_request,
mocker,
mock_get_organisation,
sample_org_invite,
@@ -157,9 +151,10 @@ def test_invite_org_user(
return_value=InvitedOrgUser(**sample_org_invite)
)
- logged_in_client.post(
- url_for('.invite_org_user', org_id=ORGANISATION_ID),
- data={'email_address': 'test@example.gov.uk'}
+ client_request.post(
+ '.invite_org_user',
+ org_id=ORGANISATION_ID,
+ _data={'email_address': 'test@example.gov.uk'}
)
mock_invite_org_user.assert_called_once_with(
@@ -196,18 +191,18 @@ def test_invite_org_user_errors_when_same_email_as_inviter(
def test_accepted_invite_when_user_already_logged_in(
- logged_in_client,
+ client_request,
mock_check_org_invite_token
):
- response = logged_in_client.get(
- url_for('main.accept_org_invite', token='thisisnotarealtoken'),
- follow_redirects=True
+ page = client_request.get(
+ 'main.accept_org_invite',
+ token='thisisnotarealtoken',
+ follow_redirects=True,
+ _expected_status=403,
+ )
+ assert 'This invite is for another email address.' in normalize_spaces(
+ page.select_one('.banner-dangerous').text
)
-
- assert response.status_code == 403
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
- assert 'This invite is for another email address.' in normalize_spaces(page.select_one('.banner-dangerous').text)
def test_cancelled_invite_opened_by_user(
diff --git a/tests/app/main/views/service_settings/test_inbound_sms_setting.py b/tests/app/main/views/service_settings/test_inbound_sms_setting.py
index 8114c4faf..c4ac86de5 100644
--- a/tests/app/main/views/service_settings/test_inbound_sms_setting.py
+++ b/tests/app/main/views/service_settings/test_inbound_sms_setting.py
@@ -1,13 +1,10 @@
-from flask import url_for
-
-from tests.conftest import normalize_spaces
+from tests.conftest import SERVICE_ONE_ID, normalize_spaces
def test_set_inbound_sms_sets_a_number_for_service(
- logged_in_client,
+ client_request,
mock_add_sms_sender,
multiple_available_inbound_numbers,
- service_one,
fake_uuid,
mock_no_inbound_number_for_service,
mocker
@@ -17,14 +14,15 @@ def test_set_inbound_sms_sets_a_number_for_service(
"inbound_number": "781d9c60-7a7e-46b7-9896-7b045b992fa5",
}
- response = logged_in_client.post(
- url_for('main.service_set_inbound_number', service_id=service_one['id']),
- data=data
+ client_request.post(
+ 'main.service_set_inbound_number',
+ service_id=SERVICE_ONE_ID,
+ _data=data,
+ _expected_status=302,
)
- assert response.status_code == 302
mock_add_sms_sender.assert_called_once_with(
- service_one['id'],
+ SERVICE_ONE_ID,
sms_sender="781d9c60-7a7e-46b7-9896-7b045b992fa5",
is_default=True,
inbound_number_id="781d9c60-7a7e-46b7-9896-7b045b992fa5"
diff --git a/tests/app/main/views/test_accept_invite.py b/tests/app/main/views/test_accept_invite.py
index d9825a3bd..6f654f57e 100644
--- a/tests/app/main/views/test_accept_invite.py
+++ b/tests/app/main/views/test_accept_invite.py
@@ -396,7 +396,7 @@ def test_new_user_accept_invite_completes_new_registration_redirects_to_verify(
def test_signed_in_existing_user_cannot_use_anothers_invite(
- logged_in_client,
+ client_request,
mocker,
api_user_active,
sample_invite,
@@ -408,9 +408,12 @@ def test_signed_in_existing_user_cannot_use_anothers_invite(
mocker.patch('app.invite_api_client.check_token', return_value=invite)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[api_user_active])
- response = logged_in_client.get(url_for('main.accept_invite', token='thisisnotarealtoken'), follow_redirects=True)
- assert response.status_code == 403
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.accept_invite',
+ token='thisisnotarealtoken',
+ _follow_redirects=True,
+ _expected_status=403,
+ )
assert page.h1.string.strip() == '403'
flash_banners = page.find_all('div', class_='banner-dangerous')
assert len(flash_banners) == 1
@@ -422,11 +425,10 @@ def test_signed_in_existing_user_cannot_use_anothers_invite(
def test_accept_invite_does_not_treat_email_addresses_as_case_sensitive(
- logged_in_client,
+ client_request,
mocker,
api_user_active,
sample_invite,
- service_one,
mock_accept_invite,
mock_get_user_by_email
):
@@ -436,10 +438,16 @@ def test_accept_invite_does_not_treat_email_addresses_as_case_sensitive(
mocker.patch('app.invite_api_client.check_token', return_value=invite)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[api_user_active])
- response = logged_in_client.get(url_for('main.accept_invite', token='thisisnotarealtoken'))
-
- assert response.status_code == 302
- assert response.location == url_for('main.service_dashboard', service_id=service_one['id'], _external=True)
+ client_request.get(
+ 'main.accept_invite',
+ token='thisisnotarealtoken',
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ )
+ )
def test_new_invited_user_verifies_and_added_to_service(
diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py
index ff0f8de0f..84106ff66 100644
--- a/tests/app/main/views/test_activity.py
+++ b/tests/app/main/views/test_activity.py
@@ -4,7 +4,6 @@ from functools import partial
from urllib.parse import parse_qs, quote, urlparse
import pytest
-from bs4 import BeautifulSoup
from flask import url_for
from freezegun import freeze_time
@@ -113,7 +112,7 @@ def test_can_show_notifications(
if expected_to_argument:
page = client_request.post(
'main.view_notifications',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
status=status_argument,
page=page_argument,
_data={
@@ -125,7 +124,7 @@ def test_can_show_notifications(
else:
page = client_request.get(
'main.view_notifications',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
status=status_argument,
page=page_argument,
**extra_args
@@ -143,7 +142,7 @@ def test_can_show_notifications(
url = urlparse(path_to_json)
assert url.path == '/services/{}/notifications{}'.format(
- service_one['id'],
+ SERVICE_ONE_ID,
expected_update_endpoint,
)
query_dict = parse_qs(url.query)
@@ -156,7 +155,7 @@ def test_can_show_notifications(
mock_get_notifications.assert_called_with(
limit_days=expected_limit_days,
page=expected_page_argument,
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
status=expected_api_call,
template_type=list(extra_args.values()),
to=expected_to_argument,
@@ -266,7 +265,7 @@ def test_download_not_available_to_users_without_dashboard(
def test_letters_with_status_virus_scan_failed_shows_a_failure_description(
mocker,
active_user_with_permissions,
- logged_in_client,
+ client_request,
service_one,
mock_get_service_statistics,
mock_get_service_data_retention,
@@ -277,15 +276,13 @@ def test_letters_with_status_virus_scan_failed_shows_a_failure_description(
is_precompiled_letter=True,
noti_status='virus-scan-failed'
)
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_notifications',
service_id=service_one['id'],
message_type='letter',
status='',
- ))
+ )
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
error_description = page.find('div', attrs={'class': 'table-field-status-error'}).text.strip()
assert 'Virus detected\n' in error_description
@@ -296,7 +293,7 @@ def test_letters_with_status_virus_scan_failed_shows_a_failure_description(
def test_should_not_show_preview_link_for_precompiled_letters_in_virus_states(
mocker,
active_user_with_permissions,
- logged_in_client,
+ client_request,
service_one,
mock_get_service_statistics,
mock_get_service_data_retention,
@@ -308,13 +305,12 @@ def test_should_not_show_preview_link_for_precompiled_letters_in_virus_states(
is_precompiled_letter=True,
noti_status=letter_status
)
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_notifications',
service_id=service_one['id'],
message_type='letter',
status='',
- ))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ )
assert not page.find('a', attrs={'class': 'file-list-filename'})
@@ -381,7 +377,7 @@ def test_shows_message_when_no_notifications(
),
])
def test_search_recipient_form(
- logged_in_client,
+ client_request,
mock_get_notifications,
mock_get_service_statistics,
mock_get_service_data_retention,
@@ -390,16 +386,13 @@ def test_search_recipient_form(
expected_search_box_label,
expected_search_box_contents,
):
- response = logged_in_client.post(
- url_for(
- 'main.view_notifications',
- service_id=SERVICE_ONE_ID,
- **initial_query_arguments
- ),
- data=form_post_data
+ page = client_request.post(
+ 'main.view_notifications',
+ service_id=SERVICE_ONE_ID,
+ _data=form_post_data,
+ _expected_status=200,
+ **initial_query_arguments
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.find("form")['method'] == 'post'
action_url = page.find("form")['action']
@@ -421,7 +414,7 @@ def test_search_recipient_form(
def test_should_show_notifications_for_a_service_with_next_previous(
- logged_in_client,
+ client_request,
service_one,
active_user_with_permissions,
mock_get_notifications_with_previous_next,
@@ -429,14 +422,13 @@ def test_should_show_notifications_for_a_service_with_next_previous(
mock_get_service_data_retention,
mocker,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_notifications',
service_id=service_one['id'],
message_type='sms',
page=2
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ )
+
next_page_link = page.find('a', {'rel': 'next'})
prev_page_link = page.find('a', {'rel': 'previous'})
assert (
@@ -502,7 +494,7 @@ def test_get_status_filters_constructs_links(client):
def test_html_contains_notification_id(
- logged_in_client,
+ client_request,
service_one,
active_user_with_permissions,
mock_get_notifications,
@@ -510,14 +502,13 @@ def test_html_contains_notification_id(
mock_get_service_data_retention,
mocker,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_notifications',
service_id=service_one['id'],
message_type='sms',
- status='')
+ status='',
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+
notifications = page.tbody.find_all('tr')
for tr in notifications:
assert uuid.UUID(tr.attrs['id'])
@@ -654,7 +645,7 @@ def test_sending_status_hint_displays_correctly_on_notifications_page(
(False, "template subject")
])
def test_should_expected_hint_for_letters(
- logged_in_client,
+ client_request,
service_one,
active_user_with_permissions,
mock_get_service_statistics,
@@ -667,10 +658,10 @@ def test_should_expected_hint_for_letters(
mock_get_notifications(
mocker, active_user_with_permissions, is_precompiled_letter=is_precompiled_letter)
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_notifications',
service_id=SERVICE_ONE_ID,
- message_type='letter'
- ))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ message_type='letter',
+ )
+
assert page.find('p', {'class': 'file-list-hint'}).text.strip() == expected_hint
diff --git a/tests/app/main/views/test_add_service.py b/tests/app/main/views/test_add_service.py
index 708aeb388..5395366e7 100644
--- a/tests/app/main/views/test_add_service.py
+++ b/tests/app/main/views/test_add_service.py
@@ -18,16 +18,15 @@ def test_non_gov_user_cannot_see_add_service_button(
def test_get_should_render_add_service_template(
- logged_in_client
+ client_request
):
- response = logged_in_client.get(url_for('main.add_service'))
- assert response.status_code == 200
- assert 'About your service' in response.get_data(as_text=True)
+ page = client_request.get('main.add_service')
+ assert 'About your service' in page.text
def test_should_add_service_and_redirect_to_tour_when_no_services(
app_,
- logged_in_client,
+ client_request,
mock_create_service,
mock_create_service_template,
mock_get_services_with_no_services,
@@ -35,12 +34,19 @@ def test_should_add_service_and_redirect_to_tour_when_no_services(
mock_create_or_update_free_sms_fragment_limit,
mock_get_all_email_branding,
):
- response = logged_in_client.post(
- url_for('main.add_service'),
- data={
+ client_request.post(
+ 'main.add_service',
+ _data={
'name': 'testing the post',
'organisation_type': 'local',
- }
+ },
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.start_tour',
+ service_id=101,
+ template_id="Example%20text%20message%20template",
+ _external=True,
+ ),
)
assert mock_get_services_with_no_services.called
mock_create_service.assert_called_once_with(
@@ -62,13 +68,6 @@ def test_should_add_service_and_redirect_to_tour_when_no_services(
101,
)
assert session['service_id'] == 101
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.start_tour',
- service_id=101,
- template_id="Example%20text%20message%20template",
- _external=True
- )
mock_create_or_update_free_sms_fragment_limit.assert_called_once_with(101, 25000)
@@ -79,7 +78,7 @@ def test_should_add_service_and_redirect_to_tour_when_no_services(
])
def test_should_add_service_and_redirect_to_dashboard_when_existing_service(
app_,
- logged_in_client,
+ client_request,
mock_create_service,
mock_create_service_template,
mock_get_services,
@@ -91,12 +90,18 @@ def test_should_add_service_and_redirect_to_dashboard_when_existing_service(
mock_create_or_update_free_sms_fragment_limit,
mock_get_all_email_branding,
):
- response = logged_in_client.post(
- url_for('main.add_service'),
- data={
+ client_request.post(
+ 'main.add_service',
+ _data={
'name': 'testing the post',
'organisation_type': organisation_type,
- }
+ },
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.service_dashboard',
+ service_id=101,
+ _external=True,
+ )
)
assert mock_get_services.called
mock_create_service.assert_called_once_with(
@@ -111,8 +116,6 @@ def test_should_add_service_and_redirect_to_dashboard_when_existing_service(
mock_create_or_update_free_sms_fragment_limit.assert_called_once_with(101, free_allowance)
assert len(mock_create_service_template.call_args_list) == 0
assert session['service_id'] == 101
- assert response.status_code == 302
- assert response.location == url_for('main.service_dashboard', service_id=101, _external=True)
@pytest.mark.parametrize('organisation_type, email_address, expected_branding', [
@@ -159,45 +162,54 @@ def test_should_lookup_branding_for_known_domain(
def test_should_return_form_errors_when_service_name_is_empty(
- logged_in_client
+ client_request
):
- response = logged_in_client.post(url_for('main.add_service'), data={})
- assert response.status_code == 200
- assert 'Can’t be empty' in response.get_data(as_text=True)
+ page = client_request.post(
+ 'main.add_service',
+ data={},
+ _expected_status=200,
+ )
+ assert 'Can’t be empty' in page.text
def test_should_return_form_errors_with_duplicate_service_name_regardless_of_case(
- logged_in_client,
+ client_request,
mock_create_duplicate_service,
mock_get_all_email_branding,
):
- response = logged_in_client.post(
- url_for('main.add_service'),
- data={
+ page = client_request.post(
+ 'main.add_service',
+ _data={
'name': 'SERVICE ONE',
'organisation_type': 'central',
},
+ _expected_status=200,
+ )
+ assert page.select_one('.error-message').text.strip() == (
+ 'This service name is already in use'
)
-
- assert response.status_code == 200
- assert 'This service name is already in use' in response.get_data(as_text=True)
def test_non_whitelist_user_cannot_access_create_service_page(
- logged_in_client,
+ client_request,
mock_get_non_govuser,
api_nongov_user_active,
):
assert not is_gov_user(api_nongov_user_active.email_address)
- response = logged_in_client.get(url_for('main.add_service'))
- assert response.status_code == 403
+ client_request.get(
+ 'main.add_service',
+ _expected_status=403,
+ )
def test_non_whitelist_user_cannot_create_service(
- logged_in_client,
+ client_request,
mock_get_non_govuser,
api_nongov_user_active,
):
assert not is_gov_user(api_nongov_user_active.email_address)
- response = logged_in_client.post(url_for('main.add_service'), data={'name': 'SERVICE TWO'})
- assert response.status_code == 403
+ client_request.post(
+ 'main.add_service',
+ _data={'name': 'SERVICE TWO'},
+ _expected_status=403,
+ )
diff --git a/tests/app/main/views/test_api_integration.py b/tests/app/main/views/test_api_integration.py
index 5d8d32208..c1530c0e4 100644
--- a/tests/app/main/views/test_api_integration.py
+++ b/tests/app/main/views/test_api_integration.py
@@ -4,7 +4,6 @@ from unittest.mock import call
from uuid import uuid4
import pytest
-from bs4 import BeautifulSoup
from flask import url_for
from tests import sample_uuid, validate_route_permission
@@ -23,16 +22,17 @@ from tests.conftest import (
def test_should_show_api_page(
- logged_in_client,
+ client_request,
mock_login,
api_user_active,
mock_get_service,
mock_has_permissions,
mock_get_notifications
):
- response = logged_in_client.get(url_for('main.api_integration', service_id=str(uuid.uuid4())))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.api_integration',
+ service_id=SERVICE_ONE_ID,
+ )
assert page.h1.string.strip() == 'API integration'
rows = page.find_all('details')
assert len(rows) == 5
@@ -41,15 +41,17 @@ def test_should_show_api_page(
def test_should_show_api_page_with_lots_of_notifications(
- logged_in_client,
+ client_request,
mock_login,
api_user_active,
mock_get_service,
mock_has_permissions,
mock_get_notifications_with_previous_next
):
- response = logged_in_client.get(url_for('main.api_integration', service_id=str(uuid.uuid4())))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.api_integration',
+ service_id=SERVICE_ONE_ID,
+ )
rows = page.find_all('div', {'class': 'api-notifications-item'})
assert ' '.join(rows[len(rows) - 1].text.split()) == (
'Only showing the first 50 messages. Notify deletes messages after 7 days.'
@@ -57,15 +59,17 @@ def test_should_show_api_page_with_lots_of_notifications(
def test_should_show_api_page_with_no_notifications(
- logged_in_client,
+ client_request,
mock_login,
api_user_active,
mock_get_service,
mock_has_permissions,
mock_get_notifications_with_no_notifications
):
- response = logged_in_client.get(url_for('main.api_integration', service_id=str(uuid.uuid4())))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.api_integration',
+ service_id=SERVICE_ONE_ID,
+ )
rows = page.find_all('div', {'class': 'api-notifications-item'})
assert 'When you send messages via the API they’ll appear here.' in rows[len(rows) - 1].text.strip()
@@ -157,17 +161,20 @@ def test_should_show_api_page_for_live_service(
def test_api_documentation_page_should_redirect(
- logged_in_client,
+ client_request,
mock_login,
api_user_active,
mock_get_service,
mock_has_permissions
):
- response = logged_in_client.get(url_for('main.api_documentation', service_id=str(uuid.uuid4())))
- assert response.status_code == 301
- assert response.location == url_for(
- 'main.documentation',
- _external=True
+ client_request.get(
+ 'main.api_documentation',
+ service_id=SERVICE_ONE_ID,
+ _expected_status=301,
+ _expected_redirect=url_for(
+ 'main.documentation',
+ _external=True,
+ ),
)
@@ -276,7 +283,7 @@ def test_should_create_api_key_with_type_normal(
def test_cant_create_normal_api_key_in_trial_mode(
- logged_in_client,
+ client_request,
api_user_active,
mock_login,
mock_get_api_keys,
@@ -287,14 +294,15 @@ def test_cant_create_normal_api_key_in_trial_mode(
):
mock_post = mocker.patch('app.notify_client.api_key_api_client.ApiKeyApiClient.post')
- response = logged_in_client.post(
- url_for('main.create_api_key', service_id=uuid.uuid4()),
- data={
+ client_request.post(
+ 'main.create_api_key',
+ service_id=SERVICE_ONE_ID,
+ _data={
'key_name': 'some default key name',
'key_type': 'normal'
- }
+ },
+ _expected_status=400,
)
- assert response.status_code == 400
mock_post.assert_not_called()
@@ -330,7 +338,7 @@ def test_should_404_for_api_key_that_doesnt_exist(
def test_should_redirect_after_revoking_api_key(
- logged_in_client,
+ client_request,
api_user_active,
mock_login,
mock_revoke_api_key,
@@ -339,10 +347,17 @@ def test_should_redirect_after_revoking_api_key(
mock_has_permissions,
fake_uuid,
):
- response = logged_in_client.post(url_for('main.revoke_api_key', service_id=SERVICE_ONE_ID, key_id=fake_uuid))
-
- assert response.status_code == 302
- assert response.location == url_for('.api_keys', service_id=SERVICE_ONE_ID, _external=True)
+ client_request.post(
+ 'main.revoke_api_key',
+ service_id=SERVICE_ONE_ID,
+ key_id=fake_uuid,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ '.api_keys',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ ),
+ )
mock_revoke_api_key.assert_called_once_with(service_id=SERVICE_ONE_ID, key_id=fake_uuid)
mock_get_api_keys.assert_called_once_with(SERVICE_ONE_ID,)
@@ -400,15 +415,17 @@ def test_route_invalid_permissions(
def test_should_show_whitelist_page(
- logged_in_client,
+ client_request,
mock_login,
api_user_active,
mock_get_service,
mock_has_permissions,
mock_get_whitelist,
):
- response = logged_in_client.get(url_for('main.whitelist', service_id=str(uuid.uuid4())))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.whitelist',
+ service_id=SERVICE_ONE_ID,
+ )
textboxes = page.find_all('input', {'type': 'text'})
for index, value in enumerate(
['test@example.com'] + [''] * 4 + ['07900900000'] + [''] * 4
@@ -417,14 +434,9 @@ def test_should_show_whitelist_page(
def test_should_update_whitelist(
- logged_in_client,
- mock_login,
- api_user_active,
- mock_get_service,
- mock_has_permissions,
- mock_update_whitelist
+ client_request,
+ mock_update_whitelist,
):
- service_id = str(uuid.uuid4())
data = OrderedDict([
('email_addresses-1', 'test@example.com'),
('email_addresses-3', 'test@example.com'),
@@ -432,34 +444,32 @@ def test_should_update_whitelist(
('phone_numbers-2', '+1800-555-555'),
])
- logged_in_client.post(
- url_for('main.whitelist', service_id=service_id),
- data=data
+ client_request.post(
+ 'main.whitelist',
+ service_id=SERVICE_ONE_ID,
+ _data=data,
)
- mock_update_whitelist.assert_called_once_with(service_id, {
+ mock_update_whitelist.assert_called_once_with(SERVICE_ONE_ID, {
'email_addresses': ['test@example.com', 'test@example.com'],
'phone_numbers': ['07900900000', '+1800-555-555']})
def test_should_validate_whitelist_items(
- logged_in_client,
- mock_login,
- api_user_active,
- mock_get_service,
- mock_has_permissions,
- mock_update_whitelist
+ client_request,
+ mock_update_whitelist,
):
- response = logged_in_client.post(
- url_for('main.whitelist', service_id=str(uuid.uuid4())),
- data=OrderedDict([
+ page = client_request.post(
+ 'main.whitelist',
+ service_id=SERVICE_ONE_ID,
+ _data=OrderedDict([
('email_addresses-1', 'abc'),
('phone_numbers-0', '123')
- ])
+ ]),
+ _expected_status=200,
)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'There was a problem with your whitelist'
jump_links = page.select('.banner-dangerous a')
@@ -469,7 +479,7 @@ def test_should_validate_whitelist_items(
assert jump_links[1].string.strip() == 'Enter valid phone numbers'
assert jump_links[1]['href'] == '#phone_numbers'
- mock_update_whitelist.assert_not_called()
+ assert mock_update_whitelist.called is False
@pytest.mark.parametrize('endpoint', [
diff --git a/tests/app/main/views/test_dashboard.py b/tests/app/main/views/test_dashboard.py
index 07e555585..46418d742 100644
--- a/tests/app/main/views/test_dashboard.py
+++ b/tests/app/main/views/test_dashboard.py
@@ -1,11 +1,9 @@
import copy
import json
from datetime import datetime
-from functools import partial
from unittest.mock import call
import pytest
-from bs4 import BeautifulSoup
from flask import url_for
from freezegun import freeze_time
@@ -138,7 +136,7 @@ def test_redirect_caseworkers_to_templates(
def test_get_started(
- logged_in_client,
+ client_request,
mocker,
mock_get_service_templates_when_no_templates_exist,
mock_get_jobs,
@@ -151,15 +149,17 @@ def test_get_started(
return_value=copy.deepcopy(stub_template_stats)
)
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- # mock_get_service_templates_when_no_templates_exist.assert_called_once_with(SERVICE_ONE_ID)
- assert response.status_code == 200
- assert 'Get started' in response.get_data(as_text=True)
+ mock_get_service_templates_when_no_templates_exist.assert_called_once_with(SERVICE_ONE_ID)
+ assert 'Get started' in page.text
def test_get_started_is_hidden_once_templates_exist(
- logged_in_client,
+ client_request,
mocker,
mock_get_service_templates,
mock_get_jobs,
@@ -171,15 +171,17 @@ def test_get_started_is_hidden_once_templates_exist(
'app.template_statistics_client.get_template_statistics_for_service',
return_value=copy.deepcopy(stub_template_stats)
)
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- # mock_get_service_templates.assert_called_once_with(SERVICE_ONE_ID)
- assert response.status_code == 200
- assert 'Get started' not in response.get_data(as_text=True)
+ mock_get_service_templates.assert_called_once_with(SERVICE_ONE_ID)
+ assert 'Get started' not in page.text
def test_inbound_messages_not_visible_to_service_without_permissions(
- logged_in_client,
+ client_request,
service_one,
mock_get_service_templates_when_no_templates_exist,
mock_get_jobs,
@@ -191,10 +193,11 @@ def test_inbound_messages_not_visible_to_service_without_permissions(
service_one['permissions'] = []
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
assert not page.select('.big-number-meta-wrapper')
assert mock_get_inbound_sms_summary.called is False
@@ -204,7 +207,7 @@ def test_inbound_messages_not_visible_to_service_without_permissions(
(mock_get_inbound_sms_summary, '99 text messages received latest message just now'),
])
def test_inbound_messages_shows_count_of_messages(
- logged_in_client,
+ client_request,
mocker,
service_one,
mock_get_service_templates_when_no_templates_exist,
@@ -219,10 +222,11 @@ def test_inbound_messages_shows_count_of_messages(
service_one['permissions'] = ['inbound_sms']
inbound_summary_mock(mocker)
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
assert normalize_spaces(page.select('.big-number-meta-wrapper')[0].text) == expected_text
assert page.select('.big-number-meta-wrapper a')[0]['href'] == url_for(
'main.inbox', service_id=SERVICE_ONE_ID
@@ -240,7 +244,7 @@ def test_inbound_messages_shows_count_of_messages(
'07900 900008 message-8 9 hours ago',
]))
def test_inbox_showing_inbound_messages(
- logged_in_client,
+ client_request,
service_one,
mock_get_service_templates_when_no_templates_exist,
mock_get_jobs,
@@ -254,10 +258,11 @@ def test_inbox_showing_inbound_messages(
service_one['permissions'] = ['inbound_sms']
- response = logged_in_client.get(url_for('main.inbox', service_id=SERVICE_ONE_ID))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.inbox',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
rows = page.select('tbody tr')
assert len(rows) == 8
assert normalize_spaces(rows[index].text) == expected_row
@@ -268,7 +273,7 @@ def test_inbox_showing_inbound_messages(
def test_get_inbound_sms_shows_page_links(
- logged_in_client,
+ client_request,
service_one,
mock_get_service_templates_when_no_templates_exist,
mock_get_jobs,
@@ -280,16 +285,18 @@ def test_get_inbound_sms_shows_page_links(
):
service_one['permissions'] = ['inbound_sms']
- response = logged_in_client.get(url_for('main.inbox', service_id=SERVICE_ONE_ID, page=2))
+ page = client_request.get(
+ 'main.inbox',
+ service_id=SERVICE_ONE_ID,
+ page=2,
+ )
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert 'Next page' in page.find('li', {'class': 'next-page'}).text
assert 'Previous page' in page.find('li', {'class': 'previous-page'}).text
def test_empty_inbox(
- logged_in_client,
+ client_request,
service_one,
mock_get_service_templates_when_no_templates_exist,
mock_get_jobs,
@@ -302,10 +309,11 @@ def test_empty_inbox(
service_one['permissions'] = ['inbound_sms']
- response = logged_in_client.get(url_for('main.inbox', service_id=SERVICE_ONE_ID))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.inbox',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
assert normalize_spaces(page.select('tbody tr')) == (
'When users text your service’s phone number (0781239871) you’ll see the messages here'
)
@@ -319,14 +327,16 @@ def test_empty_inbox(
'main.inbox_updates',
])
def test_inbox_not_accessible_to_service_without_permissions(
- logged_in_client,
+ client_request,
service_one,
endpoint,
):
service_one['permissions'] = []
- response = logged_in_client.get(url_for(endpoint, service_id=SERVICE_ONE_ID))
-
- assert response.status_code == 403
+ client_request.get(
+ endpoint,
+ service_id=SERVICE_ONE_ID,
+ _expected_status=403,
+ )
def test_anyone_can_see_inbox(
@@ -441,7 +451,7 @@ def test_download_inbox_strips_formulae(
def test_should_show_recent_templates_on_dashboard(
- logged_in_client,
+ client_request,
mocker,
mock_get_service_templates,
mock_get_jobs,
@@ -452,13 +462,13 @@ def test_should_show_recent_templates_on_dashboard(
mock_template_stats = mocker.patch('app.template_statistics_client.get_template_statistics_for_service',
return_value=copy.deepcopy(stub_template_stats))
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
- response.get_data(as_text=True)
mock_template_stats.assert_called_once_with(SERVICE_ONE_ID, limit_days=7)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
headers = [header.text.strip() for header in page.find_all('h2') + page.find_all('h1')]
assert 'In the last 7 days' in headers
@@ -484,39 +494,40 @@ def test_should_show_recent_templates_on_dashboard(
@freeze_time("2016-07-01 12:00") # 4 months into 2016 financial year
-@pytest.mark.parametrize('partial_url', [
- partial(url_for),
- partial(url_for, year='2016'),
+@pytest.mark.parametrize('extra_args', [
+ {},
+ {'year': '2016'},
])
def test_should_show_redirect_from_template_history(
- logged_in_client,
- partial_url,
+ client_request,
+ extra_args,
):
- response = logged_in_client.get(
- partial_url('main.template_history', service_id=SERVICE_ONE_ID, _external=True)
+ client_request.get(
+ 'main.template_history',
+ service_id=SERVICE_ONE_ID,
+ _expected_status=301,
+ **extra_args,
)
- assert response.status_code == 301
-
@freeze_time("2016-07-01 12:00") # 4 months into 2016 financial year
-@pytest.mark.parametrize('partial_url', [
- partial(url_for),
- partial(url_for, year='2016'),
+@pytest.mark.parametrize('extra_args', [
+ {},
+ {'year': '2016'},
])
def test_should_show_monthly_breakdown_of_template_usage(
- logged_in_client,
+ client_request,
mock_get_monthly_template_usage,
- partial_url,
+ extra_args,
):
- response = logged_in_client.get(
- partial_url('main.template_usage', service_id=SERVICE_ONE_ID, _external=True)
+ page = client_request.get(
+ 'main.template_usage',
+ service_id=SERVICE_ONE_ID,
+ **extra_args
)
- assert response.status_code == 200
mock_get_monthly_template_usage.assert_called_once_with(SERVICE_ONE_ID, 2016)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
table_rows = page.select('tbody tr')
assert ' '.join(table_rows[0].text.split()) == (
@@ -603,7 +614,7 @@ def test_monthly_has_equal_length_tables(
@freeze_time("2016-01-01 11:09:00.061258")
def test_should_show_upcoming_jobs_on_dashboard(
- logged_in_client,
+ client_request,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_service_statistics,
@@ -611,16 +622,15 @@ def test_should_show_upcoming_jobs_on_dashboard(
mock_get_usage,
mock_get_inbound_sms_summary
):
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
second_call = mock_get_jobs.call_args_list[1]
assert second_call[0] == (SERVICE_ONE_ID,)
assert second_call[1]['statuses'] == ['scheduled']
- assert response.status_code == 200
-
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
table_rows = page.find_all('tbody')[0].find_all('tr')
assert len(table_rows) == 2
@@ -732,7 +742,7 @@ def test_correct_font_size_for_big_numbers(
@freeze_time("2016-01-01 11:09:00.061258")
def test_should_show_recent_jobs_on_dashboard(
- logged_in_client,
+ client_request,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_service_statistics,
@@ -740,16 +750,16 @@ def test_should_show_recent_jobs_on_dashboard(
mock_get_usage,
mock_get_inbound_sms_summary
):
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
third_call = mock_get_jobs.call_args_list[2]
assert third_call[0] == (SERVICE_ONE_ID,)
assert third_call[1]['limit_days'] == 7
assert 'scheduled' not in third_call[1]['statuses']
- assert response.status_code == 200
-
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
table_rows = page.find_all('tbody')[2].find_all('tr')
assert len(table_rows) == 4
@@ -768,21 +778,20 @@ def test_should_show_recent_jobs_on_dashboard(
@freeze_time("2012-03-31 12:12:12")
def test_usage_page(
- logged_in_client,
+ client_request,
mock_get_usage,
mock_get_billable_units,
mock_get_free_sms_fragment_limit
):
- response = logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID))
-
- assert response.status_code == 200
+ page = client_request.get(
+ 'main.usage',
+ service_id=SERVICE_ONE_ID,
+ )
mock_get_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_usage.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_free_sms_fragment_limit.assert_called_with(SERVICE_ONE_ID, 2011)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
cols = page.find_all('div', {'class': 'column-half'})
nav = page.find('ul', {'class': 'pill', 'role': 'tablist'})
nav_links = nav.find_all('a')
@@ -809,23 +818,22 @@ def test_usage_page(
@freeze_time("2012-03-31 12:12:12")
def test_usage_page_with_letters(
- logged_in_client,
+ client_request,
service_one,
mock_get_usage,
mock_get_billable_units,
mock_get_free_sms_fragment_limit
):
service_one['permissions'].append('letter')
- response = logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID))
-
- assert response.status_code == 200
+ page = client_request.get(
+ 'main.usage',
+ service_id=SERVICE_ONE_ID,
+ )
mock_get_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_usage.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_free_sms_fragment_limit.assert_called_with(SERVICE_ONE_ID, 2011)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
-
cols = page.find_all('div', {'class': 'column-one-third'})
nav = page.find('ul', {'class': 'pill', 'role': 'tablist'})
nav_links = nav.find_all('a')
@@ -855,7 +863,7 @@ def test_usage_page_with_letters(
@freeze_time("2012-04-30 12:12:12")
def test_usage_page_displays_letters_ordered_by_postage(
mocker,
- logged_in_client,
+ client_request,
service_one,
mock_get_usage,
mock_get_free_sms_fragment_limit
@@ -867,9 +875,11 @@ def test_usage_page_displays_letters_ordered_by_postage(
]
mocker.patch('app.billing_api_client.get_billable_units_ft', return_value=billable_units_resp)
service_one['permissions'].append('letter')
- response = logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.usage',
+ service_id=SERVICE_ONE_ID,
+ )
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
row_for_april = page.find('table').find('tr', class_='table-row')
postage_details = row_for_april.find_all('li', class_='tabular-numbers')
@@ -892,19 +902,28 @@ def test_usage_page_with_year_argument(
def test_usage_page_for_invalid_year(
- logged_in_client,
+ client_request,
):
- assert logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID, year='abcd')).status_code == 404
+ client_request.get(
+ 'main.usage',
+ service_id=SERVICE_ONE_ID,
+ year='abcd',
+ _expected_status=404,
+ )
@freeze_time("2012-03-31 12:12:12")
def test_future_usage_page(
- logged_in_client,
+ client_request,
mock_get_future_usage,
mock_get_future_billable_units,
mock_get_free_sms_fragment_limit
):
- assert logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID, year=2014)).status_code == 200
+ client_request.get(
+ 'main.usage',
+ service_id=SERVICE_ONE_ID,
+ year=2014,
+ )
mock_get_future_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2014)
mock_get_future_usage.assert_called_once_with(SERVICE_ONE_ID, 2014)
@@ -1104,7 +1123,7 @@ def test_aggregate_notifications_stats():
def test_service_dashboard_updates_gets_dashboard_totals(
mocker,
- logged_in_client,
+ client_request,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_service_statistics,
@@ -1117,11 +1136,11 @@ def test_service_dashboard_updates_gets_dashboard_totals(
'sms': {'requested': 456, 'delivered': 0, 'failed': 0}
})
- response = logged_in_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
+ page = client_request.get(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ )
- assert response.status_code == 200
-
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
numbers = [number.text.strip() for number in page.find_all('div', class_='big-number-number')]
assert '123' in numbers
assert '456' in numbers
diff --git a/tests/app/main/views/test_feedback.py b/tests/app/main/views/test_feedback.py
index e6595d19e..66740b91c 100644
--- a/tests/app/main/views/test_feedback.py
+++ b/tests/app/main/views/test_feedback.py
@@ -160,20 +160,26 @@ def test_passed_non_logged_in_user_details_through_flow(client, mocker, ticket_t
])
@pytest.mark.parametrize('ticket_type', [PROBLEM_TICKET_TYPE, QUESTION_TICKET_TYPE])
def test_passes_user_details_through_flow(
- logged_in_client,
+ client_request,
mocker,
ticket_type,
data
):
mock_post = mocker.patch('app.main.views.feedback.zendesk_client.create_ticket')
- resp = logged_in_client.post(
- url_for('main.feedback', ticket_type=ticket_type),
- data=data,
+ client_request.post(
+ 'main.feedback',
+ ticket_type=ticket_type,
+ _data=data,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.thanks',
+ urgent=True,
+ anonymous=False,
+ _external=True,
+ ),
)
- assert resp.status_code == 302
- assert resp.location == url_for('main.thanks', urgent=True, anonymous=False, _external=True)
mock_post.assert_called_with(
subject='Notify feedback',
message=ANY,
@@ -267,7 +273,7 @@ def test_email_address_must_be_valid_if_provided_to_support_form(
])
def test_urgency(
- logged_in_client,
+ client_request,
mocker,
ticket_type,
severe,
@@ -277,12 +283,19 @@ def test_urgency(
):
mocker.patch('app.main.views.feedback.in_business_hours', return_value=is_in_business_hours)
mock_post = mocker.patch('app.main.views.feedback.zendesk_client.create_ticket')
- response = logged_in_client.post(
- url_for('main.feedback', ticket_type=ticket_type, severe=severe),
- data={'feedback': 'blah', 'email_address': 'test@example.com'},
+ client_request.post(
+ 'main.feedback',
+ ticket_type=ticket_type,
+ severe=severe,
+ _data={'feedback': 'blah', 'email_address': 'test@example.com'},
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.thanks',
+ urgent=is_urgent,
+ anonymous=False,
+ _external=True,
+ ),
)
- assert response.status_code == 302
- assert response.location == url_for('main.thanks', urgent=is_urgent, anonymous=False, _external=True)
assert mock_post.call_args[1]['p1'] == is_p1
@@ -340,28 +353,30 @@ def test_redirects_to_triage(
def test_doesnt_lose_message_if_post_across_closing(
- logged_in_client,
+ client_request,
mocker,
):
mocker.patch('app.main.views.feedback.has_live_services', return_value=True)
mocker.patch('app.main.views.feedback.in_business_hours', return_value=False)
- response = logged_in_client.post(
- url_for('main.feedback', ticket_type=PROBLEM_TICKET_TYPE),
- data={'feedback': 'foo'},
+ page = client_request.post(
+ 'main.feedback',
+ ticket_type=PROBLEM_TICKET_TYPE,
+ _data={'feedback': 'foo'},
+ _expected_status=302,
+ _expected_redirect=url_for('.triage', _external=True),
)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert session['feedback_message'] == 'foo'
- assert response.status_code == 302
- assert response.location == url_for('.triage', _external=True)
- response = logged_in_client.get(
- url_for('main.feedback', ticket_type=PROBLEM_TICKET_TYPE, severe='yes')
+ page = client_request.get(
+ 'main.feedback',
+ ticket_type=PROBLEM_TICKET_TYPE,
+ severe='yes',
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
- with logged_in_client.session_transaction() as session:
+
+ with client_request.session_transaction() as session:
assert page.find('textarea', {'name': 'feedback'}).text == 'foo'
assert 'feedback_message' not in session
diff --git a/tests/app/main/views/test_index.py b/tests/app/main/views/test_index.py
index 8c0884ffa..211d2b25e 100644
--- a/tests/app/main/views/test_index.py
+++ b/tests/app/main/views/test_index.py
@@ -32,17 +32,21 @@ def test_non_logged_in_user_can_see_homepage(
def test_logged_in_user_redirects_to_choose_account(
- logged_in_client,
+ client_request,
api_user_active,
mock_get_user,
mock_get_user_by_email,
mock_login,
):
- response = logged_in_client.get(url_for('main.index'))
- assert response.status_code == 302
-
- response = logged_in_client.get(url_for('main.sign_in', follow_redirects=True))
- assert response.location == url_for('main.show_accounts_or_dashboard', _external=True)
+ client_request.get(
+ 'main.index',
+ _expected_status=302,
+ )
+ client_request.get(
+ 'main.sign_in',
+ _expected_status=302,
+ _expected_redirect=url_for('main.show_accounts_or_dashboard', _external=True)
+ )
def test_robots(client):
@@ -76,16 +80,18 @@ def test_static_pages(
('trial_mode', 'trial-mode'),
])
def test_old_static_pages_redirect_to_using_notify_with_anchor(
- client,
+ client_request,
view,
expected_anchor,
):
- response = client.get(url_for('main.{}'.format(view)))
- assert response.status_code == 301
- assert response.location == url_for(
- 'main.using_notify',
- _anchor=expected_anchor,
- _external=True
+ client_request.get(
+ 'main.{}'.format(view),
+ _expected_status=301,
+ _expected_redirect=url_for(
+ 'main.using_notify',
+ _anchor=expected_anchor,
+ _external=True
+ ),
)
diff --git a/tests/app/main/views/test_jobs.py b/tests/app/main/views/test_jobs.py
index b47000a37..a562cd33a 100644
--- a/tests/app/main/views/test_jobs.py
+++ b/tests/app/main/views/test_jobs.py
@@ -1,7 +1,6 @@
import json
import pytest
-from bs4 import BeautifulSoup
from flask import url_for
from freezegun import freeze_time
@@ -250,7 +249,7 @@ def test_should_show_page_for_one_job_with_flexible_data_retention(
def test_get_jobs_should_tell_user_if_more_than_one_page(
- logged_in_client,
+ client_request,
fake_uuid,
service_one,
mock_get_job,
@@ -258,20 +257,17 @@ def test_get_jobs_should_tell_user_if_more_than_one_page(
mock_get_notifications_with_previous_next,
mock_get_service_data_retention,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_job',
service_id=service_one['id'],
job_id=fake_uuid,
- status=''
- ))
-
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ status='',
+ )
assert page.find('p', {'class': 'table-show-more-link'}).text.strip() == 'Only showing the first 50 rows'
def test_should_show_job_in_progress(
- logged_in_client,
+ client_request,
service_one,
active_user_with_permissions,
mock_get_service_template,
@@ -281,15 +277,11 @@ def test_should_show_job_in_progress(
mock_get_service_data_retention,
fake_uuid,
):
-
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_job',
service_id=service_one['id'],
- job_id=fake_uuid
- ))
-
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ job_id=fake_uuid,
+ )
assert page.find('p', {'class': 'hint'}).text.strip() == 'Report is 50% complete…'
@@ -420,23 +412,19 @@ def test_should_show_letter_job_with_banner_after_sending_after_1730(
@freeze_time("2016-01-01T00:00:00.061258")
def test_should_show_scheduled_job(
- logged_in_client,
- active_user_with_permissions,
+ client_request,
mock_get_service_template,
mock_get_scheduled_job,
mock_get_service_data_retention,
- mocker,
mock_get_notifications,
fake_uuid,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.view_job',
service_id=SERVICE_ONE_ID,
- job_id=fake_uuid
- ))
+ job_id=fake_uuid,
+ )
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert normalize_spaces(page.select('main p')[1].text) == (
'Sending Two week reminder today at midnight'
)
@@ -450,38 +438,38 @@ def test_should_show_scheduled_job(
def test_should_cancel_job(
- logged_in_client,
- service_one,
+ client_request,
fake_uuid,
mocker,
):
mock_cancel = mocker.patch('app.main.jobs.job_api_client.cancel_job')
- response = logged_in_client.post(url_for(
+ client_request.post(
'main.cancel_job',
- service_id=service_one['id'],
- job_id=fake_uuid
- ))
+ service_id=SERVICE_ONE_ID,
+ job_id=fake_uuid,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.service_dashboard',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ )
+ )
- mock_cancel.assert_called_once_with(service_one['id'], fake_uuid)
- assert response.status_code == 302
- assert response.location == url_for('main.service_dashboard', service_id=service_one['id'], _external=True)
+ mock_cancel.assert_called_once_with(SERVICE_ONE_ID, fake_uuid)
def test_should_not_show_cancelled_job(
- logged_in_client,
- service_one,
+ client_request,
active_user_with_permissions,
mock_get_cancelled_job,
- mocker,
fake_uuid,
):
- response = logged_in_client.get(url_for(
+ client_request.get(
'main.view_job',
- service_id=service_one['id'],
- job_id=fake_uuid
- ))
-
- assert response.status_code == 404
+ service_id=SERVICE_ONE_ID,
+ job_id=fake_uuid,
+ _expected_status=404,
+ )
@freeze_time("2016-01-01 00:00:00.000001")
diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py
index 7980362fd..5e8df8324 100644
--- a/tests/app/main/views/test_manage_users.py
+++ b/tests/app/main/views/test_manage_users.py
@@ -2,7 +2,6 @@ import copy
import uuid
import pytest
-from bs4 import BeautifulSoup
from flask import url_for
import app
@@ -20,7 +19,6 @@ from tests.conftest import (
normalize_spaces,
sample_uuid,
)
-from tests.conftest import service_one as create_sample_service
@pytest.mark.parametrize('user, expected_self_text, expected_coworker_text', [
@@ -523,38 +521,41 @@ def test_cant_edit_non_member_user_permissions(
@pytest.mark.parametrize('auth_type', ['email_auth', 'sms_auth'])
def test_edit_user_permissions_including_authentication_with_email_auth_service(
- logged_in_client,
+ client_request,
+ service_one,
active_user_with_permissions,
- mocker,
mock_get_users_by_service,
mock_get_invites_for_service,
mock_set_user_permissions,
mock_update_user_attribute,
- service_one,
auth_type,
mock_get_template_folders
):
service_one['permissions'].append('email_auth')
- response = logged_in_client.post(
- url_for(
- 'main.edit_user_permissions',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id
- ),
- data={
+ client_request.post(
+ 'main.edit_user_permissions',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _data={
'email_address': active_user_with_permissions.email_address,
'send_messages': 'y',
'manage_templates': 'y',
'manage_service': 'y',
'manage_api_keys': 'y',
- 'login_authentication': auth_type
- }
+ 'login_authentication': auth_type,
+ },
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.manage_users',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ ),
)
mock_set_user_permissions.assert_called_with(
str(active_user_with_permissions.id),
- service_one['id'],
+ SERVICE_ONE_ID,
permissions={
'send_messages',
'manage_templates',
@@ -568,29 +569,22 @@ def test_edit_user_permissions_including_authentication_with_email_auth_service(
auth_type=auth_type
)
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.manage_users', service_id=service_one['id'], _external=True
- )
-
def test_should_show_page_for_inviting_user(
- logged_in_client,
- active_user_with_permissions,
- mocker,
+ client_request,
mock_get_template_folders,
):
- service = create_sample_service(active_user_with_permissions)
- response = logged_in_client.get(url_for('main.invite_user', service_id=service['id']))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ )
assert 'Invite a team member' in page.find('h1').text.strip()
- assert response.status_code == 200
assert not page.find('div', class_='checkboxes-nested')
def test_should_show_folder_permission_form_if_service_has_folder_permissions_enabled(
- logged_in_client,
+ client_request,
mocker,
mock_get_template_folders,
service_one
@@ -601,11 +595,12 @@ def test_should_show_folder_permission_form_if_service_has_folder_permissions_en
{'id': 'folder-id-2', 'name': 'folder_two', 'parent_id': None, 'users_with_permission': []},
{'id': 'folder-id-3', 'name': 'folder_three', 'parent_id': 'folder-id-1', 'users_with_permission': []},
]
- response = logged_in_client.get(url_for('main.invite_user', service_id=service_one['id']))
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ page = client_request.get(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ )
assert 'Invite a team member' in page.find('h1').text.strip()
- assert response.status_code == 200
folder_checkboxes = page.find('div', class_='checkboxes-nested').find_all('li')
assert len(folder_checkboxes) == 3
@@ -616,7 +611,7 @@ def test_should_show_folder_permission_form_if_service_has_folder_permissions_en
('test@nonwhitelist.com', False)
])
def test_invite_user(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mocker,
sample_invite,
@@ -624,7 +619,6 @@ def test_invite_user(
gov_user,
mock_get_template_folders,
):
- service = create_sample_service(active_user_with_permissions)
sample_invite['email_address'] = 'test@example.gov.uk'
data = [InvitedUser(**sample_invite)]
@@ -632,19 +626,19 @@ def test_invite_user(
mocker.patch('app.invite_api_client.get_invites_for_service', return_value=data)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[active_user_with_permissions])
mocker.patch('app.invite_api_client.create_invite', return_value=InvitedUser(**sample_invite))
- response = logged_in_client.post(
- url_for('main.invite_user', service_id=service['id']),
- data={'email_address': email_address,
- 'view_activity': 'y',
- 'send_messages': 'y',
- 'manage_templates': 'y',
- 'manage_service': 'y',
- 'manage_api_keys': 'y'},
- follow_redirects=True
+ page = client_request.post(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ _data={
+ 'email_address': email_address,
+ 'view_activity': 'y',
+ 'send_messages': 'y',
+ 'manage_templates': 'y',
+ 'manage_service': 'y',
+ 'manage_api_keys': 'y',
+ },
+ _follow_redirects=True,
)
-
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Team members'
flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
assert flash_banner == 'Invite sent to test@example.gov.uk'
@@ -668,13 +662,13 @@ def test_invite_user(
('test@nonwhitelist.com', False)
])
def test_invite_user_with_email_auth_service(
- logged_in_client,
+ client_request,
+ service_one,
active_user_with_permissions,
sample_invite,
email_address,
gov_user,
mocker,
- service_one,
auth_type,
mock_get_template_folders,
):
@@ -686,20 +680,22 @@ def test_invite_user_with_email_auth_service(
mocker.patch('app.invite_api_client.get_invites_for_service', return_value=data)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[active_user_with_permissions])
mocker.patch('app.invite_api_client.create_invite', return_value=InvitedUser(**sample_invite))
- response = logged_in_client.post(
- url_for('main.invite_user', service_id=service_one['id']),
- data={'email_address': email_address,
- 'view_activity': 'y',
- 'send_messages': 'y',
- 'manage_templates': 'y',
- 'manage_service': 'y',
- 'manage_api_keys': 'y',
- 'login_authentication': auth_type},
- follow_redirects=True
+ page = client_request.post(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ _data={
+ 'email_address': email_address,
+ 'view_activity': 'y',
+ 'send_messages': 'y',
+ 'manage_templates': 'y',
+ 'manage_service': 'y',
+ 'manage_api_keys': 'y',
+ 'login_authentication': auth_type,
+ },
+ _follow_redirects=True,
+ _expected_status=200,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Team members'
flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
assert flash_banner == 'Invite sent to test@example.gov.uk'
@@ -715,7 +711,7 @@ def test_invite_user_with_email_auth_service(
def test_invite_user_sends_invite_with_all_folders_if_folder_permissions_not_enabled(
- logged_in_client,
+ client_request,
mocker,
mock_get_template_folders,
service_one
@@ -729,13 +725,16 @@ def test_invite_user_sends_invite_with_all_folders_if_folder_permissions_not_ena
]
invite_mock = mocker.patch('app.invite_api_client.create_invite')
- response = logged_in_client.post(
- url_for('main.invite_user', service_id=service_one['id']),
- data={'email_address': 'user@example.com',
- 'send_messages': 'y'},
- follow_redirects=True
+ client_request.post(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ _data={
+ 'email_address': 'user@example.com',
+ 'send_messages': 'y',
+ },
+ _follow_redirects=True,
+ _expected_status=200,
)
- assert response.status_code == 200
folder_data_sent = invite_mock.call_args[0][-1]
@@ -841,24 +840,24 @@ def test_manage_users_does_not_show_accepted_invite(
def test_user_cant_invite_themselves(
- logged_in_client,
+ client_request,
mocker,
active_user_with_permissions,
mock_create_invite,
mock_get_template_folders,
):
- service = create_sample_service(active_user_with_permissions)
- response = logged_in_client.post(
- url_for('main.invite_user', service_id=service['id']),
- data={'email_address': active_user_with_permissions.email_address,
- 'send_messages': 'y',
- 'manage_service': 'y',
- 'manage_api_keys': 'y'},
- follow_redirects=True
+ page = client_request.post(
+ 'main.invite_user',
+ service_id=SERVICE_ONE_ID,
+ _data={
+ 'email_address': active_user_with_permissions.email_address,
+ 'send_messages': 'y',
+ 'manage_service': 'y',
+ 'manage_api_keys': 'y',
+ },
+ _follow_redirects=True,
+ _expected_status=200,
)
-
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Invite a team member'
form_error = page.find('span', class_='error-message').string.strip()
assert form_error == "You can’t send an invitation to yourself"
@@ -898,7 +897,7 @@ def test_remove_user_from_service(
def test_can_invite_user_as_platform_admin(
- logged_in_client,
+ client_request,
service_one,
platform_admin_user,
active_user_with_permissions,
@@ -907,9 +906,11 @@ def test_can_invite_user_as_platform_admin(
):
mocker.patch('app.user_api_client.get_users_for_service', return_value=[active_user_with_permissions])
- response = logged_in_client.get(url_for('main.manage_users', service_id=service_one['id']))
- resp_text = response.get_data(as_text=True)
- assert url_for('.invite_user', service_id=service_one['id']) in resp_text
+ page = client_request.get(
+ 'main.manage_users',
+ service_id=SERVICE_ONE_ID,
+ )
+ assert url_for('.invite_user', service_id=service_one['id']) in str(page)
def test_edit_user_email_page(
@@ -947,24 +948,21 @@ def test_edit_user_email_page_404_for_non_team_member(
def test_edit_user_email_redirects_to_confirmation(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
- service_one,
- mocker,
- mock_get_user,
):
- response = logged_in_client.post(
- url_for(
- 'main.edit_user_email',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id))
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.confirm_edit_user_email',
- service_id=service_one['id'],
+ client_request.post(
+ 'main.edit_user_email',
+ service_id=SERVICE_ONE_ID,
user_id=active_user_with_permissions.id,
- _external=True
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.confirm_edit_user_email',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _external=True,
+ ),
)
@@ -993,48 +991,43 @@ def test_edit_user_email_without_changing_goes_back_to_team_members(
def test_confirm_edit_user_email_page(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
- service_one,
- mocker,
mock_get_user,
):
new_email = 'new_email@gov.uk'
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['team_member_email_change'] = new_email
- response = logged_in_client.get(url_for(
- 'main.confirm_edit_user_email',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id
- ))
- assert 'Confirm change of email address' in response.get_data(as_text=True)
+ page = client_request.get(
+ 'main.confirm_edit_user_email',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ )
+
+ assert 'Confirm change of email address' in page.text
for text in [
'New email address:',
new_email,
'We will send {} an email to tell them about the change.'.format(active_user_with_permissions.name)
]:
- assert text in response.get_data(as_text=True)
- assert 'Confirm' in response.get_data(as_text=True)
- assert response.status_code == 200
+ assert text in page.text
+ assert 'Confirm' in page.text
def test_confirm_edit_user_email_page_redirects_if_session_empty(
- logged_in_client,
- active_user_with_permissions,
+ client_request,
mock_get_users_by_service,
- service_one,
- mocker,
- mock_get_user,
+ active_user_with_permissions,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.confirm_edit_user_email',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id
- ))
- assert response.status_code == 302
- assert 'Confirm change of email address' not in response.get_data(as_text=True)
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _follow_redirects=True,
+ )
+ assert 'Confirm change of email address' not in page.text
def test_confirm_edit_user_email_page_404s_for_non_team_member(
@@ -1050,7 +1043,7 @@ def test_confirm_edit_user_email_page_404s_for_non_team_member(
def test_confirm_edit_user_email_changes_user_email(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
service_one,
@@ -1059,16 +1052,19 @@ def test_confirm_edit_user_email_changes_user_email(
mock_update_user_attribute
):
new_email = 'new_email@gov.uk'
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['team_member_email_change'] = new_email
- response = logged_in_client.post(
- url_for(
- 'main.confirm_edit_user_email',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id))
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.manage_users', service_id=service_one['id'], _external=True)
+ client_request.post(
+ 'main.confirm_edit_user_email',
+ service_id=service_one['id'],
+ user_id=active_user_with_permissions.id,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.manage_users',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ ),
+ )
mock_update_user_attribute.assert_called_once_with(
active_user_with_permissions.id,
email_address=new_email,
@@ -1162,51 +1158,49 @@ def test_edit_user_mobile_number_page(
def test_edit_user_mobile_number_redirects_to_confirmation(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
- service_one,
- mocker,
- mock_get_user,
):
-
- data = {'mobile_number': '07554080636'}
- response = logged_in_client.post(
- url_for(
- 'main.edit_user_mobile_number',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id), data=data)
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.confirm_edit_user_mobile_number',
- service_id=service_one['id'],
+ client_request.post(
+ 'main.edit_user_mobile_number',
+ service_id=SERVICE_ONE_ID,
user_id=active_user_with_permissions.id,
- _external=True
+ _data={'mobile_number': '07554080636'},
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.confirm_edit_user_mobile_number',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _external=True,
+ ),
)
def test_edit_user_mobile_number_redirects_to_manage_users_if_number_not_changed(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
service_one,
mocker,
mock_get_user,
):
-
- data = {'mobile_number': '0770••••762'}
- response = logged_in_client.post(
- url_for(
- 'main.edit_user_mobile_number',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id), data=data)
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.manage_users', service_id=service_one['id'], _external=True)
+ client_request.post(
+ 'main.edit_user_mobile_number',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _data={'mobile_number': '0770••••762'},
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.manage_users',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ ),
+ )
def test_confirm_edit_user_mobile_number_page(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
service_one,
@@ -1214,44 +1208,43 @@ def test_confirm_edit_user_mobile_number_page(
mock_get_user,
):
new_number = '07554080636'
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['team_member_mobile_change'] = new_number
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.confirm_edit_user_mobile_number',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id
- ))
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ )
- assert response.status_code == 200
- assert 'Confirm change of mobile number' in response.get_data(as_text=True)
+ assert 'Confirm change of mobile number' in page.text
for text in [
'New mobile number:',
new_number,
'We will send {} a text message to tell them about the change.'.format(active_user_with_permissions.name)
]:
- assert text in response.get_data(as_text=True)
- assert 'Confirm' in response.get_data(as_text=True)
+ assert text in page.text
+ assert 'Confirm' in page.text
def test_confirm_edit_user_mobile_number_page_redirects_if_session_empty(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
service_one,
mocker,
mock_get_user,
):
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.confirm_edit_user_mobile_number',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id
- ))
- assert response.status_code == 302
- assert 'Confirm change of mobile number' not in response.get_data(as_text=True)
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _expected_status=302,
+ )
+ assert 'Confirm change of mobile number' not in page.text
def test_confirm_edit_user_mobile_number_changes_user_mobile_number(
- logged_in_client,
+ client_request,
active_user_with_permissions,
mock_get_users_by_service,
service_one,
@@ -1260,16 +1253,19 @@ def test_confirm_edit_user_mobile_number_changes_user_mobile_number(
mock_update_user_attribute
):
new_number = '07554080636'
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['team_member_mobile_change'] = new_number
- response = logged_in_client.post(
- url_for(
- 'main.confirm_edit_user_mobile_number',
- service_id=service_one['id'],
- user_id=active_user_with_permissions.id))
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.manage_users', service_id=service_one['id'], _external=True)
+ client_request.post(
+ 'main.confirm_edit_user_mobile_number',
+ service_id=SERVICE_ONE_ID,
+ user_id=active_user_with_permissions.id,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.manage_users',
+ service_id=SERVICE_ONE_ID,
+ _external=True,
+ ),
+ )
mock_update_user_attribute.assert_called_once_with(
active_user_with_permissions.id,
mobile_number=new_number,
diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py
index a6dbc063f..33b35367a 100644
--- a/tests/app/main/views/test_send.py
+++ b/tests/app/main/views/test_send.py
@@ -185,7 +185,7 @@ def test_sms_sender_has_receives_replies_hint(
)
])
def test_sender_session_is_present_after_selected(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
template_mock,
@@ -194,12 +194,14 @@ def test_sender_session_is_present_after_selected(
):
template_mock(mocker)
sender_data(mocker)
- logged_in_client.post(
- url_for('.set_sender', service_id=service_one['id'], template_id=fake_uuid),
- data={'sender': '1234'}
+ client_request.post(
+ '.set_sender',
+ service_id=service_one['id'],
+ template_id=fake_uuid,
+ _data={'sender': '1234'},
)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert session['sender_id'] == '1234'
@@ -214,7 +216,7 @@ def test_sender_session_is_present_after_selected(
)
])
def test_set_sender_redirects_if_no_sender_data(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
template_mock,
@@ -223,17 +225,18 @@ def test_set_sender_redirects_if_no_sender_data(
):
template_mock(mocker)
sender_data(mocker)
- response = logged_in_client.get(
- url_for('.set_sender', service_id=service_one['id'], template_id=fake_uuid)
- )
- assert response.status_code == 302
- expected_url = url_for(
- '.send_one_off',
- service_id=service_one['id'],
+ client_request.get(
+ '.set_sender',
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- _external=True,
+ _expected_status=302,
+ _expected_url=url_for(
+ '.send_one_off',
+ service_id=service_one['id'],
+ template_id=fake_uuid,
+ _external=True,
+ )
)
- assert response.location == expected_url
def test_that_test_files_exist():
@@ -242,7 +245,7 @@ def test_that_test_files_exist():
def test_should_not_allow_files_to_be_uploaded_without_the_correct_permission(
- logged_in_client,
+ client_request,
mock_get_service_template,
service_one,
fake_uuid,
@@ -250,14 +253,13 @@ def test_should_not_allow_files_to_be_uploaded_without_the_correct_permission(
template_id = fake_uuid
service_one['permissions'] = []
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'.send_messages',
- service_id=service_one['id'],
- template_id=template_id),
- follow_redirects=True)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ service_id=SERVICE_ONE_ID,
+ template_id=template_id,
+ _follow_redirects=True,
+ )
- assert response.status_code == 200
assert page.select('main p')[0].text.strip() == "Sending text messages has been disabled for your service."
assert page.select(".page-footer-back-link")[0].text == "Back to the template"
assert page.select(".page-footer-back-link")[0]['href'] == url_for(
@@ -908,7 +910,7 @@ def test_404_for_previewing_a_row_out_of_range(
active_caseworking_user,
))
def test_send_test_doesnt_show_file_contents(
- logged_in_client,
+ client_request,
mocker,
mock_get_service_template,
mock_s3_upload,
@@ -925,13 +927,13 @@ def test_send_test_doesnt_show_file_contents(
07700 900 986
""")
- response = logged_in_client.get(
- url_for('main.send_test', service_id=service_one['id'], template_id=fake_uuid),
- follow_redirects=True,
+ page = client_request.get(
+ 'main.send_test',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _follow_redirects=True,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.select('h1')[0].text.strip() == 'Preview of ‘Two week reminder’'
assert len(page.select('table')) == 0
assert len(page.select('.banner-dangerous')) == 0
@@ -984,7 +986,7 @@ def test_send_test_doesnt_show_file_contents(
])
def test_send_test_step_redirects_if_session_not_setup(
mocker,
- logged_in_client,
+ client_request,
mock_get_service_statistics,
mock_get_users_by_service,
mock_has_no_jobs,
@@ -998,22 +1000,24 @@ def test_send_test_step_redirects_if_session_not_setup(
template_mock(mocker)
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=99)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert 'recipient' not in session
assert 'placeholders' not in session
- response = logged_in_client.get(
- url_for(endpoint, service_id=SERVICE_ONE_ID, template_id=fake_uuid, step_index=0),
- follow_redirects=True
+ client_request.get(
+ endpoint,
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=0,
+ _follow_redirects=True,
)
- assert response.status_code == 200
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert session['recipient'] == expected_recipient
def test_send_one_off_does_not_send_without_the_correct_permissions(
- logged_in_client,
+ client_request,
mock_get_service_template,
service_one,
fake_uuid,
@@ -1021,14 +1025,13 @@ def test_send_one_off_does_not_send_without_the_correct_permissions(
template_id = fake_uuid
service_one['permissions'] = []
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'.send_one_off',
- service_id=service_one['id'],
- template_id=template_id),
- follow_redirects=True)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ service_id=SERVICE_ONE_ID,
+ template_id=template_id,
+ _follow_redirects=True,
+ )
- assert response.status_code == 200
assert page.select('main p')[0].text.strip() == "Sending text messages has been disabled for your service."
assert page.select(".page-footer-back-link")[0].text == "Back to the template"
assert page.select(".page-footer-back-link")[0]['href'] == url_for(
@@ -1145,7 +1148,7 @@ def test_send_one_off_or_test_has_correct_page_titles(
),
])
def test_send_one_off_has_skip_link(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
mock_get_service_email_template,
@@ -1160,14 +1163,15 @@ def test_send_one_off_has_skip_link(
template_mock(mocker)
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=99)
- response = logged_in_client.get(
- url_for('main.send_one_off_step', service_id=service_one['id'], template_id=fake_uuid, step_index=0),
- follow_redirects=True
+ page = client_request.get(
+ 'main.send_one_off_step',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=0,
+ _follow_redirects=True,
)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
- skip_links = page.select('a.top-gutter-4-3')
- assert response.status_code == 200
+ skip_links = page.select('a.top-gutter-4-3')
if expected_link_text and expected_link_url:
assert skip_links[0].text.strip() == expected_link_text
@@ -1212,7 +1216,7 @@ def test_send_one_off_has_sticky_header_for_email_and_letter(
active_caseworking_user,
))
def test_skip_link_will_not_show_on_sms_one_off_if_service_has_no_mobile_number(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
mock_get_service_template,
@@ -1223,11 +1227,13 @@ def test_skip_link_will_not_show_on_sms_one_off_if_service_has_no_mobile_number(
user = user(fake_uuid)
user.mobile_number = None
mocker.patch('app.user_api_client.get_user', return_value=user)
- response = logged_in_client.get(
- url_for('main.send_one_off_step', service_id=service_one['id'], template_id=fake_uuid, step_index=0),
- follow_redirects=True
+ page = client_request.get(
+ 'main.send_one_off_step',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=0,
+ _follow_redirects=True,
)
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
skip_links = page.select('a.top-gutter-4-3')
assert not skip_links
@@ -1425,7 +1431,7 @@ def test_send_test_redirects_to_start_if_you_skip_steps(
('main.send_one_off_step', 'main.send_one_off'),
])
def test_send_test_redirects_to_start_if_index_out_of_bounds_and_some_placeholders_empty(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
mock_get_service_email_template,
@@ -1439,22 +1445,21 @@ def test_send_test_redirects_to_start_if_index_out_of_bounds_and_some_placeholde
user,
):
mocker.patch('app.user_api_client.get_user', return_value=user(fake_uuid))
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['placeholders'] = {'name': 'foo'}
- response = logged_in_client.get(url_for(
+ client_request.get(
endpoint,
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
step_index=999,
- ))
-
- assert response.status_code == 302
- assert response.location == url_for(
- expected_redirect,
- service_id=service_one['id'],
- template_id=fake_uuid,
- _external=True,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ expected_redirect,
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _external=True,
+ ),
)
@@ -1467,7 +1472,7 @@ def test_send_test_redirects_to_start_if_index_out_of_bounds_and_some_placeholde
('main.send_one_off', 'main.send_one_off_step'),
])
def test_send_test_sms_message_redirects_with_help_argument(
- logged_in_client,
+ client_request,
mocker,
service_one,
fake_uuid,
@@ -1479,17 +1484,20 @@ def test_send_test_sms_message_redirects_with_help_argument(
template = {'data': {'template_type': 'sms'}}
mocker.patch('app.service_api_client.get_service_template', return_value=template)
- response = logged_in_client.get(
- url_for(endpoint, service_id=service_one['id'], template_id=fake_uuid, help=1)
- )
- assert response.status_code == 302
- assert response.location == url_for(
- expected_redirect,
- service_id=service_one['id'],
+ client_request.get(
+ endpoint,
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- step_index=0,
help=1,
- _external=True,
+ _expected_status=302,
+ _expected_response=url_for(
+ expected_redirect,
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=0,
+ help=1,
+ _external=True,
+ )
)
@@ -1498,7 +1506,7 @@ def test_send_test_sms_message_redirects_with_help_argument(
active_caseworking_user,
))
def test_send_test_email_message_without_placeholders_redirects_to_check_page(
- logged_in_client,
+ client_request,
mocker,
service_one,
mock_get_service_email_template_without_placeholders,
@@ -1511,15 +1519,17 @@ def test_send_test_email_message_without_placeholders_redirects_to_check_page(
):
mocker.patch('app.user_api_client.get_user', return_value=user(fake_uuid))
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = 'foo@bar.com'
- response = logged_in_client.get(
- url_for('main.send_test', step_index=0, service_id=service_one['id'], template_id=fake_uuid),
- follow_redirects=True
+ page = client_request.get(
+ 'main.send_test',
+ step_index=0,
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _follow_redirects=True,
)
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+
assert page.select('h1')[0].text.strip() == 'Preview of ‘Two week reminder’'
@@ -1639,7 +1649,7 @@ def test_send_test_letter_redirects_to_right_url(
def test_send_test_populates_field_from_session(
- logged_in_client,
+ client_request,
mocker,
service_one,
mock_login,
@@ -1648,19 +1658,17 @@ def test_send_test_populates_field_from_session(
fake_uuid,
):
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = None
session['placeholders'] = {}
session['placeholders']['name'] = 'Jo'
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.send_test_step',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
step_index=0,
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ )
assert page.select('input')[0]['value'] == 'Jo'
@@ -1690,29 +1698,24 @@ def test_send_test_caches_page_count(
def test_send_test_indicates_optional_address_columns(
- logged_in_client,
+ client_request,
mocker,
- service_one,
- mock_login,
- mock_get_service,
mock_get_service_letter_template,
fake_uuid,
):
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = None
session['placeholders'] = {}
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.send_test_step',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
step_index=3,
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ )
assert normalize_spaces(page.select('label')[0].text) == (
'address line 3 '
@@ -1720,78 +1723,70 @@ def test_send_test_indicates_optional_address_columns(
)
assert page.select('.page-footer-back-link')[0]['href'] == url_for(
'main.send_one_off_step',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
step_index=2,
)
def test_send_test_allows_empty_optional_address_columns(
- logged_in_client,
+ client_request,
mocker,
- service_one,
- mock_login,
- mock_get_service,
mock_get_service_letter_template,
fake_uuid,
):
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = None
session['placeholders'] = {}
- response = logged_in_client.post(
- url_for(
- 'main.send_test_step',
- service_id=service_one['id'],
- template_id=fake_uuid,
- step_index=3,
- ),
- # no data here
- )
-
- assert response.status_code == 302
- assert response.location == url_for(
+ client_request.post(
'main.send_test_step',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- step_index=4,
- _external=True,
+ step_index=3,
+ # no data here
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.send_test_step',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=4,
+ _external=True,
+ ),
)
def test_send_test_sms_message_puts_submitted_data_in_session(
- logged_in_client,
+ client_request,
service_one,
mock_get_service_template_with_placeholders,
mock_get_users_by_service,
mock_get_service_statistics,
fake_uuid,
):
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = '07700 900762'
session['placeholders'] = {}
- response = logged_in_client.post(
- url_for(
- 'main.send_test_step',
- service_id=service_one['id'],
- template_id=fake_uuid,
- step_index=0,
- ),
- data={'placeholder_value': 'Jo'}
- )
- assert response.status_code == 302
- assert response.location == url_for(
- 'main.check_notification',
+ client_request.post(
+ 'main.send_test_step',
service_id=service_one['id'],
template_id=fake_uuid,
- _external=True
+ step_index=0,
+ _data={'placeholder_value': 'Jo'},
+ _expected_status=302,
+ _expected_redirect=url_for(
+ 'main.check_notification',
+ service_id=service_one['id'],
+ template_id=fake_uuid,
+ _external=True,
+ )
)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert session['recipient'] == '07700 900762'
assert session['placeholders']['name'] == 'Jo'
@@ -1839,7 +1834,7 @@ def test_send_test_works_as_letter_preview(
def test_send_test_clears_session(
- logged_in_client,
+ client_request,
mocker,
service_one,
fake_uuid,
@@ -1847,20 +1842,18 @@ def test_send_test_clears_session(
template = {'data': {'template_type': 'sms'}}
mocker.patch('app.service_api_client.get_service_template', return_value=template)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = '07700900001'
session['placeholders'] = {'foo': 'bar'}
- response = logged_in_client.get(
- url_for(
- 'main.send_test',
- service_id=service_one['id'],
- template_id=fake_uuid,
- ),
+ client_request.get(
+ 'main.send_test',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _expected_status=302,
)
- assert response.status_code == 302
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
assert session['recipient'] is None
assert session['placeholders'] == {}
@@ -2035,8 +2028,7 @@ def test_letter_can_only_be_sent_now(
'', '2016-08-25T13:04:21.767198'
])
def test_create_job_should_call_api(
- logged_in_client,
- service_one,
+ client_request,
mock_create_job,
mock_get_job,
mock_get_notifications,
@@ -2046,13 +2038,12 @@ def test_create_job_should_call_api(
fake_uuid,
when
):
- service_id = service_one['id']
- data = mock_get_job(service_one['id'], fake_uuid)['data']
+ data = mock_get_job(SERVICE_ONE_ID, fake_uuid)['data']
job_id = data['id']
original_file_name = data['original_file_name']
template_id = data['template']
notification_count = data['notification_count']
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['file_uploads'] = {
fake_uuid: {
'template_id': template_id,
@@ -2061,22 +2052,21 @@ def test_create_job_should_call_api(
}
}
- response = logged_in_client.post(
- url_for(
- 'main.start_job',
- service_id=service_one['id'],
- upload_id=job_id,
- original_file_name=original_file_name
- ),
- data={'scheduled_for': when},
- follow_redirects=True,
+ page = client_request.post(
+ 'main.start_job',
+ service_id=SERVICE_ONE_ID,
+ upload_id=job_id,
+ original_file_name=original_file_name,
+ _data={'scheduled_for': when},
+ _follow_redirects=True,
+ _expected_status=200,
)
- assert response.status_code == 200
- assert original_file_name in response.get_data(as_text=True)
+ assert original_file_name in page.text
+
mock_create_job.assert_called_with(
job_id,
- service_id,
+ SERVICE_ONE_ID,
scheduled_for=when,
)
@@ -2360,12 +2350,9 @@ def test_route_permissions_sending(
]
)
def test_check_messages_back_link(
- logged_in_client,
- api_user_active,
- mock_login,
+ client_request,
mock_get_user_by_email,
mock_get_users_by_service,
- mock_get_service,
mock_has_permissions,
mock_get_service_statistics,
mock_get_job_doesnt_exist,
@@ -2386,7 +2373,7 @@ def test_check_messages_back_link(
return_value=5,
)
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['file_uploads'] = {
fake_uuid: {
'original_file_name': 'valid.csv',
@@ -2396,18 +2383,18 @@ def test_check_messages_back_link(
}
}
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.check_messages',
- service_id=fake_uuid,
+ service_id=SERVICE_ONE_ID,
upload_id=fake_uuid,
template_id=fake_uuid,
+ _test_page_title=False,
**extra_args
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ )
+
assert (
page.findAll('a', {'class': 'page-footer-back-link'})[0]['href']
- ) == expected_url(service_id=fake_uuid, template_id=fake_uuid)
+ ) == expected_url(service_id=SERVICE_ONE_ID, template_id=fake_uuid)
def test_shows_link_to_end_tour(
@@ -2456,15 +2443,12 @@ def test_go_to_dashboard_after_tour_link(
], ids=['none_sent', 'some_sent'])
def test_check_messages_shows_too_many_messages_errors(
mocker,
- logged_in_client,
- api_user_active,
- mock_login,
+ client_request,
+ mock_get_service, # set message_limit to 50
mock_get_users_by_service,
- mock_get_service,
mock_get_service_template,
mock_get_job_doesnt_exist,
mock_get_jobs,
- mock_has_permissions,
fake_uuid,
num_requested,
expected_msg
@@ -2478,7 +2462,7 @@ def test_check_messages_shows_too_many_messages_errors(
'email': {'requested': 0, 'delivered': 0, 'failed': 0}
})
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['file_uploads'] = {
fake_uuid: {
'template_id': fake_uuid,
@@ -2487,15 +2471,15 @@ def test_check_messages_shows_too_many_messages_errors(
}
}
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.check_messages',
- service_id=fake_uuid,
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
upload_id=fake_uuid,
original_file_name='valid.csv',
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ _test_page_title=False,
+ )
+
assert page.find('h1').text.strip() == 'Too many recipients'
assert page.find('div', class_='banner-dangerous').find('a').text.strip() == 'trial mode'
@@ -2506,9 +2490,8 @@ def test_check_messages_shows_too_many_messages_errors(
def test_check_messages_shows_trial_mode_error(
- logged_in_client,
+ client_request,
mock_get_users_by_service,
- mock_get_service,
mock_get_service_template,
mock_has_permissions,
mock_get_service_statistics,
@@ -2521,21 +2504,21 @@ def test_check_messages_shows_trial_mode_error(
'phone number,\n07900900321' # Not in team
))
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['file_uploads'] = {
fake_uuid: {
'template_id': '',
}
}
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.check_messages',
- service_id=uuid.uuid4(),
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- upload_id=fake_uuid
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ upload_id=fake_uuid,
+ _test_page_title=False,
+ )
+
assert ' '.join(
page.find('div', class_='banner-dangerous').text.split()
) == (
@@ -2945,11 +2928,8 @@ def test_send_one_off_letter_errors_in_trial_mode(
def test_check_messages_shows_over_max_row_error(
- logged_in_client,
- api_user_active,
- mock_login,
+ client_request,
mock_get_users_by_service,
- mock_get_service,
mock_get_service_template_with_placeholders,
mock_has_permissions,
mock_get_service_statistics,
@@ -2964,21 +2944,21 @@ def test_check_messages_shows_over_max_row_error(
mock_recipients.__len__.return_value = 99999
mock_recipients.too_many_rows.return_value = True
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['file_uploads'] = {
fake_uuid: {
'template_id': fake_uuid,
}
}
- response = logged_in_client.get(url_for(
+ page = client_request.get(
'main.check_messages',
- service_id=fake_uuid,
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- upload_id=fake_uuid
- ))
- assert response.status_code == 200
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
+ upload_id=fake_uuid,
+ _test_page_title=False,
+ )
+
assert ' '.join(
page.find('div', class_='banner-dangerous').text.split()
) == (
@@ -2995,27 +2975,27 @@ def test_check_messages_shows_over_max_row_error(
{'name': 'Jo'}
])
def test_check_notification_redirects_if_session_not_populated(
- logged_in_client,
+ client_request,
service_one,
fake_uuid,
existing_session_items,
mock_get_service_template_with_placeholders
):
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session.update(existing_session_items)
- resp = logged_in_client.get(url_for(
+ client_request.get(
'main.check_notification',
- service_id=service_one['id'],
- template_id=fake_uuid
- ))
-
- assert resp.location == url_for(
- 'main.send_one_off_step',
- service_id=service_one['id'],
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- step_index=1,
- _external=True
+ _expected_status=301,
+ _expected_redirect=url_for(
+ 'main.send_one_off_step',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ step_index=1,
+ _external=True,
+ )
)
@@ -3187,23 +3167,23 @@ def test_send_notification_clears_session(
def test_send_notification_redirects_if_missing_data(
- logged_in_client,
- service_one,
+ client_request,
fake_uuid,
):
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['placeholders'] = {'a': 'b'}
- resp = logged_in_client.post(
- url_for('main.send_notification', service_id=service_one['id'], template_id=fake_uuid)
- )
-
- assert resp.status_code == 302
- assert resp.location == url_for(
- '.send_one_off',
- service_id=service_one['id'],
+ client_request.post(
+ 'main.send_notification',
+ service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
- _external=True
+ _expected_status=302,
+ _expected_redirect=url_for(
+ '.send_one_off',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _external=True,
+ ),
)
@@ -3212,28 +3192,29 @@ def test_send_notification_redirects_if_missing_data(
({'help': '3'}, {'help': '3'})
])
def test_send_notification_redirects_to_view_page(
- logged_in_client,
- service_one,
+ client_request,
fake_uuid,
mock_send_notification,
extra_args,
extra_redirect_args
):
- with logged_in_client.session_transaction() as session:
+ with client_request.session_transaction() as session:
session['recipient'] = '07700900001'
session['placeholders'] = {'a': 'b'}
- resp = logged_in_client.post(
- url_for('main.send_notification', service_id=service_one['id'], template_id=fake_uuid, **extra_args)
- )
-
- assert resp.status_code == 302
- assert resp.location == url_for(
- '.view_notification',
- service_id=service_one['id'],
- notification_id=fake_uuid,
- _external=True,
- **extra_redirect_args
+ client_request.post(
+ 'main.send_notification',
+ service_id=SERVICE_ONE_ID,
+ template_id=fake_uuid,
+ _expected_status=302,
+ _expected_redirect=url_for(
+ '.view_notification',
+ service_id=SERVICE_ONE_ID,
+ notification_id=fake_uuid,
+ _external=True,
+ **extra_redirect_args
+ ),
+ **extra_args
)
diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py
index 73e022302..ed4f73e40 100644
--- a/tests/app/main/views/test_service_settings.py
+++ b/tests/app/main/views/test_service_settings.py
@@ -242,42 +242,41 @@ def test_if_cant_send_letters_then_cant_see_letter_contact_block(
def test_letter_contact_block_shows_none_if_not_set(
- logged_in_client,
- service_one,
- mocker,
- single_reply_to_email_address,
- no_letter_contact_blocks,
- mock_get_service_organisation,
- single_sms_sender,
- mock_get_service_settings_page_common,
+ client_request,
+ service_one,
+ single_reply_to_email_address,
+ no_letter_contact_blocks,
+ mock_get_service_organisation,
+ single_sms_sender,
+ mock_get_service_settings_page_common,
):
service_one['permissions'] = ['letter']
- response = logged_in_client.get(url_for(
- 'main.service_settings', service_id=service_one['id']
- ))
+ page = client_request.get(
+ 'main.service_settings',
+ service_id=SERVICE_ONE_ID,
+ )
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
div = page.find_all('tr')[9].find_all('td')[1].div
assert div.text.strip() == 'Not set'
assert 'default' in div.attrs['class'][0]
def test_escapes_letter_contact_block(
- logged_in_client,
- service_one,
- mocker,
- single_reply_to_email_address,
- single_sms_sender,
- mock_get_service_organisation,
- injected_letter_contact_block,
- mock_get_service_settings_page_common,
+ client_request,
+ service_one,
+ mocker,
+ single_reply_to_email_address,
+ single_sms_sender,
+ mock_get_service_organisation,
+ injected_letter_contact_block,
+ mock_get_service_settings_page_common,
):
service_one['permissions'] = ['letter']
- response = logged_in_client.get(url_for(
- 'main.service_settings', service_id=service_one['id']
- ))
+ page = client_request.get(
+ 'main.service_settings',
+ service_id=SERVICE_ONE_ID,
+ )
- page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
div = str(page.find_all('tr')[9].find_all('td')[1].div)
assert 'foo
bar' in div
assert '