diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 572c430c7..10fb6412a 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -296,6 +296,14 @@ def service_switch_email_auth(service_id): return redirect(url_for('.service_settings', service_id=service_id)) +@main.route("/services//service-settings/can-send-precompiled-letter") +@login_required +@user_has_permissions(admin_override=True) +def service_switch_can_send_precompiled_letter(service_id): + switch_service_permissions(service_id, 'precompiled_letter') + return redirect(url_for('.service_settings', service_id=service_id)) + + @main.route("/services//service-settings/archive", methods=['GET', 'POST']) @login_required @user_has_permissions('manage_settings', admin_override=True) diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index b39a7d850..bce3f0ad6 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -323,6 +323,13 @@ {% endif %} {% endif %} + {% if 'letter' in current_service.permissions %} +
  • + + {{ 'Stop sending precompiled letters' if 'precompiled_letter' in current_service.permissions else 'Allow to send precompiled letters' }} + +
  • + {% endif %}
  • {{ 'Stop editing user auth' if 'email_auth' in current_service.permissions else 'Allow editing user auth' }} diff --git a/tests/app/main/views/service_settings/test_service_setting_permissions.py b/tests/app/main/views/service_settings/test_service_setting_permissions.py index 57a6cdcf1..fdcfa55e9 100644 --- a/tests/app/main/views/service_settings/test_service_setting_permissions.py +++ b/tests/app/main/views/service_settings/test_service_setting_permissions.py @@ -35,6 +35,11 @@ def get_service_settings_page( ({'permissions': ['sms']}, '.service_switch_can_send_sms', {}, 'Stop sending sms'), ({'permissions': []}, '.service_switch_can_send_sms', {}, 'Allow to send sms'), + ({'permissions': ['letter', 'precompiled_letter']}, + '.service_switch_can_send_precompiled_letter', {}, 'Stop sending precompiled letters'), + ({'permissions': ['letter']}, + '.service_switch_can_send_precompiled_letter', {}, 'Allow to send precompiled letters'), + ({'permissions': ['sms']}, '.service_set_inbound_number', {'set_inbound_sms': True}, 'Allow inbound sms'), ({'active': True}, '.archive_service', {}, 'Archive service'), @@ -48,32 +53,23 @@ def test_service_setting_toggles_show(get_service_settings_page, service_one, se assert page.find('a', {'class': 'button', 'href': button_url}).text.strip() == text -@pytest.mark.parametrize('permissions', [ - ['inbound_sms'], [] +@pytest.mark.parametrize('permissions,permissions_text', [ + ('inbound_sms', 'inbound sms'), # no sms parent permission + ('precompiled_letter', 'precompiled letters'), # no letter parent permission + # also test no permissions set + ('', 'inbound sms'), + ('', 'precompiled letters') ]) -def test_service_settings_doesnt_show_inbound_options_if_sms_disabled( +def test_service_settings_doesnt_show_option_if_parent_permission_disabled( get_service_settings_page, service_one, - permissions + permissions, + permissions_text ): - service_one['permissions'] = permissions + service_one['permissions'] = [permissions] page = get_service_settings_page() toggles = page.find_all('a', {'class': 'button'}) - assert not any(button for button in toggles if 'inbound sms' in button.text) - - -@pytest.mark.parametrize('permissions', [ - ['letters_as_pdf'], [] -]) -def test_service_settings_doesnt_show_letters_as_pdf_options_if_letters_disabled( - get_service_settings_page, - service_one, - permissions -): - service_one['permissions'] = permissions - page = get_service_settings_page() - toggles = page.find_all('a', {'class': 'button'}) - assert not any(button for button in toggles if 'letters as PDF' in button.text) + assert not any(button for button in toggles if permissions_text in button.text) @pytest.mark.parametrize('service_fields, hidden_button_text', [