diff --git a/app/templates/views/user-profile/change.html b/app/templates/views/user-profile/change.html
index c7ffa8b51..fc8858572 100644
--- a/app/templates/views/user-profile/change.html
+++ b/app/templates/views/user-profile/change.html
@@ -20,7 +20,7 @@
{% call form_wrapper() %}
{{ form_field(error_message_with_html=True) }}
- {% if current_user.auth_type == 'email_auth' %}
+ {% if current_user.auth_type == 'email_auth' and (current_user.mobile_number and thing == "mobile number") %}
{{ page_footer(
'Save',
delete_link=url_for(
diff --git a/tests/app/main/views/test_user_profile.py b/tests/app/main/views/test_user_profile.py
index d3688143a..c01af3027 100644
--- a/tests/app/main/views/test_user_profile.py
+++ b/tests/app/main/views/test_user_profile.py
@@ -12,6 +12,8 @@ from app.models.webauthn_credential import (
)
from tests.conftest import (
create_api_user_active,
+ create_user,
+ fake_uuid,
normalize_spaces,
url_for_endpoint_with_token,
)
@@ -91,6 +93,8 @@ def test_should_show_email_page(
'main.user_profile_email'
)
assert page.select_one('h1').text.strip() == 'Change your email address'
+ # template is shared with "Change your mobile number" but we don't want to show Delete mobile number link
+ assert 'Delete your number' not in page.text
def test_should_redirect_after_email_change(
@@ -197,6 +201,22 @@ def test_change_your_mobile_number_page_shows_delete_link_if_user_on_email_auth(
assert 'Delete your number' in page.text
+def test_change_your_mobile_number_page_doesnt_show_delete_link_if_user_has_no_mobile_number(
+ client_request,
+ api_user_active_email_auth,
+ mocker
+):
+ user = create_user(
+ id=fake_uuid,
+ auth_type='email_auth',
+ mobile_number=None
+ )
+ mocker.patch('app.user_api_client.get_user', return_value=user)
+ page = client_request.get(('main.user_profile_mobile_number'))
+ assert 'Change your mobile number' in page.text
+ assert 'Delete your number' not in page.text
+
+
def test_confirm_delete_mobile_number(
client_request,
api_user_active_email_auth,