Remove mmg & firetext from research_mode_tasks.py

This commit is contained in:
Ryan Ahearn
2022-12-21 15:10:44 -05:00
parent db75efe789
commit 77afecf8d2
2 changed files with 45 additions and 113 deletions

View File

@@ -12,9 +12,9 @@ from app.celery.process_ses_receipts_tasks import process_ses_results
from app.config import QueueNames from app.config import QueueNames
from app.models import SMS_TYPE from app.models import SMS_TYPE
temp_fail = "7700900003" temp_fail = "5558675303"
perm_fail = "7700900002" perm_fail = "5558675302"
delivered = "7700900001" delivered = "5558675309"
delivered_email = "delivered@simulator.notify" delivered_email = "delivered@simulator.notify"
perm_fail_email = "perm-fail@simulator.notify" perm_fail_email = "perm-fail@simulator.notify"
@@ -22,22 +22,8 @@ temp_fail_email = "temp-fail@simulator.notify"
def send_sms_response(provider, reference, to): def send_sms_response(provider, reference, to):
if provider == "mmg": body = sns_callback(reference, to)
body = mmg_callback(reference, to) headers = {"Content-type": "application/json"}
headers = {"Content-type": "application/json"}
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)
# 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)
@@ -78,44 +64,25 @@ def make_request(notification_type, provider, data, headers):
return response.json() return response.json()
def mmg_callback(notification_id, to): def sns_callback(notification_id, to):
""" raise Exception("Need to update for SNS callback format along with test_send_to_providers")
status: 3 - delivered
status: 4 - expired (temp failure)
status: 5 - rejected (perm failure)
"""
if to.strip().endswith(temp_fail): # example from mmg_callback
status = "4" # if to.strip().endswith(temp_fail):
elif to.strip().endswith(perm_fail): # # status: 4 - expired (temp failure)
status = "5" # status = "4"
else: # elif to.strip().endswith(perm_fail):
status = "3" # # status: 5 - rejected (perm failure)
# status = "5"
# else:
# # status: 3 - delivered
# status = "3"
return json.dumps({"reference": "mmg_reference", # return json.dumps({"reference": "mmg_reference",
"CID": str(notification_id), # "CID": str(notification_id),
"MSISDN": to, # "MSISDN": to,
"status": status, # "status": status,
"deliverytime": "2016-04-05 16:01:07"}) # "deliverytime": "2016-04-05 16:01:07"})
def firetext_callback(notification_id, to):
"""
status: 0 - delivered
status: 1 - perm failure
"""
if to.strip().endswith(perm_fail):
status = "1"
elif to.strip().endswith(temp_fail):
status = "2"
else:
status = "0"
return {
'mobile': to,
'status': status,
'time': '2016-03-10 14:17:00',
'reference': notification_id
}
@notify_celery.task(bind=True, name="create-fake-letter-response-file", max_retries=5, default_retry_delay=300) @notify_celery.task(bind=True, name="create-fake-letter-response-file", max_retries=5, default_retry_delay=300)

View File

@@ -9,11 +9,10 @@ from freezegun import freeze_time
from app.celery.research_mode_tasks import ( from app.celery.research_mode_tasks import (
HTTPError, HTTPError,
create_fake_letter_response_file, create_fake_letter_response_file,
firetext_callback,
mmg_callback,
send_email_response, send_email_response,
send_sms_response, send_sms_response,
ses_notification_callback, ses_notification_callback,
sns_callback,
) )
from app.config import QueueNames from app.config import QueueNames
from tests.conftest import Matcher, set_config_values from tests.conftest import Matcher, set_config_values
@@ -24,22 +23,24 @@ dvla_response_file_matcher = Matcher(
) )
def test_make_mmg_callback(notify_api, rmock): @pytest.mark.skip(reason="Re-enable when SMS receipts exist")
endpoint = "http://localhost:6011/notifications/sms/mmg" def test_make_sns_callback(notify_api, rmock):
endpoint = "http://localhost:6011/notifications/sms/sns"
rmock.request( rmock.request(
"POST", "POST",
endpoint, endpoint,
json={"status": "success"}, json={"status": "success"},
status_code=200) status_code=200)
send_sms_response("mmg", "1234", "07700900001") send_sms_response("sns", "1234", "5558675309")
assert rmock.called assert rmock.called
assert rmock.request_history[0].url == endpoint assert rmock.request_history[0].url == endpoint
assert json.loads(rmock.request_history[0].text)['MSISDN'] == '07700900001' assert json.loads(rmock.request_history[0].text)['MSISDN'] == '5558675309'
@pytest.mark.skip(reason="Re-enable when SMS receipts exist")
def test_callback_logs_on_api_call_failure(notify_api, rmock, mocker): def test_callback_logs_on_api_call_failure(notify_api, rmock, mocker):
endpoint = "http://localhost:6011/notifications/sms/mmg" endpoint = "http://localhost:6011/notifications/sms/sns"
rmock.request( rmock.request(
"POST", "POST",
endpoint, endpoint,
@@ -57,23 +58,6 @@ def test_callback_logs_on_api_call_failure(notify_api, rmock, mocker):
) )
@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"
rmock.request(
"POST",
endpoint,
json="some data",
status_code=200)
send_sms_response("firetext", "1234", phone_number)
assert rmock.called
assert rmock.request_history[0].url == endpoint
assert 'mobile={}'.format(phone_number) in rmock.request_history[0].text
def test_make_ses_callback(notify_api, mocker): def test_make_ses_callback(notify_api, mocker):
mock_task = mocker.patch('app.celery.research_mode_tasks.process_ses_results') mock_task = mocker.patch('app.celery.research_mode_tasks.process_ses_results')
some_ref = str(uuid.uuid4()) some_ref = str(uuid.uuid4())
@@ -84,55 +68,36 @@ def test_make_ses_callback(notify_api, mocker):
assert mock_task.apply_async.call_args[0][0][0] == ses_notification_callback(some_ref) assert mock_task.apply_async.call_args[0][0][0] == ses_notification_callback(some_ref)
@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001", @pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist")
"+447700900236"]) def test_delievered_sns_callback():
def test_delivered_mmg_callback(phone_number): phone_number = "5558675309"
data = json.loads(mmg_callback("1234", phone_number)) data = json.loads(sns_callback("1234", phone_number))
assert data['MSISDN'] == phone_number assert data['MSISDN'] == phone_number
assert data['status'] == "3" assert data['status'] == "3"
assert data['reference'] == "mmg_reference" assert data['reference'] == "sns_reference"
assert data['CID'] == "1234" assert data['CID'] == "1234"
@pytest.mark.parametrize("phone_number", ["07700900002", "+447700900002", "7700900002", "+44 7700900002"]) @pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist")
def test_perm_failure_mmg_callback(phone_number): def test_perm_failure_sns_callback():
data = json.loads(mmg_callback("1234", phone_number)) phone_number = "5558675302"
data = json.loads(sns_callback("1234", phone_number))
assert data['MSISDN'] == phone_number assert data['MSISDN'] == phone_number
assert data['status'] == "5" assert data['status'] == "5"
assert data['reference'] == "mmg_reference" assert data['reference'] == "sns_reference"
assert data['CID'] == "1234" assert data['CID'] == "1234"
@pytest.mark.parametrize("phone_number", ["07700900003", "+447700900003", "7700900003", "+44 7700900003"]) @pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist")
def test_temp_failure_mmg_callback(phone_number): def test_temp_failure_sns_callback():
data = json.loads(mmg_callback("1234", phone_number)) phone_number = "5558675303"
data = json.loads(sns_callback("1234", phone_number))
assert data['MSISDN'] == phone_number assert data['MSISDN'] == phone_number
assert data['status'] == "4" assert data['status'] == "4"
assert data['reference'] == "mmg_reference" assert data['reference'] == "sns_reference"
assert data['CID'] == "1234" assert data['CID'] == "1234"
@pytest.mark.parametrize("phone_number", ["07700900001", "+447700900001", "7700900001", "+44 7700900001",
"+447700900256"])
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'
}
@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'
}
@freeze_time("2018-01-25 14:00:30") @freeze_time("2018-01-25 14:00:30")
@pytest.mark.skip(reason="Skipping letter-related functionality for now") @pytest.mark.skip(reason="Skipping letter-related functionality for now")
def test_create_fake_letter_response_file_uploads_response_file_s3( def test_create_fake_letter_response_file_uploads_response_file_s3(