mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 07:46:23 -04:00
Merge pull request #3981 from alphagov/single-quote-sms-sender
Add support for single quote in SMS sender name
This commit is contained in:
@@ -45,7 +45,7 @@ from app.main.validators import (
|
|||||||
CommonlyUsedPassword,
|
CommonlyUsedPassword,
|
||||||
CsvFileValidator,
|
CsvFileValidator,
|
||||||
DoesNotStartWithDoubleZero,
|
DoesNotStartWithDoubleZero,
|
||||||
LettersNumbersFullStopsAndUnderscoresOnly,
|
LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly,
|
||||||
MustContainAlphanumericCharacters,
|
MustContainAlphanumericCharacters,
|
||||||
NoCommasInPlaceHolders,
|
NoCommasInPlaceHolders,
|
||||||
NoEmbeddedImagesInSVG,
|
NoEmbeddedImagesInSVG,
|
||||||
@@ -1734,7 +1734,7 @@ class ServiceSmsSenderForm(StripWhitespaceForm):
|
|||||||
DataRequired(message="Cannot be empty"),
|
DataRequired(message="Cannot be empty"),
|
||||||
Length(max=11, message="Enter 11 characters or fewer"),
|
Length(max=11, message="Enter 11 characters or fewer"),
|
||||||
Length(min=3, message="Enter 3 characters or more"),
|
Length(min=3, message="Enter 3 characters or more"),
|
||||||
LettersNumbersFullStopsAndUnderscoresOnly(),
|
LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly(),
|
||||||
DoesNotStartWithDoubleZero(),
|
DoesNotStartWithDoubleZero(),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -144,9 +144,9 @@ class BroadcastLength:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class LettersNumbersFullStopsAndUnderscoresOnly:
|
class LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly:
|
||||||
|
|
||||||
regex = re.compile(r'^[a-zA-Z0-9\s\._]+$')
|
regex = re.compile(r"^[a-zA-Z0-9\s\._']+$")
|
||||||
|
|
||||||
def __init__(self, message='Use letters and numbers only'):
|
def __init__(self, message='Use letters and numbers only'):
|
||||||
self.message = message
|
self.message = message
|
||||||
|
|||||||
@@ -187,46 +187,35 @@ 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(
|
def test_sms_sender_form_validation(
|
||||||
client,
|
client,
|
||||||
mock_get_user_by_email,
|
mock_get_user_by_email,
|
||||||
|
sms_sender,
|
||||||
|
error_expected,
|
||||||
|
error_message
|
||||||
):
|
):
|
||||||
form = ServiceSmsSenderForm()
|
form = ServiceSmsSenderForm()
|
||||||
|
form.sms_sender.data = sms_sender
|
||||||
|
|
||||||
form.sms_sender.data = 'elevenchars'
|
|
||||||
form.validate()
|
form.validate()
|
||||||
assert not form.errors
|
|
||||||
|
|
||||||
form.sms_sender.data = ''
|
if error_expected:
|
||||||
form.validate()
|
assert form.errors
|
||||||
assert "Cannot be empty" == form.errors['sms_sender'][0]
|
assert error_message == form.errors['sms_sender'][0]
|
||||||
|
else:
|
||||||
form.sms_sender.data = 'morethanelevenchars'
|
assert not form.errors
|
||||||
form.validate()
|
|
||||||
assert "Enter 11 characters or fewer" == form.errors['sms_sender'][0]
|
|
||||||
|
|
||||||
form.sms_sender.data = '###########'
|
|
||||||
form.validate()
|
|
||||||
assert 'Use letters and numbers only' == form.errors['sms_sender'][0]
|
|
||||||
|
|
||||||
# Underscores are allowed
|
|
||||||
form.sms_sender.data = 'UK_GOV'
|
|
||||||
form.validate()
|
|
||||||
assert not form.errors
|
|
||||||
|
|
||||||
# Full stops are allowed
|
|
||||||
form.sms_sender.data = 'UK.GOV'
|
|
||||||
form.validate()
|
|
||||||
assert not form.errors
|
|
||||||
|
|
||||||
form.sms_sender.data = '22'
|
|
||||||
form.validate()
|
|
||||||
assert 'Enter 3 characters or more' == form.errors['sms_sender'][0]
|
|
||||||
|
|
||||||
form.sms_sender.data = '333'
|
|
||||||
form.validate()
|
|
||||||
assert not form.errors
|
|
||||||
|
|
||||||
form.sms_sender.data = '00111222333'
|
|
||||||
form.validate()
|
|
||||||
assert "Cannot start with 00" == form.errors['sms_sender'][0]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user