Merge pull request #1219 from alphagov/international-sms-notify

Allow Notify service to send international sms
This commit is contained in:
Chris Hill-Scott
2017-08-30 15:53:19 +01:00
committed by GitHub
5 changed files with 45 additions and 6 deletions

View File

@@ -318,7 +318,7 @@ class ServiceWhitelist(db.Model):
try:
if recipient_type == MOBILE_TYPE:
validate_phone_number(recipient)
validate_phone_number(recipient, international=True)
instance.recipient = recipient
elif recipient_type == EMAIL_TYPE:
validate_email_address(recipient)

View File

@@ -130,7 +130,7 @@ class UserUpdateAttributeSchema(BaseSchema):
@validates('mobile_number')
def validate_mobile_number(self, value):
try:
validate_phone_number(value)
validate_phone_number(value, international=True)
except InvalidPhoneError as error:
raise ValidationError('Invalid phone number: {}'.format(error))

View File

@@ -0,0 +1,33 @@
"""empty message
Revision ID: 0117_international_sms_notify
Revises: 0116_another_letter_org
Create Date: 2017-08-29 14:09:41.042061
"""
# revision identifiers, used by Alembic.
revision = '0117_international_sms_notify'
down_revision = '0116_another_letter_org'
from alembic import op
from datetime import datetime
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
def upgrade():
op.execute("""
INSERT INTO service_permissions VALUES
('{}', 'international_sms', '{}')
""".format(NOTIFY_SERVICE_ID, datetime.utcnow()))
def downgrade():
op.execute("""
DELETE FROM service_permissions
WHERE
service_id = '{}' AND
permission = 'international_sms'
""".format(NOTIFY_SERVICE_ID))

View File

@@ -23,19 +23,24 @@ from app.models import User, VerifyCode
from tests.app.db import create_user
def test_create_user(notify_db_session):
@pytest.mark.parametrize('phone_number', [
'+447700900986',
'+1-800-555-5555',
])
def test_create_user(notify_db_session, phone_number):
email = 'notify@digital.cabinet-office.gov.uk'
data = {
'name': 'Test User',
'email_address': email,
'password': 'password',
'mobile_number': '+447700900986'
'mobile_number': phone_number
}
user = User(**data)
save_model_user(user)
assert User.query.count() == 1
assert User.query.first().email_address == email
assert User.query.first().id == user.id
assert User.query.first().mobile_number == phone_number
assert not user.platform_admin

View File

@@ -24,14 +24,15 @@ def test_get_whitelist_returns_data(client, sample_service_whitelist):
def test_get_whitelist_separates_emails_and_phones(client, sample_service):
dao_add_and_commit_whitelisted_contacts([
ServiceWhitelist.from_string(sample_service.id, EMAIL_TYPE, 'service@example.com'),
ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '07123456789')
ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '07123456789'),
ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '+1800-555-555'),
])
response = client.get('service/{}/whitelist'.format(sample_service.id), headers=[create_authorization_header()])
assert response.status_code == 200
assert json.loads(response.get_data(as_text=True)) == {
'email_addresses': ['service@example.com'],
'phone_numbers': ['07123456789']
'phone_numbers': ['+1800-555-555', '07123456789']
}