mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-07 11:28:25 -04:00
Group form tests in a directory
This makes it clearer we have tests for the code in forms.py, which I missed initially. In future we could also split up forms.py in a similar way, as it's currently _very long_. As part of grouping tests for code in forms.py, I've extracted some from test_validators.py, so that what remains is focussed on testing the code in validators.py.
This commit is contained in:
61
tests/app/main/forms/test_register_user_form.py
Normal file
61
tests/app/main/forms/test_register_user_form.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from app.main.forms import RegisterUserForm
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('password', [
|
||||||
|
'govuknotify', '11111111', 'kittykat', 'blackbox'
|
||||||
|
])
|
||||||
|
def test_should_raise_validation_error_for_password(
|
||||||
|
client_request,
|
||||||
|
mock_get_user_by_email,
|
||||||
|
password,
|
||||||
|
):
|
||||||
|
form = RegisterUserForm()
|
||||||
|
form.name.data = 'test'
|
||||||
|
form.email_address.data = 'teset@example.gov.uk'
|
||||||
|
form.mobile_number.data = '441231231231'
|
||||||
|
form.password.data = password
|
||||||
|
|
||||||
|
form.validate()
|
||||||
|
assert 'Choose a password that’s harder to guess' in form.errors['password']
|
||||||
|
|
||||||
|
|
||||||
|
def test_valid_email_not_in_valid_domains(
|
||||||
|
client_request,
|
||||||
|
mock_get_organisations,
|
||||||
|
):
|
||||||
|
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
|
||||||
|
assert not form.validate()
|
||||||
|
assert "Enter a public sector email address" in form.errors['email_address'][0]
|
||||||
|
|
||||||
|
|
||||||
|
def test_valid_email_in_valid_domains(
|
||||||
|
client_request,
|
||||||
|
):
|
||||||
|
form = RegisterUserForm(
|
||||||
|
name="test",
|
||||||
|
email_address="test@my.gov.uk",
|
||||||
|
mobile_number='4407888999111',
|
||||||
|
password='an uncommon password')
|
||||||
|
form.validate()
|
||||||
|
assert form.errors == {}
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_email_address_error_message(
|
||||||
|
client_request,
|
||||||
|
mock_get_organisations,
|
||||||
|
):
|
||||||
|
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()
|
||||||
37
tests/app/main/forms/test_service_sms_senders_form.py
Normal file
37
tests/app/main/forms/test_service_sms_senders_form.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from app.main.forms import ServiceSmsSenderForm
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"sms_sender,error_expected,error_message",
|
||||||
|
[
|
||||||
|
('', True, 'Cannot be empty'),
|
||||||
|
('22', True, 'Enter 3 characters or more'),
|
||||||
|
('333', False, None),
|
||||||
|
('elevenchars', False, None), # 11 chars
|
||||||
|
('twelvecharas', True, 'Enter 11 characters or fewer'), # 12 chars
|
||||||
|
('###', True, 'Use letters and numbers only'),
|
||||||
|
('00111222333', True, 'Cannot start with 00'),
|
||||||
|
('UK_GOV', False, None), # Underscores are allowed
|
||||||
|
('UK.GOV', False, None), # Full stops are allowed
|
||||||
|
("'UC'", False, None), # Straight single quotes are allowed
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_sms_sender_form_validation(
|
||||||
|
client_request,
|
||||||
|
mock_get_user_by_email,
|
||||||
|
sms_sender,
|
||||||
|
error_expected,
|
||||||
|
error_message
|
||||||
|
):
|
||||||
|
form = ServiceSmsSenderForm()
|
||||||
|
form.sms_sender.data = sms_sender
|
||||||
|
|
||||||
|
form.validate()
|
||||||
|
|
||||||
|
if error_expected:
|
||||||
|
assert form.errors
|
||||||
|
assert error_message == form.errors['sms_sender'][0]
|
||||||
|
else:
|
||||||
|
assert not form.errors
|
||||||
@@ -3,7 +3,6 @@ from unittest.mock import Mock
|
|||||||
import pytest
|
import pytest
|
||||||
from wtforms import ValidationError
|
from wtforms import ValidationError
|
||||||
|
|
||||||
from app.main.forms import RegisterUserForm, ServiceSmsSenderForm
|
|
||||||
from app.main.validators import (
|
from app.main.validators import (
|
||||||
MustContainAlphanumericCharacters,
|
MustContainAlphanumericCharacters,
|
||||||
NoCommasInPlaceHolders,
|
NoCommasInPlaceHolders,
|
||||||
@@ -12,64 +11,6 @@ from app.main.validators import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('password', [
|
|
||||||
'govuknotify', '11111111', 'kittykat', 'blackbox'
|
|
||||||
])
|
|
||||||
def test_should_raise_validation_error_for_password(
|
|
||||||
client_request,
|
|
||||||
mock_get_user_by_email,
|
|
||||||
password,
|
|
||||||
):
|
|
||||||
form = RegisterUserForm()
|
|
||||||
form.name.data = 'test'
|
|
||||||
form.email_address.data = 'teset@example.gov.uk'
|
|
||||||
form.mobile_number.data = '441231231231'
|
|
||||||
form.password.data = password
|
|
||||||
|
|
||||||
form.validate()
|
|
||||||
assert 'Choose a password that’s harder to guess' in form.errors['password']
|
|
||||||
|
|
||||||
|
|
||||||
def test_valid_email_not_in_valid_domains(
|
|
||||||
client_request,
|
|
||||||
mock_get_organisations,
|
|
||||||
):
|
|
||||||
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
|
|
||||||
assert not form.validate()
|
|
||||||
assert "Enter a public sector email address" in form.errors['email_address'][0]
|
|
||||||
|
|
||||||
|
|
||||||
def test_valid_email_in_valid_domains(
|
|
||||||
client_request,
|
|
||||||
):
|
|
||||||
form = RegisterUserForm(
|
|
||||||
name="test",
|
|
||||||
email_address="test@my.gov.uk",
|
|
||||||
mobile_number='4407888999111',
|
|
||||||
password='an uncommon password')
|
|
||||||
form.validate()
|
|
||||||
assert form.errors == {}
|
|
||||||
|
|
||||||
|
|
||||||
def test_invalid_email_address_error_message(
|
|
||||||
client_request,
|
|
||||||
mock_get_organisations,
|
|
||||||
):
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def _gen_mock_field(x):
|
def _gen_mock_field(x):
|
||||||
return Mock(data=x)
|
return Mock(data=x)
|
||||||
|
|
||||||
@@ -185,37 +126,3 @@ def test_if_string_does_not_contain_alphanumeric_characters_raises(string):
|
|||||||
@pytest.mark.parametrize("string", [".A8", "AB.", ".42...."])
|
@pytest.mark.parametrize("string", [".A8", "AB.", ".42...."])
|
||||||
def test_if_string_contains_alphanumeric_characters_does_not_raise(string):
|
def test_if_string_contains_alphanumeric_characters_does_not_raise(string):
|
||||||
MustContainAlphanumericCharacters()(None, _gen_mock_field(string))
|
MustContainAlphanumericCharacters()(None, _gen_mock_field(string))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"sms_sender,error_expected,error_message",
|
|
||||||
[
|
|
||||||
('', True, 'Cannot be empty'),
|
|
||||||
('22', True, 'Enter 3 characters or more'),
|
|
||||||
('333', False, None),
|
|
||||||
('elevenchars', False, None), # 11 chars
|
|
||||||
('twelvecharas', True, 'Enter 11 characters or fewer'), # 12 chars
|
|
||||||
('###', True, 'Use letters and numbers only'),
|
|
||||||
('00111222333', True, 'Cannot start with 00'),
|
|
||||||
('UK_GOV', False, None), # Underscores are allowed
|
|
||||||
('UK.GOV', False, None), # Full stops are allowed
|
|
||||||
("'UC'", False, None), # Straight single quotes are allowed
|
|
||||||
]
|
|
||||||
)
|
|
||||||
def test_sms_sender_form_validation(
|
|
||||||
client_request,
|
|
||||||
mock_get_user_by_email,
|
|
||||||
sms_sender,
|
|
||||||
error_expected,
|
|
||||||
error_message
|
|
||||||
):
|
|
||||||
form = ServiceSmsSenderForm()
|
|
||||||
form.sms_sender.data = sms_sender
|
|
||||||
|
|
||||||
form.validate()
|
|
||||||
|
|
||||||
if error_expected:
|
|
||||||
assert form.errors
|
|
||||||
assert error_message == form.errors['sms_sender'][0]
|
|
||||||
else:
|
|
||||||
assert not form.errors
|
|
||||||
|
|||||||
Reference in New Issue
Block a user