Stop reply_to address fixtures from being called like functions

This stops most instances of the fixtures which return sms senders,
email reply to addresses or letter contact blocks from being called as
if they were functions in the tests by replacing them with functions
which return the same results.

This change allows a couple of fixtures which are now longer used to be
deleted.
This commit is contained in:
Katie Smith
2019-12-20 14:34:45 +00:00
parent ccd245b287
commit 41d33b2995
3 changed files with 330 additions and 182 deletions

View File

@@ -1,3 +1,4 @@
from datetime import datetime
from functools import partial
from unittest.mock import ANY, PropertyMock, call
from urllib.parse import parse_qs, urlparse
@@ -12,6 +13,7 @@ from notifications_utils.clients.zendesk.zendesk_client import ZendeskClient
import app
from app.utils import email_safe
from tests import (
invite_json,
organisation_json,
sample_uuid,
service_json,
@@ -24,23 +26,15 @@ from tests.conftest import (
create_active_user_no_api_key_permission,
create_active_user_no_settings_permission,
create_active_user_with_permissions,
create_letter_contact_block,
create_multiple_email_reply_to_addresses,
create_multiple_letter_contact_blocks,
create_multiple_sms_senders,
create_platform_admin_user,
get_default_letter_contact_block,
get_default_reply_to_email_address,
get_default_sms_sender,
get_inbound_number_sms_sender,
get_non_default_letter_contact_block,
get_non_default_reply_to_email_address,
get_non_default_sms_sender,
create_reply_to_email_address,
create_sms_sender,
mock_get_service_organisation,
multiple_letter_contact_blocks,
multiple_reply_to_email_addresses,
multiple_sms_senders,
no_letter_contact_blocks,
no_reply_to_email_addresses,
no_sms_senders,
normalize_spaces,
sample_invite,
)
FAKE_TEMPLATE_ID = uuid4()
@@ -761,7 +755,7 @@ def test_should_check_for_sending_things_right(
reply_to_email_addresses,
expected_reply_to_checklist_item,
active_user_with_permissions,
active_user_no_settings_permission
active_user_no_settings_permission,
):
def _templates_by_type(template_type):
return {
@@ -776,11 +770,24 @@ def test_should_check_for_sending_things_right(
[active_user_no_settings_permission]
)
)
invite_one = invite_json(id_=uuid4(),
from_user=service_one['users'][0],
service_id=service_one['id'],
email_address='invited_user@test.gov.uk',
permissions='view_activity,send_messages,manage_service,manage_api_keys',
created_at=datetime.utcnow(),
status='pending',
auth_type='sms_auth',
folder_permissions=[])
invite_two = invite_one.copy()
invite_two['permissions'] = 'view_activity'
mock_get_invites = mocker.patch(
'app.models.user.InvitedUsers.client',
return_value=(
([sample_invite(mocker, service_one)] * count_of_invites_with_manage_service) +
[sample_invite(mocker, service_one, permissions='view_activity')]
([invite_one] * count_of_invites_with_manage_service) +
[invite_two]
)
)
@@ -1951,12 +1958,14 @@ def test_api_ids_dont_show_on_option_pages_with_a_single_sender(
@pytest.mark.parametrize(
(
'sender_list_page,'
'endpoint_to_mock,'
'sample_data,'
'expected_items,'
),
[(
'main.service_email_reply_to',
multiple_reply_to_email_addresses,
'app.service_api_client.get_reply_to_email_addresses',
create_multiple_email_reply_to_addresses(),
[
'test@example.com (default) Change 1234',
'test2@example.com Change 5678',
@@ -1964,7 +1973,8 @@ def test_api_ids_dont_show_on_option_pages_with_a_single_sender(
],
), (
'main.service_letter_contact_details',
multiple_letter_contact_blocks,
'app.service_api_client.get_letter_contacts',
create_multiple_letter_contact_blocks(),
[
'Blank Make default',
'1 Example Street (default) Change 1234',
@@ -1973,7 +1983,8 @@ def test_api_ids_dont_show_on_option_pages_with_a_single_sender(
],
), (
'main.service_sms_senders',
multiple_sms_senders,
'app.service_api_client.get_sms_senders',
create_multiple_sms_senders(),
[
'Example (default and receives replies) Change 1234',
'Example 2 Change 5678',
@@ -1986,10 +1997,11 @@ def test_default_option_shows_for_default_sender(
client_request,
mocker,
sender_list_page,
endpoint_to_mock,
sample_data,
expected_items,
):
sample_data(mocker)
mocker.patch(endpoint_to_mock, return_value=sample_data)
rows = client_request.get(
sender_list_page,
@@ -2034,31 +2046,31 @@ def test_remove_default_from_default_letter_contact_block(
)
@pytest.mark.parametrize('sender_list_page, sample_data, expected_output', [
@pytest.mark.parametrize('sender_list_page, endpoint_to_mock, expected_output', [
(
'main.service_email_reply_to',
no_reply_to_email_addresses,
'app.service_api_client.get_reply_to_email_addresses',
'You have not added any reply-to email addresses yet'
),
(
'main.service_letter_contact_details',
no_letter_contact_blocks,
'app.service_api_client.get_letter_contacts',
'Blank (default)'
),
(
'main.service_sms_senders',
no_sms_senders,
'app.service_api_client.get_sms_senders',
'You have not added any text message senders yet'
),
])
def test_no_senders_message_shows(
client_request,
sender_list_page,
endpoint_to_mock,
expected_output,
sample_data,
mocker
):
sample_data(mocker)
mocker.patch(endpoint_to_mock, return_value=[])
rows = client_request.get(
sender_list_page,
@@ -2145,15 +2157,15 @@ def test_incorrect_sms_sender_input(
assert count_of_api_calls == 0
@pytest.mark.parametrize('fixture, data, api_default_args', [
(no_reply_to_email_addresses, {}, True),
(multiple_reply_to_email_addresses, {}, False),
(multiple_reply_to_email_addresses, {"is_default": "y"}, True)
@pytest.mark.parametrize('reply_to_addresses, data, api_default_args', [
([], {}, True),
(create_multiple_email_reply_to_addresses(), {}, False),
(create_multiple_email_reply_to_addresses(), {"is_default": "y"}, True)
])
def test_add_reply_to_email_address_sends_test_notification(
mocker, client_request, fixture, data, api_default_args
mocker, client_request, reply_to_addresses, data, api_default_args
):
fixture(mocker)
mocker.patch('app.service_api_client.get_reply_to_email_addresses', return_value=reply_to_addresses)
data['email_address'] = "test@example.com"
mock_verify = mocker.patch(
'app.service_api_client.verify_reply_to_email_address', return_value={"data": {"id": "123"}}
@@ -2266,20 +2278,21 @@ def test_add_reply_to_email_address_fails_if_notification_not_delivered_in_45_se
mock_add_reply_to_email_address.assert_not_called()
@pytest.mark.parametrize('fixture, data, api_default_args', [
(no_letter_contact_blocks, {}, True),
(multiple_letter_contact_blocks, {}, False),
(multiple_letter_contact_blocks, {"is_default": "y"}, True)
@pytest.mark.parametrize('letter_contact_blocks, data, api_default_args', [
([], {}, True), # no existing letter contact blocks
(create_multiple_letter_contact_blocks(), {}, False),
(create_multiple_letter_contact_blocks(), {"is_default": "y"}, True)
])
def test_add_letter_contact(
fixture,
letter_contact_blocks,
data,
api_default_args,
mocker,
client_request,
mock_add_letter_contact
):
fixture(mocker)
mocker.patch('app.service_api_client.get_letter_contacts', return_value=letter_contact_blocks)
data['letter_contact_block'] = "1 Example Street"
client_request.post(
'main.service_add_letter_contact',
@@ -2341,20 +2354,20 @@ def test_add_letter_contact_when_coming_from_template(
)
@pytest.mark.parametrize('fixture, data, api_default_args', [
(no_sms_senders, {}, True),
(multiple_sms_senders, {}, False),
(multiple_sms_senders, {"is_default": "y"}, True)
@pytest.mark.parametrize('sms_senders, data, api_default_args', [
([], {}, True),
(create_multiple_sms_senders(), {}, False),
(create_multiple_sms_senders(), {"is_default": "y"}, True)
])
def test_add_sms_sender(
fixture,
sms_senders,
data,
api_default_args,
mocker,
client_request,
mock_add_sms_sender
):
fixture(mocker)
mocker.patch('app.service_api_client.get_sms_senders', return_value=sms_senders)
data['sms_sender'] = "Example"
client_request.post(
'main.service_add_sms_sender',
@@ -2369,36 +2382,54 @@ def test_add_sms_sender(
)
@pytest.mark.parametrize('sender_page, fixture, checkbox_present', [
('main.service_add_email_reply_to', no_reply_to_email_addresses, False),
('main.service_add_email_reply_to', multiple_reply_to_email_addresses, True),
('main.service_add_letter_contact', no_letter_contact_blocks, False),
('main.service_add_letter_contact', multiple_letter_contact_blocks, True)
@pytest.mark.parametrize('reply_to_addresses, checkbox_present', [
([], False),
(create_multiple_email_reply_to_addresses(), True),
])
def test_default_box_doesnt_show_on_first_sender(
sender_page,
fixture,
def test_default_box_doesnt_show_on_first_email_sender(
reply_to_addresses,
mocker,
checkbox_present,
client_request
):
fixture(mocker)
mocker.patch('app.service_api_client.get_reply_to_email_addresses', return_value=reply_to_addresses)
page = client_request.get(
sender_page,
'main.service_add_email_reply_to',
service_id=SERVICE_ONE_ID
)
assert bool(page.select_one('[name=is_default]')) == checkbox_present
@pytest.mark.parametrize('fixture, data, api_default_args', [
(get_default_reply_to_email_address, {"is_default": "y"}, True),
(get_default_reply_to_email_address, {}, True),
(get_non_default_reply_to_email_address, {}, False),
(get_non_default_reply_to_email_address, {"is_default": "y"}, True)
@pytest.mark.parametrize('contact_blocks, checkbox_present', [
([], False),
(create_multiple_letter_contact_blocks(), True)
])
def test_default_box_doesnt_show_on_first_letter_sender(
contact_blocks,
mocker,
checkbox_present,
client_request
):
mocker.patch('app.service_api_client.get_letter_contacts', return_value=contact_blocks)
page = client_request.get(
'main.service_add_letter_contact',
service_id=SERVICE_ONE_ID
)
assert bool(page.select_one('[name=is_default]')) == checkbox_present
@pytest.mark.parametrize('reply_to_address, data, api_default_args', [
(create_reply_to_email_address(is_default=True), {"is_default": "y"}, True),
(create_reply_to_email_address(is_default=True), {}, True),
(create_reply_to_email_address(is_default=False), {}, False),
(create_reply_to_email_address(is_default=False), {"is_default": "y"}, True)
])
def test_edit_reply_to_email_address_sends_verification_notification_if_address_is_changed(
fixture,
reply_to_address,
data,
api_default_args,
mocker,
@@ -2408,7 +2439,7 @@ def test_edit_reply_to_email_address_sends_verification_notification_if_address_
mock_verify = mocker.patch(
'app.service_api_client.verify_reply_to_email_address', return_value={"data": {"id": "123"}}
)
fixture(mocker)
mocker.patch('app.service_api_client.get_reply_to_email_address', return_value=reply_to_address)
data['email_address'] = "test@example.gov.uk"
client_request.post(
'main.service_edit_email_reply_to',
@@ -2419,14 +2450,14 @@ def test_edit_reply_to_email_address_sends_verification_notification_if_address_
mock_verify.assert_called_once_with(SERVICE_ONE_ID, "test@example.gov.uk")
@pytest.mark.parametrize('fixture, data, api_default_args', [
(get_default_reply_to_email_address, {"is_default": "y"}, True),
(get_default_reply_to_email_address, {}, True),
(get_non_default_reply_to_email_address, {}, False),
(get_non_default_reply_to_email_address, {"is_default": "y"}, True)
@pytest.mark.parametrize('reply_to_address, data, api_default_args', [
(create_reply_to_email_address(), {"is_default": "y"}, True),
(create_reply_to_email_address(), {}, True),
(create_reply_to_email_address(is_default=False), {}, False),
(create_reply_to_email_address(is_default=False), {"is_default": "y"}, True)
])
def test_edit_reply_to_email_address_goes_straight_to_update_if_address_not_changed(
fixture,
reply_to_address,
data,
api_default_args,
mocker,
@@ -2434,7 +2465,7 @@ def test_edit_reply_to_email_address_goes_straight_to_update_if_address_not_chan
client_request,
mock_update_reply_to_email_address
):
fixture(mocker)
mocker.patch('app.service_api_client.get_reply_to_email_address', return_value=reply_to_address)
mock_verify = mocker.patch('app.service_api_client.verify_reply_to_email_address')
data['email_address'] = "test@example.com"
client_request.post(
@@ -2453,28 +2484,27 @@ def test_edit_reply_to_email_address_goes_straight_to_update_if_address_not_chan
mock_verify.assert_not_called()
@pytest.mark.parametrize('fixture, expected_link_text, partial_href', [
@pytest.mark.parametrize('reply_to_address, expected_link_text, partial_href', [
(
get_non_default_reply_to_email_address,
create_reply_to_email_address(is_default=False),
'Delete',
partial(url_for, 'main.service_confirm_delete_email_reply_to', reply_to_email_id=sample_uuid()),
),
(
get_default_reply_to_email_address,
create_reply_to_email_address(is_default=True),
None,
None,
),
])
def test_shows_delete_link_for_email_reply_to_address(
mocker,
fixture,
reply_to_address,
expected_link_text,
partial_href,
fake_uuid,
client_request,
):
fixture(mocker)
mocker.patch('app.service_api_client.get_reply_to_email_address', return_value=reply_to_address)
page = client_request.get(
'main.service_edit_email_reply_to',
@@ -2538,14 +2568,14 @@ def test_delete_reply_to_email_address(
mock_delete.assert_called_once_with(service_id=SERVICE_ONE_ID, reply_to_email_id=fake_uuid)
@pytest.mark.parametrize('fixture, data, api_default_args', [
(get_default_letter_contact_block, {"is_default": "y"}, True),
(get_default_letter_contact_block, {}, True),
(get_non_default_letter_contact_block, {}, False),
(get_non_default_letter_contact_block, {"is_default": "y"}, True)
@pytest.mark.parametrize('letter_contact_block, data, api_default_args', [
(create_letter_contact_block(), {"is_default": "y"}, True),
(create_letter_contact_block(), {}, True),
(create_letter_contact_block(is_default=False), {}, False),
(create_letter_contact_block(is_default=False), {"is_default": "y"}, True)
])
def test_edit_letter_contact_block(
fixture,
letter_contact_block,
data,
api_default_args,
mocker,
@@ -2553,7 +2583,7 @@ def test_edit_letter_contact_block(
client_request,
mock_update_letter_contact
):
fixture(mocker)
mocker.patch('app.service_api_client.get_letter_contact', return_value=letter_contact_block)
data['letter_contact_block'] = "1 Example Street"
client_request.post(
'main.service_edit_letter_contact',
@@ -2615,14 +2645,14 @@ def test_delete_letter_contact_block(
)
@pytest.mark.parametrize('fixture, data, api_default_args', [
(get_default_sms_sender, {"is_default": "y", "sms_sender": "test"}, True),
(get_default_sms_sender, {"sms_sender": "test"}, True),
(get_non_default_sms_sender, {"sms_sender": "test"}, False),
(get_non_default_sms_sender, {"is_default": "y", "sms_sender": "test"}, True)
@pytest.mark.parametrize('sms_sender, data, api_default_args', [
(create_sms_sender(), {"is_default": "y", "sms_sender": "test"}, True),
(create_sms_sender(), {"sms_sender": "test"}, True),
(create_sms_sender(is_default=False), {"sms_sender": "test"}, False),
(create_sms_sender(is_default=False), {"is_default": "y", "sms_sender": "test"}, True)
])
def test_edit_sms_sender(
fixture,
sms_sender,
data,
api_default_args,
mocker,
@@ -2630,7 +2660,8 @@ def test_edit_sms_sender(
client_request,
mock_update_sms_sender
):
fixture(mocker)
mocker.patch('app.service_api_client.get_sms_sender', return_value=sms_sender)
client_request.post(
'main.service_edit_sms_sender',
service_id=SERVICE_ONE_ID,
@@ -2646,55 +2677,62 @@ def test_edit_sms_sender(
)
@pytest.mark.parametrize('sender_page, fixture, default_message, params, checkbox_present', [
@pytest.mark.parametrize('sender_page, endpoint_to_mock, sender_details, default_message, params, checkbox_present', [
(
'main.service_edit_email_reply_to',
get_default_reply_to_email_address,
'app.service_api_client.get_reply_to_email_address',
create_reply_to_email_address(is_default=True),
'This is the default reply-to address for service one emails',
'reply_to_email_id',
False
),
(
'main.service_edit_email_reply_to',
get_non_default_reply_to_email_address,
'app.service_api_client.get_reply_to_email_address',
create_reply_to_email_address(is_default=False),
'This is the default reply-to address for service one emails',
'reply_to_email_id',
True
),
(
'main.service_edit_letter_contact',
get_default_letter_contact_block,
'app.service_api_client.get_letter_contact',
create_letter_contact_block(is_default=True),
'This is currently your default address for service one.',
'letter_contact_id',
False
),
(
'main.service_edit_letter_contact',
get_non_default_letter_contact_block,
'app.service_api_client.get_letter_contact',
create_letter_contact_block(is_default=False),
'THIS TEXT WONT BE TESTED',
'letter_contact_id',
True
),
(
'main.service_edit_sms_sender',
get_default_sms_sender,
'app.service_api_client.get_sms_sender',
create_sms_sender(is_default=True),
'This is the default text message sender.',
'sms_sender_id',
False
),
(
'main.service_edit_sms_sender',
get_non_default_sms_sender,
'app.service_api_client.get_sms_sender',
create_sms_sender(is_default=False),
'This is the default text message sender.',
'sms_sender_id',
True
)
])
def test_default_box_shows_on_non_default_sender_details_while_editing(
fixture,
fake_uuid,
mocker,
sender_page,
endpoint_to_mock,
sender_details,
client_request,
default_message,
checkbox_present,
@@ -2705,7 +2743,8 @@ def test_default_box_shows_on_non_default_sender_details_while_editing(
}
page_arguments[params] = fake_uuid
fixture(mocker)
mocker.patch(endpoint_to_mock, return_value=sender_details)
page = client_request.get(
sender_page,
**page_arguments
@@ -2719,28 +2758,28 @@ def test_default_box_shows_on_non_default_sender_details_while_editing(
)
@pytest.mark.parametrize('fixture, expected_link_text, partial_href', [
@pytest.mark.parametrize('sms_sender, expected_link_text, partial_href', [
(
get_non_default_sms_sender,
create_sms_sender(is_default=False),
'Delete',
partial(url_for, 'main.service_confirm_delete_sms_sender', sms_sender_id=sample_uuid()),
),
(
get_default_sms_sender,
create_sms_sender(is_default=True),
None,
None,
),
])
def test_shows_delete_link_for_sms_sender(
mocker,
fixture,
sms_sender,
expected_link_text,
partial_href,
fake_uuid,
client_request,
):
fixture(mocker)
mocker.patch('app.service_api_client.get_sms_sender', return_value=sms_sender)
page = client_request.get(
'main.service_edit_sms_sender',
@@ -2785,20 +2824,20 @@ def test_confirm_delete_sms_sender(
assert page.select_one('.banner-dangerous form')['method'] == 'post'
@pytest.mark.parametrize('fixture, expected_link_text', [
(get_inbound_number_sms_sender, None),
(get_default_sms_sender, None),
(get_non_default_sms_sender, 'Delete'),
@pytest.mark.parametrize('sms_sender, expected_link_text', [
(create_sms_sender(is_default=False, inbound_number_id='1234'), None),
(create_sms_sender(is_default=True), None),
(create_sms_sender(is_default=False), 'Delete'),
])
def test_inbound_sms_sender_is_not_deleteable(
client_request,
service_one,
fake_uuid,
fixture,
sms_sender,
expected_link_text,
mocker
):
fixture(mocker)
mocker.patch('app.service_api_client.get_sms_sender', return_value=sms_sender)
page = client_request.get(
'.service_edit_sms_sender',
@@ -2837,19 +2876,19 @@ def test_delete_sms_sender(
mock_delete.assert_called_once_with(service_id=SERVICE_ONE_ID, sms_sender_id=fake_uuid)
@pytest.mark.parametrize('fixture, hide_textbox', [
(get_inbound_number_sms_sender, True),
(get_default_sms_sender, False),
@pytest.mark.parametrize('sms_sender, hide_textbox', [
(create_sms_sender(is_default=False, inbound_number_id='1234'), True),
(create_sms_sender(is_default=True), False),
])
def test_inbound_sms_sender_is_not_editable(
client_request,
service_one,
fake_uuid,
fixture,
sms_sender,
hide_textbox,
mocker
):
fixture(mocker)
mocker.patch('app.service_api_client.get_sms_sender', return_value=sms_sender)
page = client_request.get(
'.service_edit_sms_sender',

View File

@@ -28,14 +28,12 @@ from tests.conftest import (
ElementNotFound,
create_active_caseworking_user,
create_active_user_view_permissions,
create_letter_contact_block,
mock_get_service_email_template,
mock_get_service_letter_template,
mock_get_service_template,
no_letter_contact_blocks,
normalize_spaces,
)
from tests.conftest import service_one as create_sample_service
from tests.conftest import single_letter_contact_block
def test_should_show_empty_page_when_no_templates(
@@ -715,11 +713,11 @@ def test_should_show_sms_template_with_downgraded_unicode_characters(
assert rendered_msg in page.text
@pytest.mark.parametrize('mock_contact_block, expected_partial_url', (
(no_letter_contact_blocks, partial(
@pytest.mark.parametrize('contact_block_data, expected_partial_url', (
([], partial(
url_for, 'main.service_add_letter_contact', from_template=sample_uuid(),
)),
(single_letter_contact_block, partial(
([create_letter_contact_block()], partial(
url_for, 'main.set_template_sender', template_id=sample_uuid(),
)),
))
@@ -730,11 +728,11 @@ def test_should_let_letter_contact_block_be_changed_for_the_template(
client_request,
service_one,
fake_uuid,
mock_contact_block,
contact_block_data,
expected_partial_url
):
mocker.patch('app.main.views.templates.get_page_count_for_letter', return_value=1)
mock_contact_block(mocker)
mocker.patch('app.service_api_client.get_letter_contacts', return_value=contact_block_data)
page = client_request.get(
'main.view_template',
@@ -1427,9 +1425,10 @@ def test_should_403_when_edit_template_with_process_type_of_priority_for_non_pla
mock_get_service_template,
mock_update_service_template,
fake_uuid,
service_one,
):
service = create_sample_service(active_user_with_permissions)
client.login(active_user_with_permissions, mocker, service)
service_one['users'] = [active_user_with_permissions]
client.login(active_user_with_permissions, mocker, service_one)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[active_user_with_permissions])
template_id = fake_uuid
data = {
@@ -1437,12 +1436,12 @@ def test_should_403_when_edit_template_with_process_type_of_priority_for_non_pla
'name': "new name",
'template_content': "template <em>content</em> with & entity",
'template_type': 'sms',
'service': service['id'],
'service': service_one['id'],
'process_type': 'priority'
}
response = client.post(url_for(
'.edit_service_template',
service_id=service['id'],
service_id=service_one['id'],
template_id=template_id), data=data)
assert response.status_code == 403
mock_update_service_template.called == 0
@@ -1455,9 +1454,10 @@ def test_should_403_when_create_template_with_process_type_of_priority_for_non_p
mock_get_service_template,
mock_update_service_template,
fake_uuid,
service_one,
):
service = create_sample_service(active_user_with_permissions)
client.login(active_user_with_permissions, mocker, service)
service_one['users'] = [active_user_with_permissions]
client.login(active_user_with_permissions, mocker, service_one)
mocker.patch('app.user_api_client.get_users_for_service', return_value=[active_user_with_permissions])
template_id = fake_uuid
data = {
@@ -1465,12 +1465,12 @@ def test_should_403_when_create_template_with_process_type_of_priority_for_non_p
'name': "new name",
'template_content': "template <em>content</em> with & entity",
'template_type': 'sms',
'service': service['id'],
'service': service_one['id'],
'process_type': 'priority'
}
response = client.post(url_for(
'.add_service_template',
service_id=service['id'],
service_id=service_one['id'],
template_type='sms'), data=data)
assert response.status_code == 403
mock_update_service_template.called == 0
@@ -2186,19 +2186,19 @@ def test_set_template_sender(
)
@pytest.mark.parametrize('fixture', [
no_letter_contact_blocks,
single_letter_contact_block,
@pytest.mark.parametrize('contact_block_data', [
[], # no letter contact blocks
[create_letter_contact_block()],
])
def test_add_sender_link_only_appears_on_services_with_no_senders(
client_request,
fake_uuid,
mocker,
fixture,
contact_block_data,
mock_get_service_letter_template,
no_letter_contact_blocks
):
fixture(mocker)
mocker.patch('app.service_api_client.get_letter_contacts', return_value=contact_block_data)
page = client_request.get(
'main.set_template_sender',
service_id=SERVICE_ONE_ID,

View File

@@ -251,21 +251,6 @@ def get_default_letter_contact_block(mocker):
return mocker.patch('app.service_api_client.get_letter_contact', side_effect=_get)
@pytest.fixture(scope='function')
def get_non_default_letter_contact_block(mocker):
def _get(service_id, letter_contact_id):
return {
'id': '1234',
'service_id': service_id,
'contact_block': '1 Example Street',
'is_default': False,
'created_at': datetime.utcnow(),
'updated_at': None
}
return mocker.patch('app.service_api_client.get_letter_contact', side_effect=_get)
@pytest.fixture(scope='function')
def mock_add_letter_contact(mocker):
def _add_letter_contact(service_id, contact_block, is_default=False):
@@ -441,22 +426,6 @@ def get_non_default_sms_sender(mocker):
return mocker.patch('app.service_api_client.get_sms_sender', side_effect=_get)
@pytest.fixture(scope='function')
def get_inbound_number_sms_sender(mocker):
def _get(service_id, sms_sender_id):
return {
'id': '1234',
'service_id': service_id,
'sms_sender': 'GOVUK',
'is_default': False,
'created_at': datetime.utcnow(),
'inbound_number_id': '1234',
'updated_at': None
}
return mocker.patch('app.service_api_client.get_sms_sender', side_effect=_get)
@pytest.fixture(scope='function')
def mock_add_sms_sender(mocker):
def _add_sms_sender(service_id, sms_sender, is_default=False, inbound_number_id=None):
@@ -3585,22 +3554,22 @@ def create_api_user_active(with_unique_id=False):
def create_active_user_empty_permissions(with_unique_id=False):
user_data = {'id': str(uuid4()) if with_unique_id else sample_uuid(),
'name': 'Test User With Empty Permissions',
'password': 'somepassword',
'password_changed_at': str(datetime.utcnow()),
'email_address': 'test@user.gov.uk',
'mobile_number': '07700 900763',
'state': 'active',
'failed_login_count': 0,
'permissions': {},
'platform_admin': False,
'auth_type': 'sms_auth',
'organisations': [],
'services': [SERVICE_ONE_ID],
'current_session_id': None,
}
return user_data
return {
'id': str(uuid4()) if with_unique_id else sample_uuid(),
'name': 'Test User With Empty Permissions',
'password': 'somepassword',
'password_changed_at': str(datetime.utcnow()),
'email_address': 'test@user.gov.uk',
'mobile_number': '07700 900763',
'state': 'active',
'failed_login_count': 0,
'permissions': {},
'platform_admin': False,
'auth_type': 'sms_auth',
'organisations': [],
'services': [SERVICE_ONE_ID],
'current_session_id': None,
}
def create_active_user_with_permissions(with_unique_id=False):
@@ -3764,3 +3733,143 @@ def create_platform_admin_user(with_unique_id=False):
'current_session_id': None,
'logged_in_at': None,
}
def create_reply_to_email_address(
id_='1234',
service_id='abcd',
email_address='test@example.com',
is_default=True,
created_at=None,
updated_at=None
):
return {
'id': id_,
'service_id': service_id,
'email_address': email_address,
'is_default': is_default,
'created_at': created_at,
'updated_at': updated_at
}
def create_multiple_email_reply_to_addresses(service_id='abcd'):
return [
{
'id': '1234',
'service_id': service_id,
'email_address': 'test@example.com',
'is_default': True,
'created_at': datetime.utcnow(),
'updated_at': None
}, {
'id': '5678',
'service_id': service_id,
'email_address': 'test2@example.com',
'is_default': False,
'created_at': datetime.utcnow(),
'updated_at': None
}, {
'id': '9457',
'service_id': service_id,
'email_address': 'test3@example.com',
'is_default': False,
'created_at': datetime.utcnow(),
'updated_at': None
}
]
def create_sms_sender(
id_='1234',
service_id='abcd',
sms_sender='GOVUK',
is_default=True,
created_at=None,
inbound_number_id=None,
updated_at=None
):
return {
'id': id_,
'service_id': service_id,
'sms_sender': sms_sender,
'is_default': is_default,
'created_at': created_at,
'inbound_number_id': inbound_number_id,
'updated_at': updated_at
}
def create_multiple_sms_senders(service_id='abcd'):
return [
{
'id': '1234',
'service_id': service_id,
'sms_sender': 'Example',
'is_default': True,
'created_at': datetime.utcnow(),
'inbound_number_id': '1234',
'updated_at': None
}, {
'id': '5678',
'service_id': service_id,
'sms_sender': 'Example 2',
'is_default': False,
'created_at': datetime.utcnow(),
'inbound_number_id': None,
'updated_at': None
}, {
'id': '9457',
'service_id': service_id,
'sms_sender': 'Example 3',
'is_default': False,
'created_at': datetime.utcnow(),
'inbound_number_id': None,
'updated_at': None
}
]
def create_letter_contact_block(
id_='1234',
service_id='abcd',
contact_block='1 Example Street',
is_default=True,
created_at=None,
updated_at=None,
):
return {
'id': id_,
'service_id': service_id,
'contact_block': contact_block,
'is_default': is_default,
'created_at': created_at,
'updated_at': updated_at
}
def create_multiple_letter_contact_blocks(service_id='abcd'):
return [
{
'id': '1234',
'service_id': service_id,
'contact_block': '1 Example Street',
'is_default': True,
'created_at': datetime.utcnow(),
'updated_at': None
}, {
'id': '5678',
'service_id': service_id,
'contact_block': '2 Example Street',
'is_default': False,
'created_at': datetime.utcnow(),
'updated_at': None
}, {
'id': '9457',
'service_id': service_id,
'contact_block': '3 Example Street',
'is_default': False,
'created_at': datetime.utcnow(),
'updated_at': None
}
]