From 1fb0e225705e2622c02b2491471f5848917607fe Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 26 Oct 2016 14:01:01 +0100 Subject: [PATCH] Update forgotten password to allow non-gov with test --- app/main/forms.py | 21 ++++++++++---------- tests/app/main/views/test_forgot_password.py | 15 +++++++++++--- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index 8122236f2..76eab0310 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -48,12 +48,16 @@ def get_next_hours_from(now, hours=23): ] -def email_address(label='Email address'): - return EmailField(label, validators=[ +def email_address(label='Email address', gov_user=True): + validators = [ Length(min=5, max=255), DataRequired(message='Can’t be empty'), - Email(message='Enter a valid email address'), - ValidEmailDomainRegex()]) + Email(message='Enter a valid email address') + ] + + if gov_user: + validators.append(ValidEmailDomainRegex()) + return EmailField(label, validators) class UKMobileNumber(TelField): @@ -126,11 +130,7 @@ class PermissionsForm(Form): class InviteUserForm(PermissionsForm): - email_address = EmailField('Email address', validators=[ - Length(min=5, max=255), - DataRequired(message='Can’t be empty'), - Email(message='Enter a valid email address') - ]) + email_address = email_address(gov_user=False) def __init__(self, invalid_email_address, *args, **kwargs): super(InviteUserForm, self).__init__(*args, **kwargs) @@ -246,7 +246,8 @@ class EmailTemplateForm(SMSTemplateForm): class ForgotPasswordForm(Form): - email_address = email_address() + # email_address = email_address() + email_address = email_address(gov_user=False) class NewPasswordForm(Form): diff --git a/tests/app/main/views/test_forgot_password.py b/tests/app/main/views/test_forgot_password.py index c10a1e711..bc63777b0 100644 --- a/tests/app/main/views/test_forgot_password.py +++ b/tests/app/main/views/test_forgot_password.py @@ -1,5 +1,8 @@ +import pytest + from flask import url_for, Response from notifications_python_client.errors import HTTPError +from tests.conftest import api_user_active as create_active_user import app @@ -12,19 +15,25 @@ def test_should_render_forgot_password(app_): in response.get_data(as_text=True) +@pytest.mark.parametrize('email_address', [ + 'test@user.gov.uk', + 'someuser@notonwhitelist.com' +]) def test_should_redirect_to_password_reset_sent_for_valid_email( app_, - api_user_active, + fake_uuid, + email_address, mocker): with app_.test_request_context(): + sample_user = create_active_user(fake_uuid, email_address=email_address) mocker.patch('app.user_api_client.send_reset_password_url', return_value=None) response = app_.test_client().post( url_for('.forgot_password'), - data={'email_address': api_user_active.email_address}) + data={'email_address': sample_user.email_address}) assert response.status_code == 200 assert 'Click the link in the email to reset your password.' \ in response.get_data(as_text=True) - app.user_api_client.send_reset_password_url.assert_called_once_with(api_user_active.email_address) + app.user_api_client.send_reset_password_url.assert_called_once_with(sample_user.email_address) def test_should_redirect_to_password_reset_sent_for_missing_email(