Files
notifications-api/tests/app/status/test_delivery_status.py
Rebecca Law 8a0211b3eb Only send to the provider if the notification has a created status.
If the notification ends up in the retry queue and the delivery app is restarted the notification will get sent twice.
This is because when the app is restarted another message will be in the retry queue as message available which is a
duplicate of the one in the queue that is a  message in flight.

This should complete https://www.pivotaltracker.com/story/show/121844427
2016-06-27 14:47:20 +01:00

38 lines
1.4 KiB
Python

import json
from datetime import (
datetime,
timedelta
)
from tests.app.conftest import sample_notification
def test_get_delivery_status_all_ok(notify_api, notify_db):
with notify_api.test_request_context():
with notify_api.test_client() as client:
path = '/_delivery_status'
response = client.get(path)
assert response.status_code == 200
resp_json = json.loads(response.get_data(as_text=True))
assert resp_json['status'] == 'ok'
assert resp_json['message'] == '0 notifications in sending state over 5 minutes'
def test_get_delivery_status_with_undelivered_notification(notify_api, notify_db, notify_db_session):
notification = sample_notification(notify_db=notify_db, notify_db_session=notify_db_session, status='sending')
more_than_five_mins_ago = datetime.utcnow() - timedelta(minutes=10)
notification.created_at = more_than_five_mins_ago
notify_db.session.add(notification)
notify_db.session.commit()
with notify_api.test_request_context():
with notify_api.test_client() as client:
path = '/_delivery_status'
response = client.get(path)
assert response.status_code == 500
resp_json = json.loads(response.get_data(as_text=True))
assert resp_json['status'] == 'error'
assert resp_json['message'] == '1 notifications in sending state over 5 minutes'