Update forgotten password to allow non-gov with test

This commit is contained in:
Imdad Ahad
2016-10-26 14:01:01 +01:00
parent 78aeb8934b
commit 1fb0e22570
2 changed files with 23 additions and 13 deletions

View File

@@ -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='Cant 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='Cant 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):

View File

@@ -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(