ensure the user_number in inbound sms is international

rather than using the `normalise_phone_number` function, use the
`validate_and_format_phone_number` function - this will also convert
all numbers to international format, which means we won't need to
worry about whether the user enters internaional or UK phone numbers
when searching
This commit is contained in:
Leo Hemsted
2017-06-02 12:57:28 +01:00
parent ef52337d85
commit bf18b179b0
5 changed files with 19 additions and 12 deletions

View File

@@ -3,7 +3,7 @@ from flask import (
jsonify,
request
)
from notifications_utils.recipients import normalise_phone_number
from notifications_utils.recipients import validate_and_format_phone_number
from app.dao.inbound_sms_dao import dao_get_inbound_sms_for_service, dao_count_inbound_sms_for_service
from app.errors import register_errors
@@ -23,7 +23,8 @@ def get_inbound_sms_for_service(service_id):
user_number = request.args.get('user_number')
if user_number:
user_number = normalise_phone_number(user_number)
# we use this to normalise to an international phone number
user_number = validate_and_format_phone_number(user_number)
results = dao_get_inbound_sms_for_service(service_id, limit, user_number)

View File

@@ -2,7 +2,7 @@ from urllib.parse import unquote
import iso8601
from flask import jsonify, Blueprint, current_app, request
from notifications_utils.recipients import normalise_phone_number
from notifications_utils.recipients import validate_and_format_phone_number
from app import statsd_client
from app.dao.services_dao import dao_fetch_services_by_sms_sender
@@ -64,8 +64,8 @@ def format_mmg_datetime(date):
def create_inbound_mmg_sms_object(service, json):
message = format_mmg_message(json['Message'])
user_number = normalise_phone_number(json['MSISDN'])
message = format_message(json['Message'])
user_number = validate_and_format_phone_number(json['MSISDN'])
provider_date = json.get('DateRecieved')
if provider_date:

View File

@@ -190,7 +190,7 @@ def create_service_permission(service_id, permission=EMAIL_TYPE):
def create_inbound_sms(
service,
notify_number=None,
user_number='7700900111',
user_number='447700900111',
provider_date=None,
provider_reference=None,
content='Hello'

View File

@@ -1,5 +1,6 @@
from datetime import datetime
import pytest
from freezegun import freeze_time
from tests.app.db import create_inbound_sms, create_service
@@ -46,14 +47,19 @@ def test_get_inbound_sms_limits(admin_request, sample_service):
assert sms['data'][0]['id'] == str(two.id)
def test_get_inbound_sms_filters_user_number(admin_request, sample_service):
# user_number in the db is normalised
one = create_inbound_sms(sample_service, user_number='7700900001')
two = create_inbound_sms(sample_service, user_number='7700900002')
@pytest.mark.parametrize('user_number', [
'(07700) 900-001',
'+4407700900001',
'447700900001',
])
def test_get_inbound_sms_filters_user_number(admin_request, sample_service, user_number):
# user_number in the db is international and normalised
one = create_inbound_sms(sample_service, user_number='447700900001')
two = create_inbound_sms(sample_service, user_number='447700900002')
sms = admin_request.get(
'inbound_sms.get_inbound_sms_for_service',
endpoint_kwargs={'service_id': sample_service.id, 'user_number': '(07700) 900-001'}
endpoint_kwargs={'service_id': sample_service.id, 'user_number': user_number}
)
assert len(sms['data']) == 1

View File

@@ -63,7 +63,7 @@ def test_create_inbound_mmg_sms_object(sample_service):
assert inbound_sms.service_id == sample_service.id
assert inbound_sms.notify_number == 'foo'
assert inbound_sms.user_number == '7700900001'
assert inbound_sms.user_number == '447700900001'
assert inbound_sms.provider_date == datetime(2017, 1, 2, 3, 4, 5)
assert inbound_sms.provider_reference == 'bar'
assert inbound_sms._content != 'hello there 📩'