From a01828a6d0b72d226321bd65e22707818eb47299 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Wed, 10 Feb 2016 11:15:41 +0000 Subject: [PATCH] Return notification_id on create notification endpoints - /notification/sms - /notification/email - /notificaiton/sms/service/ Update message attribute on SQS to notification_id from message_id --- app/aws_sqs.py | 5 +++-- app/notifications/rest.py | 15 ++++++--------- tests/app/notifications/test_rest.py | 9 ++++++--- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/aws_sqs.py b/app/aws_sqs.py index 86b28eab8..ea362024c 100644 --- a/app/aws_sqs.py +++ b/app/aws_sqs.py @@ -10,11 +10,12 @@ def add_notification_to_queue(service_id, template_id, type_, notification): ).create_queue(QueueName="{}_{}".format( current_app.config['NOTIFICATION_QUEUE_PREFIX'], str(service_id))) - message_id = str(uuid.uuid4()) + notification_id = str(uuid.uuid4()) serializer = URLSafeSerializer(current_app.config.get('SECRET_KEY')) encrypted = serializer.dumps(notification, current_app.config.get('DANGEROUS_SALT')) q.send_message(MessageBody=encrypted, MessageAttributes={'type': {'StringValue': type_, 'DataType': 'String'}, - 'message_id': {'StringValue': message_id, 'DataType': 'String'}, + 'notification_id': {'StringValue': notification_id, 'DataType': 'String'}, 'service_id': {'StringValue': str(service_id), 'DataType': 'String'}, 'template_id': {'StringValue': str(template_id), 'DataType': 'String'}}) + return notification_id diff --git a/app/notifications/rest.py b/app/notifications/rest.py index 0c3cdf569..b596e15b1 100644 --- a/app/notifications/rest.py +++ b/app/notifications/rest.py @@ -29,9 +29,8 @@ def create_sms_notification(): if errors: return jsonify(result="error", message=errors), 400 - add_notification_to_queue(api_user['client'], notification['template'], 'sms', notification) - # TODO data to be returned - return jsonify({}), 204 + notification_id = add_notification_to_queue(api_user['client'], notification['template'], 'sms', notification) + return jsonify({'notification_id': notification_id}), 201 @notifications.route('/email', methods=['POST']) @@ -40,9 +39,8 @@ def create_email_notification(): notification, errors = email_notification_schema.load(resp_json) if errors: return jsonify(result="error", message=errors), 400 - add_notification_to_queue(api_user['client'], "admin", 'email', notification) - # TODO data to be returned - return jsonify({}), 204 + notification_id = add_notification_to_queue(api_user['client'], "admin", 'email', notification) + return jsonify({'notification_id': notification_id}), 201 @notifications.route('/sms/service/', methods=['POST']) @@ -66,6 +64,5 @@ def create_sms_for_service(service_id): message = "Invalid template: id {} for service id: {}".format(template.id, service_id) return jsonify(result="error", message=message), 400 - add_notification_to_queue(service_id, template_id, 'sms', notification) - # TODO data to be returned - return jsonify({}), 204 + notification_id = add_notification_to_queue(service_id, template_id, 'sms', notification) + return jsonify({'notification_id': notification_id}), 201 diff --git a/tests/app/notifications/test_rest.py b/tests/app/notifications/test_rest.py index b506bb10a..d3c2170e8 100644 --- a/tests/app/notifications/test_rest.py +++ b/tests/app/notifications/test_rest.py @@ -199,7 +199,8 @@ def test_should_allow_valid_message(notify_api, data=json.dumps(data), headers=[('Content-Type', 'application/json'), auth_header]) - assert response.status_code == 204 + assert response.status_code == 201 + assert json.loads(response.data)['notification_id'] is not None @moto.mock_sqs @@ -232,7 +233,8 @@ def test_send_email_valid_data(notify_api, data=json.dumps(data), headers=[('Content-Type', 'application/json'), auth_header]) - assert response.status_code == 204 + assert response.status_code == 201 + assert json.loads(response.data)['notification_id'] is not None @moto.mock_sqs @@ -263,7 +265,8 @@ def test_valid_message_with_service_id(notify_api, data=json.dumps(data), headers=[('Content-Type', 'application/json'), auth_header]) - assert response.status_code == 204 + assert response.status_code == 201 + assert json.loads(response.data)['notification_id'] is not None @moto.mock_sqs