diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 272a171a0..7a57ce8da 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -521,6 +521,14 @@ def service_edit_email_reply_to(service_id, reply_to_email_id): form.email_address.data = reply_to_email_address['email_address'] form.is_default.data = reply_to_email_address['is_default'] if form.validate_on_submit(): + if form.email_address.data == reply_to_email_address["email_address"]: + service_api_client.update_reply_to_email_address( + current_service.id, + reply_to_email_id=reply_to_email_id, + email_address=form.email_address.data, + is_default=True if reply_to_email_address['is_default'] else form.is_default.data + ) + return redirect(url_for('.service_email_reply_to', service_id=service_id)) try: notification_id = service_api_client.verify_reply_to_email_address( service_id, form.email_address.data diff --git a/app/templates/views/service-settings/email-reply-to/_verify-updates.html b/app/templates/views/service-settings/email-reply-to/_verify-updates.html index caee9116e..253f41dd0 100644 --- a/app/templates/views/service-settings/email-reply-to/_verify-updates.html +++ b/app/templates/views/service-settings/email-reply-to/_verify-updates.html @@ -40,7 +40,7 @@
Do not use your own email address for replies.
- {% if replace %} + {% if replace and replace != "False" %} {% set form_url = url_for('.service_edit_email_reply_to', service_id=service_id, reply_to_email_id=replace) %} {% else %} {% set form_url = url_for('.service_add_email_reply_to', service_id=service_id) %} diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 0bb1af038..6784b3fbf 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -2226,7 +2226,7 @@ def test_default_box_doesnt_show_on_first_sender( (get_non_default_reply_to_email_address, {}, False), (get_non_default_reply_to_email_address, {"is_default": "y"}, True) ]) -def test_edit_reply_to_email_address( +def test_edit_reply_to_email_address_sends_verification_notification_if_address_is_changed( fixture, data, api_default_args, @@ -2248,6 +2248,40 @@ def test_edit_reply_to_email_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) +]) +def test_edit_reply_to_email_address_goes_straight_to_update_if_address_not_changed( + fixture, + data, + api_default_args, + mocker, + fake_uuid, + client_request, + mock_update_reply_to_email_address +): + fixture(mocker) + mock_verify = mocker.patch('app.service_api_client.verify_reply_to_email_address') + data['email_address'] = "test@example.com" + client_request.post( + 'main.service_edit_email_reply_to', + service_id=SERVICE_ONE_ID, + reply_to_email_id=fake_uuid, + _data=data + ) + + mock_update_reply_to_email_address.assert_called_once_with( + SERVICE_ONE_ID, + reply_to_email_id=fake_uuid, + email_address="test@example.com", + is_default=api_default_args + ) + mock_verify.assert_not_called() + + @pytest.mark.parametrize('fixture, expected_link_text, partial_href', [ ( get_non_default_reply_to_email_address,