mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-21 16:01:15 -05:00
Merge pull request #2909 from alphagov/fix-international-one-off
Fix sending one-off international text messages
This commit is contained in:
@@ -12,7 +12,8 @@ from app.dao import services_dao
|
||||
from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id
|
||||
from app.models import (
|
||||
INTERNATIONAL_SMS_TYPE, SMS_TYPE, EMAIL_TYPE, LETTER_TYPE,
|
||||
KEY_TYPE_TEST, KEY_TYPE_TEAM
|
||||
KEY_TYPE_TEST, KEY_TYPE_TEAM,
|
||||
ServicePermission,
|
||||
)
|
||||
from app.service.utils import service_allowed_to_send_to
|
||||
from app.v2.errors import TooManyRequestsError, BadRequestError, RateLimitError
|
||||
@@ -128,10 +129,15 @@ def validate_and_format_recipient(send_to, key_type, service, notification_type,
|
||||
def check_if_service_can_send_to_number(service, number):
|
||||
international_phone_info = get_international_phone_info(number)
|
||||
|
||||
if service.permissions and isinstance(service.permissions[0], ServicePermission):
|
||||
permissions = [p.permission for p in service.permissions]
|
||||
else:
|
||||
permissions = service.permissions
|
||||
|
||||
if (
|
||||
# if number is international and not a crown dependency
|
||||
international_phone_info.international and not international_phone_info.crown_dependency
|
||||
) and INTERNATIONAL_SMS_TYPE not in service.permissions:
|
||||
) and INTERNATIONAL_SMS_TYPE not in permissions:
|
||||
raise BadRequestError(message="Cannot send to international mobile numbers")
|
||||
else:
|
||||
return international_phone_info
|
||||
|
||||
@@ -103,6 +103,29 @@ def test_send_one_off_notification_calls_persist_correctly_for_sms(
|
||||
)
|
||||
|
||||
|
||||
def test_send_one_off_notification_calls_persist_correctly_for_international_sms(
|
||||
persist_mock,
|
||||
celery_mock,
|
||||
notify_db_session
|
||||
):
|
||||
service = create_service(service_permissions=['sms', 'international_sms'])
|
||||
template = create_template(
|
||||
service=service,
|
||||
template_type=SMS_TYPE,
|
||||
)
|
||||
|
||||
post_data = {
|
||||
'template_id': str(template.id),
|
||||
'to': '+1 555 0100',
|
||||
'personalisation': {'name': 'foo'},
|
||||
'created_by': str(service.created_by_id)
|
||||
}
|
||||
|
||||
send_one_off_notification(service.id, post_data)
|
||||
|
||||
assert persist_mock.call_args[1]['recipient'] == '+1 555 0100'
|
||||
|
||||
|
||||
def test_send_one_off_notification_calls_persist_correctly_for_email(
|
||||
persist_mock,
|
||||
celery_mock,
|
||||
|
||||
Reference in New Issue
Block a user