def test_update_status_of_notifications_after_timeout(notify_api, sample_template): with notify_api.test_request_context(): not1 = create_notification( template=sample_template, status='sending', created_at=datetime.utcnow() - timedelta(seconds=current_app.config.get( 'SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') + 10)) not2 = create_notification( template=sample_template, status='created', created_at=datetime.utcnow() - timedelta(seconds=current_app.config.get( 'SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') + 10)) not3 = create_notification( template=sample_template, status='pending', created_at=datetime.utcnow() - timedelta(seconds=current_app.config.get( 'SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') + 10)) with pytest.raises(NotificationTechnicalFailureException) as e: timeout_notifications() assert str(not2.id) in str(e.value) assert not1.status == 'temporary-failure' assert not2.status == 'technical-failure' assert not3.status == 'temporary-failure'
def test_should_not_update_status_of_letter_notifications(client, sample_letter_template): created_at = datetime.utcnow() - timedelta(days=5) not1 = create_notification(template=sample_letter_template, status='sending', created_at=created_at) not2 = create_notification(template=sample_letter_template, status='created', created_at=created_at) timeout_notifications() assert not1.status == 'sending' assert not2.status == 'created'
def test_not_update_status_of_notification_before_timeout(notify_api, sample_template): with notify_api.test_request_context(): not1 = create_notification( template=sample_template, status='sending', created_at=datetime.utcnow() - timedelta( seconds=current_app.config.get('SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') - 10)) timeout_notifications() assert not1.status == 'sending'
def test_timeout_notifications_sends_status_update_to_service(client, sample_template, mocker): callback_api = create_service_callback_api(service=sample_template.service) mocked = mocker.patch('app.celery.service_callback_tasks.send_delivery_status_to_service.apply_async') notification = create_notification( template=sample_template, status='sending', created_at=datetime.utcnow() - timedelta( seconds=current_app.config.get('SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') + 10)) timeout_notifications() encrypted_data = create_delivery_status_callback_data(notification, callback_api) mocked.assert_called_once_with([str(notification.id), encrypted_data], queue=QueueNames.CALLBACKS)