mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 18:01:08 -05:00
WIP: building the mmg delivery receipt endpoint.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user