diff --git a/app/celery/research_mode_tasks.py b/app/celery/research_mode_tasks.py index 7ca2b9cc4..d04f8fb7f 100644 --- a/app/celery/research_mode_tasks.py +++ b/app/celery/research_mode_tasks.py @@ -6,9 +6,9 @@ from requests import request, RequestException, HTTPError from app.models import SMS_TYPE -temp_fail = "07700900003" -perm_fail = "07700900002" -delivered = "07700900001" +temp_fail = "7700900003" +perm_fail = "7700900002" +delivered = "7700900001" delivered_email = "delivered@simulator.notify" perm_fail_email = "perm-fail@simulator.notify" @@ -23,6 +23,12 @@ def send_sms_response(provider, reference, to): else: headers = {"Content-type": "application/x-www-form-urlencoded"} body = firetext_callback(reference, to) + # to simulate getting a temporary_failure from firetext + # we need to send a pending status updated then a permanent-failure + if body['status'] == '2': # pending status + make_request(SMS_TYPE, provider, body, headers) + body = firetext_callback(reference, perm_fail) + make_request(SMS_TYPE, provider, body, headers) @@ -71,9 +77,9 @@ def mmg_callback(notification_id, to): status: 5 - rejected (perm failure) """ - if to == temp_fail: + if to.strip().endswith(temp_fail): status = "4" - elif to == perm_fail: + elif to.strip().endswith(perm_fail): status = "5" else: status = "3" @@ -90,8 +96,10 @@ def firetext_callback(notification_id, to): status: 0 - delivered status: 1 - perm failure """ - if to == perm_fail: + if to.strip().endswith(perm_fail): status = "1" + elif to.strip().endswith(temp_fail): + status = "2" else: status = "0" return { diff --git a/tests/app/celery/test_research_mode_tasks.py b/tests/app/celery/test_research_mode_tasks.py index 753fd3819..7810b7ddb 100644 --- a/tests/app/celery/test_research_mode_tasks.py +++ b/tests/app/celery/test_research_mode_tasks.py @@ -1,3 +1,4 @@ +import pytest from flask import json from app.celery.research_mode_tasks import ( send_sms_response, @@ -50,42 +51,49 @@ def test_make_ses_callback(notify_api, rmock): assert rmock.called -def test_delivered_mmg_callback(): - data = json.loads(mmg_callback("1234", "07700900001")) - assert data['MSISDN'] == "07700900001" +@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001", + "+4407513453456"]) +def test_delivered_mmg_callback(phone_number): + data = json.loads(mmg_callback("1234", phone_number)) + assert data['MSISDN'] == phone_number assert data['status'] == "3" assert data['reference'] == "mmg_reference" assert data['CID'] == "1234" -def test_perm_failure_mmg_callback(): - data = json.loads(mmg_callback("1234", "07700900002")) - assert data['MSISDN'] == "07700900002" +@pytest.mark.parametrize("phone_number", ["07700900002", "+447700900002", "7700900002", "+44 7700900002"]) +def test_perm_failure_mmg_callback(phone_number): + data = json.loads(mmg_callback("1234", phone_number)) + assert data['MSISDN'] == phone_number assert data['status'] == "5" assert data['reference'] == "mmg_reference" assert data['CID'] == "1234" -def test_temp_failure_mmg_callback(): - data = json.loads(mmg_callback("1234", "07700900003")) - assert data['MSISDN'] == "07700900003" +@pytest.mark.parametrize("phone_number", ["07700900003", "+447700900003", "7700900003", "+44 7700900003"]) +def test_temp_failure_mmg_callback(phone_number): + data = json.loads(mmg_callback("1234", phone_number)) + assert data['MSISDN'] == phone_number assert data['status'] == "4" assert data['reference'] == "mmg_reference" assert data['CID'] == "1234" -def test_delivered_firetext_callback(): - assert firetext_callback('1234', '07700900001') == { - 'mobile': '07700900001', +@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001", + "+4407513453456"]) +def test_delivered_firetext_callback(phone_number): + assert firetext_callback('1234', phone_number) == { + 'mobile': phone_number, 'status': '0', 'time': '2016-03-10 14:17:00', 'reference': '1234' } -def test_failure_firetext_callback(): - assert firetext_callback('1234', '07700900002') == { - 'mobile': '07700900002', +@pytest.mark.parametrize("phone_number", ["07700900002", "+447700900002", "7700900002", "+44 7700900002"]) +def test_failure_firetext_callback(phone_number): + assert firetext_callback('1234', phone_number) == { + 'mobile': phone_number, 'status': '1', 'time': '2016-03-10 14:17:00', 'reference': '1234'