2016-04-06 11:01:22 +01:00
|
|
|
|
import pytest
|
2015-12-01 15:51:09 +00:00
|
|
|
|
from app.main.forms import RegisterUserForm
|
2016-04-07 16:02:06 +01:00
|
|
|
|
from app.main.validators import ValidEmailDomainRegex, NoCommasInPlaceHolders
|
2016-04-06 11:01:22 +01:00
|
|
|
|
from wtforms import ValidationError
|
|
|
|
|
|
from unittest.mock import Mock
|
2015-12-01 15:51:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-01-27 16:30:33 +00:00
|
|
|
|
def test_should_raise_validation_error_for_password(app_, mock_get_user_by_email):
|
2016-01-28 16:36:36 +00:00
|
|
|
|
form = RegisterUserForm()
|
2015-12-01 15:51:09 +00:00
|
|
|
|
form.name.data = 'test'
|
|
|
|
|
|
form.email_address.data = 'teset@example.gov.uk'
|
2016-03-18 12:05:50 +00:00
|
|
|
|
form.mobile_number.data = '441231231231'
|
2015-12-01 15:51:09 +00:00
|
|
|
|
form.password.data = 'password1234'
|
|
|
|
|
|
|
2016-01-05 12:41:20 +00:00
|
|
|
|
form.validate()
|
|
|
|
|
|
assert 'That password is blacklisted, too common' in form.errors['password']
|
2016-03-18 12:05:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_valid_email_not_in_valid_domains(app_):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
|
|
|
|
|
|
assert not form.validate()
|
|
|
|
|
|
assert "Enter a central government email address" in form.errors['email_address'][0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_valid_email_in_valid_domains(app_):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
form = RegisterUserForm(
|
|
|
|
|
|
name="test",
|
|
|
|
|
|
email_address="test@my.gov.uk",
|
|
|
|
|
|
mobile_number='4407888999111',
|
|
|
|
|
|
password='1234567890')
|
|
|
|
|
|
form.validate()
|
|
|
|
|
|
assert form.errors == {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_invalid_email_address_error_message(app_):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
form = RegisterUserForm(
|
|
|
|
|
|
name="test",
|
|
|
|
|
|
email_address="test.com",
|
|
|
|
|
|
mobile_number='4407888999111',
|
|
|
|
|
|
password='1234567890')
|
|
|
|
|
|
assert not form.validate()
|
|
|
|
|
|
|
|
|
|
|
|
form = RegisterUserForm(
|
|
|
|
|
|
name="test",
|
|
|
|
|
|
email_address="test.com",
|
|
|
|
|
|
mobile_number='4407888999111',
|
|
|
|
|
|
password='1234567890')
|
|
|
|
|
|
assert not form.validate()
|
2016-04-06 11:01:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _gen_mock_field(x):
|
|
|
|
|
|
return Mock(data=x)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("email", [
|
|
|
|
|
|
'test@gov.uk',
|
2016-04-06 16:45:35 +01:00
|
|
|
|
'test@GOV.UK',
|
|
|
|
|
|
'test@gov.uK',
|
2016-04-06 11:01:22 +01:00
|
|
|
|
'test@test.test.gov.uk',
|
|
|
|
|
|
'test@test.gov.uk',
|
|
|
|
|
|
'test@mod.uk',
|
|
|
|
|
|
'test@ddc-mod.org',
|
|
|
|
|
|
'test@test.ddc-mod.org',
|
|
|
|
|
|
'test@gov.scot',
|
|
|
|
|
|
'test@test.gov.scot',
|
|
|
|
|
|
'test@parliament.uk',
|
|
|
|
|
|
'test@gov.parliament.uk',
|
|
|
|
|
|
'test@nhs.uk',
|
|
|
|
|
|
'test@gov.nhs.uk',
|
|
|
|
|
|
'test@nhs.net',
|
|
|
|
|
|
'test@gov.nhs.net',
|
|
|
|
|
|
'test@police.uk',
|
2016-04-06 16:45:35 +01:00
|
|
|
|
'test@gov.police.uk',
|
|
|
|
|
|
'test@GOV.PoliCe.uk',
|
2016-04-06 11:01:22 +01:00
|
|
|
|
])
|
|
|
|
|
|
def test_valid_list_of_white_list_email_domains(app_, email):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
email_domain_validators = ValidEmailDomainRegex()
|
|
|
|
|
|
email_domain_validators(None, _gen_mock_field(email))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("email", [
|
|
|
|
|
|
'test@ukgov.uk',
|
|
|
|
|
|
'test@gov.uk.uk',
|
|
|
|
|
|
'test@gov.test.uk',
|
|
|
|
|
|
'test@ukmod.uk',
|
|
|
|
|
|
'test@mod.uk.uk',
|
|
|
|
|
|
'test@mod.test.uk',
|
|
|
|
|
|
'test@ukddc-mod.org',
|
|
|
|
|
|
'test@ddc-mod.org.uk',
|
|
|
|
|
|
'test@ddc-mod.uk.org',
|
|
|
|
|
|
'test@ukgov.scot',
|
|
|
|
|
|
'test@gov.scot.uk',
|
|
|
|
|
|
'test@gov.test.scot',
|
|
|
|
|
|
'test@ukparliament.uk',
|
|
|
|
|
|
'test@parliament.uk.uk',
|
|
|
|
|
|
'test@parliament.test.uk',
|
|
|
|
|
|
'test@uknhs.uk',
|
|
|
|
|
|
'test@nhs.uk.uk',
|
|
|
|
|
|
'test@uknhs.net',
|
|
|
|
|
|
'test@nhs.net.uk',
|
|
|
|
|
|
'test@nhs.test.net',
|
|
|
|
|
|
'test@ukpolice.uk',
|
|
|
|
|
|
'test@police.uk.uk',
|
|
|
|
|
|
'test@police.test.uk'
|
|
|
|
|
|
])
|
|
|
|
|
|
def test_invalid_list_of_white_list_email_domains(app_, email):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
email_domain_validators = ValidEmailDomainRegex()
|
|
|
|
|
|
with pytest.raises(ValidationError):
|
|
|
|
|
|
email_domain_validators(None, _gen_mock_field(email))
|
2016-04-07 16:02:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_for_commas_in_placeholders(app_):
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with pytest.raises(ValidationError) as error:
|
|
|
|
|
|
NoCommasInPlaceHolders()(None, _gen_mock_field('Hello ((name,date))'))
|
|
|
|
|
|
assert str(error.value) == 'You can’t have commas in your fields'
|
|
|
|
|
|
NoCommasInPlaceHolders()(None, _gen_mock_field('Hello ((name))'))
|