mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 09:26:08 -05:00
Merge pull request #799 from alphagov/fix-simulate-logic
fix simulate research mode logic
This commit is contained in:
@@ -6,9 +6,9 @@ from requests import request, RequestException, HTTPError
|
|||||||
|
|
||||||
from app.models import SMS_TYPE
|
from app.models import SMS_TYPE
|
||||||
|
|
||||||
temp_fail = "07700900003"
|
temp_fail = "7700900003"
|
||||||
perm_fail = "07700900002"
|
perm_fail = "7700900002"
|
||||||
delivered = "07700900001"
|
delivered = "7700900001"
|
||||||
|
|
||||||
delivered_email = "delivered@simulator.notify"
|
delivered_email = "delivered@simulator.notify"
|
||||||
perm_fail_email = "perm-fail@simulator.notify"
|
perm_fail_email = "perm-fail@simulator.notify"
|
||||||
@@ -23,6 +23,17 @@ def send_sms_response(provider, reference, to):
|
|||||||
else:
|
else:
|
||||||
headers = {"Content-type": "application/x-www-form-urlencoded"}
|
headers = {"Content-type": "application/x-www-form-urlencoded"}
|
||||||
body = firetext_callback(reference, to)
|
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)
|
||||||
|
# 1 is a declined status for firetext, will result in a temp-failure
|
||||||
|
body = {'mobile': to,
|
||||||
|
'status': "1",
|
||||||
|
'time': '2016-03-10 14:17:00',
|
||||||
|
'reference': reference
|
||||||
|
}
|
||||||
|
|
||||||
make_request(SMS_TYPE, provider, body, headers)
|
make_request(SMS_TYPE, provider, body, headers)
|
||||||
|
|
||||||
|
|
||||||
@@ -71,9 +82,9 @@ def mmg_callback(notification_id, to):
|
|||||||
status: 5 - rejected (perm failure)
|
status: 5 - rejected (perm failure)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if to == temp_fail:
|
if to.strip().endswith(temp_fail):
|
||||||
status = "4"
|
status = "4"
|
||||||
elif to == perm_fail:
|
elif to.strip().endswith(perm_fail):
|
||||||
status = "5"
|
status = "5"
|
||||||
else:
|
else:
|
||||||
status = "3"
|
status = "3"
|
||||||
@@ -90,8 +101,10 @@ def firetext_callback(notification_id, to):
|
|||||||
status: 0 - delivered
|
status: 0 - delivered
|
||||||
status: 1 - perm failure
|
status: 1 - perm failure
|
||||||
"""
|
"""
|
||||||
if to == perm_fail:
|
if to.strip().endswith(perm_fail):
|
||||||
status = "1"
|
status = "1"
|
||||||
|
elif to.strip().endswith(temp_fail):
|
||||||
|
status = "2"
|
||||||
else:
|
else:
|
||||||
status = "0"
|
status = "0"
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import pytest
|
||||||
from flask import json
|
from flask import json
|
||||||
from app.celery.research_mode_tasks import (
|
from app.celery.research_mode_tasks import (
|
||||||
send_sms_response,
|
send_sms_response,
|
||||||
@@ -24,18 +25,21 @@ def test_make_mmg_callback(notify_api, rmock):
|
|||||||
assert json.loads(rmock.request_history[0].text)['MSISDN'] == '07700900001'
|
assert json.loads(rmock.request_history[0].text)['MSISDN'] == '07700900001'
|
||||||
|
|
||||||
|
|
||||||
def test_make_firetext_callback(notify_api, rmock):
|
@pytest.mark.parametrize("phone_number",
|
||||||
|
["07700900001", "07700900002", "07700900003",
|
||||||
|
"07700900236"])
|
||||||
|
def test_make_firetext_callback(notify_api, rmock, phone_number):
|
||||||
endpoint = "http://localhost:6011/notifications/sms/firetext"
|
endpoint = "http://localhost:6011/notifications/sms/firetext"
|
||||||
rmock.request(
|
rmock.request(
|
||||||
"POST",
|
"POST",
|
||||||
endpoint,
|
endpoint,
|
||||||
json="some data",
|
json="some data",
|
||||||
status_code=200)
|
status_code=200)
|
||||||
send_sms_response("firetext", "1234", "07700900001")
|
send_sms_response("firetext", "1234", phone_number)
|
||||||
|
|
||||||
assert rmock.called
|
assert rmock.called
|
||||||
assert rmock.request_history[0].url == endpoint
|
assert rmock.request_history[0].url == endpoint
|
||||||
assert 'mobile=07700900001' in rmock.request_history[0].text
|
assert 'mobile={}'.format(phone_number) in rmock.request_history[0].text
|
||||||
|
|
||||||
|
|
||||||
def test_make_ses_callback(notify_api, rmock):
|
def test_make_ses_callback(notify_api, rmock):
|
||||||
@@ -50,42 +54,49 @@ def test_make_ses_callback(notify_api, rmock):
|
|||||||
assert rmock.called
|
assert rmock.called
|
||||||
|
|
||||||
|
|
||||||
def test_delivered_mmg_callback():
|
@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001",
|
||||||
data = json.loads(mmg_callback("1234", "07700900001"))
|
"+447700900236"])
|
||||||
assert data['MSISDN'] == "07700900001"
|
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['status'] == "3"
|
||||||
assert data['reference'] == "mmg_reference"
|
assert data['reference'] == "mmg_reference"
|
||||||
assert data['CID'] == "1234"
|
assert data['CID'] == "1234"
|
||||||
|
|
||||||
|
|
||||||
def test_perm_failure_mmg_callback():
|
@pytest.mark.parametrize("phone_number", ["07700900002", "+447700900002", "7700900002", "+44 7700900002"])
|
||||||
data = json.loads(mmg_callback("1234", "07700900002"))
|
def test_perm_failure_mmg_callback(phone_number):
|
||||||
assert data['MSISDN'] == "07700900002"
|
data = json.loads(mmg_callback("1234", phone_number))
|
||||||
|
assert data['MSISDN'] == phone_number
|
||||||
assert data['status'] == "5"
|
assert data['status'] == "5"
|
||||||
assert data['reference'] == "mmg_reference"
|
assert data['reference'] == "mmg_reference"
|
||||||
assert data['CID'] == "1234"
|
assert data['CID'] == "1234"
|
||||||
|
|
||||||
|
|
||||||
def test_temp_failure_mmg_callback():
|
@pytest.mark.parametrize("phone_number", ["07700900003", "+447700900003", "7700900003", "+44 7700900003"])
|
||||||
data = json.loads(mmg_callback("1234", "07700900003"))
|
def test_temp_failure_mmg_callback(phone_number):
|
||||||
assert data['MSISDN'] == "07700900003"
|
data = json.loads(mmg_callback("1234", phone_number))
|
||||||
|
assert data['MSISDN'] == phone_number
|
||||||
assert data['status'] == "4"
|
assert data['status'] == "4"
|
||||||
assert data['reference'] == "mmg_reference"
|
assert data['reference'] == "mmg_reference"
|
||||||
assert data['CID'] == "1234"
|
assert data['CID'] == "1234"
|
||||||
|
|
||||||
|
|
||||||
def test_delivered_firetext_callback():
|
@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001",
|
||||||
assert firetext_callback('1234', '07700900001') == {
|
"+447700900256"])
|
||||||
'mobile': '07700900001',
|
def test_delivered_firetext_callback(phone_number):
|
||||||
|
assert firetext_callback('1234', phone_number) == {
|
||||||
|
'mobile': phone_number,
|
||||||
'status': '0',
|
'status': '0',
|
||||||
'time': '2016-03-10 14:17:00',
|
'time': '2016-03-10 14:17:00',
|
||||||
'reference': '1234'
|
'reference': '1234'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_failure_firetext_callback():
|
@pytest.mark.parametrize("phone_number", ["07700900002", "+447700900002", "7700900002", "+44 7700900002"])
|
||||||
assert firetext_callback('1234', '07700900002') == {
|
def test_failure_firetext_callback(phone_number):
|
||||||
'mobile': '07700900002',
|
assert firetext_callback('1234', phone_number) == {
|
||||||
|
'mobile': phone_number,
|
||||||
'status': '1',
|
'status': '1',
|
||||||
'time': '2016-03-10 14:17:00',
|
'time': '2016-03-10 14:17:00',
|
||||||
'reference': '1234'
|
'reference': '1234'
|
||||||
|
|||||||
Reference in New Issue
Block a user