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.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id
|
||||||
from app.models import (
|
from app.models import (
|
||||||
INTERNATIONAL_SMS_TYPE, SMS_TYPE, EMAIL_TYPE, LETTER_TYPE,
|
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.service.utils import service_allowed_to_send_to
|
||||||
from app.v2.errors import TooManyRequestsError, BadRequestError, RateLimitError
|
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):
|
def check_if_service_can_send_to_number(service, number):
|
||||||
international_phone_info = get_international_phone_info(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 (
|
||||||
# if number is international and not a crown dependency
|
# if number is international and not a crown dependency
|
||||||
international_phone_info.international and not international_phone_info.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")
|
raise BadRequestError(message="Cannot send to international mobile numbers")
|
||||||
else:
|
else:
|
||||||
return international_phone_info
|
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(
|
def test_send_one_off_notification_calls_persist_correctly_for_email(
|
||||||
persist_mock,
|
persist_mock,
|
||||||
celery_mock,
|
celery_mock,
|
||||||
|
|||||||
Reference in New Issue
Block a user