WIP: building the mmg delivery receipt endpoint.

This commit is contained in:
Rebecca Law
2016-04-04 18:08:37 +01:00
parent 2ba12da77d
commit 3820090a19
2 changed files with 64 additions and 14 deletions

View File

@@ -148,24 +148,38 @@ def process_mmg_response():
print('here')
current_app.logger.info('MMG client callback json{}'.format(request.json))
current_app.logger.info('MMG client callback form{}'.format(request.form))
status, error1 = _get_from_response(form=request.form, field='status', client_name='MMG')
reference, error2 = _get_from_response(form=request.form, field='reference', client_name='MMG')
errors = [error1, error2]
errors.remove(None)
if len(errors) > 0:
return jsonify(result='error', message=errors), 400
if reference == 'send-sms-code':
return jsonify(result="success", message="MMG callback succeeded: send-sms-code"), 200
def _get_from_response(form, field, client_name):
error = None
form_field = None
if len(form.get(field, '')) <= 0:
print(
"{} callback failed: {} missing".format(client_name, field)
)
error="{} callback failed: {} missing".format(client_name, field)
else:
form_field = form[field]
return form_field, error
@notifications.route('/notifications/sms/firetext', methods=['POST'])
def process_firetext_response():
if 'status' not in request.form:
current_app.logger.info(
"Firetext callback failed: status missing"
)
return jsonify(result="error", message="Firetext callback failed: status missing"), 400
if len(request.form.get('reference', '')) <= 0:
current_app.logger.info(
"Firetext callback with no reference"
)
return jsonify(result="error", message="Firetext callback failed: reference missing"), 400
reference = request.form['reference']
status = request.form['status']
status, error1 = _get_from_response(form=request.form, field='status', client_name='Firetext')
reference, error2 = _get_from_response(form=request.form, field='reference', client_name='Firetext')
errors = [error1, error2]
errors = errors.filter(None)
if len(errors) > 0:
return jsonify(result='error', message=errors), 400
if reference == 'send-sms-code':
return jsonify(result="success", message="Firetext callback succeeded: send-sms-code"), 200

View File

@@ -15,6 +15,42 @@ from app.dao.notifications_dao import get_notification_by_id, dao_get_notificati
from freezegun import freeze_time
def test_get_status_name_from_response_return_status():
from app.notifications.rest import _get_from_response
form = {'status': 'good'}
client_name = 'sms client'
status, error = _get_from_response(form, 'status', client_name)
expected = 'good'
assert expected == status
assert error is None
def test_get_status_name_returns_error():
from app.notifications.rest import _get_from_response
form = {'status': '',
'another': 'some'}
client_name = 'sms client'
errors = []
status, error1 = _get_from_response(form, 'reference', client_name)
expected = "{} callback failed: reference missing".format(client_name)
assert expected == error1
assert status is None
errors.append(error1)
status, error2 = _get_from_response(form, 'status', client_name)
errors.append(error2)
another, error3 = _get_from_response(form, 'another', client_name)
if error3:
errors.append(error3)
assert "sms client callback failed: status missing" == error2
assert len(errors) == 2
assert error1 in errors
assert error2 in errors
assert error3 not in errors
err = [error1, error2, error3]
err = filter(None, err)
assert len(list(err)) == 2
def test_get_notification_by_id(notify_api, sample_notification):
with notify_api.test_request_context():
with notify_api.test_client() as client: