Merge pull request #3974 from alphagov/deleted-template

dont let people get into one-off flow for deleted templates
This commit is contained in:
Leo Hemsted
2021-07-22 13:14:08 +01:00
committed by GitHub
4 changed files with 31 additions and 5 deletions

View File

@@ -874,7 +874,7 @@ def get_send_test_page_title(template_type, entering_recipient, name=None):
def get_back_link(service_id, template, step_index, placeholders=None):
if step_index == 0:
if should_skip_template_page(template.template_type):
if should_skip_template_page(template._template):
return url_for(
'.choose_template',
service_id=service_id,

View File

@@ -58,8 +58,7 @@ def view_template(service_id, template_id):
template_folder = current_service.get_template_folder(template['folder'])
user_has_template_permission = current_user.has_template_folder_permission(template_folder)
if should_skip_template_page(template['template_type']):
if should_skip_template_page(template):
return redirect(url_for(
'.set_sender', service_id=service_id, template_id=template_id
))

View File

@@ -77,11 +77,12 @@ def unicode_truncate(s, length):
return encoded.decode('utf-8', 'ignore')
def should_skip_template_page(template_type):
def should_skip_template_page(db_template):
return (
current_user.has_permissions('send_messages')
and not current_user.has_permissions('manage_templates', 'manage_api_keys')
and template_type != 'letter'
and db_template['template_type'] != 'letter'
and not db_template['archived']
)

View File

@@ -587,6 +587,32 @@ def test_caseworker_redirected_to_set_sender_for_one_off(
)
@freeze_time('2020-01-01 15:00')
def test_caseworker_sees_template_page_if_template_is_deleted(
client_request,
mock_get_deleted_template,
fake_uuid,
mocker,
active_caseworking_user,
):
mocker.patch('app.user_api_client.get_user', return_value=active_caseworking_user)
template_id = fake_uuid
page = client_request.get(
'.view_template',
service_id=SERVICE_ONE_ID,
template_id=template_id,
_test_page_title=False,
)
content = str(page)
assert url_for("main.send_one_off", service_id=SERVICE_ONE_ID, template_id=fake_uuid) not in content
assert page.select('p.hint')[0].text.strip() == 'This template was deleted today at 3:00pm.'
mock_get_deleted_template.assert_called_with(SERVICE_ONE_ID, template_id, None)
def test_user_with_only_send_and_view_redirected_to_set_sender_for_one_off(
client_request,
mock_get_service_templates,