Exemplo n.º 1
0
    def test_publish_all_sandboxes_each_subscriber(self, pyramid_request,
                                                   pyramid_config):
        queue = eventqueue.EventQueue(pyramid_request)

        def failing_subscriber(event):
            raise Exception("failing_subscriber failed")

        first_subscriber = mock.Mock()
        second_subscriber = mock.Mock()
        second_subscriber.side_effect = failing_subscriber
        third_subscriber = mock.Mock()

        subscribers = [first_subscriber, second_subscriber, third_subscriber]
        for sub in subscribers:
            pyramid_config.add_subscriber(sub, DummyEvent)

        event = DummyEvent(pyramid_request)

        queue(event)
        queue.publish_all()

        # If one subscriber raises an exception, that shouldn't prevent others
        # from running.
        for sub in subscribers:
            sub.assert_called_once_with(event)
Exemplo n.º 2
0
    def test_call_appends_event_to_queue(self):
        queue = eventqueue.EventQueue(mock.Mock())

        assert len(queue.queue) == 0
        event = mock.Mock()
        queue(event)
        assert list(queue.queue) == [event]
Exemplo n.º 3
0
 def test_response_callback_skips_publishing_events_on_exception(
     self, publish_all, pyramid_request
 ):
     pyramid_request.exception = ValueError("exploded!")
     queue = eventqueue.EventQueue(pyramid_request)
     queue.response_callback(pyramid_request, None)
     assert not publish_all.called
Exemplo n.º 4
0
    def test_publish_all_reraises_in_debug_mode(self, subscriber, pyramid_request):
        queue = eventqueue.EventQueue(pyramid_request)
        pyramid_request.debug = True
        subscriber.side_effect = Exception("boom!")

        with pytest.raises(Exception) as excinfo:
            queue(DummyEvent(pyramid_request))
            queue.publish_all()
        assert str(excinfo.value) == "boom!"
Exemplo n.º 5
0
    def test_publish_all_logs_exception_when_sentry_is_not_available(
            self, log, notify, pyramid_request):
        notify.side_effect = ValueError('exploded!')
        queue = eventqueue.EventQueue(pyramid_request)
        event = mock.Mock(request=pyramid_request)
        queue(event)

        queue.publish_all()

        assert log.exception.called
Exemplo n.º 6
0
    def test_publish_all_sends_exception_to_sentry(self, notify,
                                                   pyramid_request):
        pyramid_request.sentry = mock.Mock()
        notify.side_effect = ValueError('exploded!')
        queue = eventqueue.EventQueue(pyramid_request)
        event = mock.Mock(request=pyramid_request)
        queue(event)

        queue.publish_all()
        assert pyramid_request.sentry.captureException.called
Exemplo n.º 7
0
    def test_publish_all_logs_exception_when_sentry_is_not_available(
            self, log, subscriber, pyramid_request):
        subscriber.side_effect = ValueError("exploded!")
        queue = eventqueue.EventQueue(pyramid_request)
        event = DummyEvent(pyramid_request)
        queue(event)

        queue.publish_all()

        assert log.exception.called
Exemplo n.º 8
0
    def test_publish_all_sends_exception_to_sentry(self, subscriber,
                                                   pyramid_request):
        pyramid_request.sentry = mock.Mock()
        subscriber.side_effect = ValueError("exploded!")
        queue = eventqueue.EventQueue(pyramid_request)
        event = DummyEvent(pyramid_request)
        queue(event)

        queue.publish_all()

        assert pyramid_request.sentry.captureException.called
Exemplo n.º 9
0
    def test_publish_all_sandboxes_each_event(self, notify, pyramid_request):
        queue = eventqueue.EventQueue(pyramid_request)
        firstevent = mock.Mock(request=pyramid_request)
        queue(firstevent)
        secondevent = mock.Mock(request=pyramid_request)
        queue(secondevent)

        queue.publish_all()

        assert notify.call_args_list == [
            mock.call(firstevent),
            mock.call(secondevent)
        ]
Exemplo n.º 10
0
    def test_publish_all_notifies_events_in_fifo_order(self, notify,
                                                       pyramid_request):
        queue = eventqueue.EventQueue(pyramid_request)
        firstevent = mock.Mock(request=pyramid_request)
        queue(firstevent)
        secondevent = mock.Mock(request=pyramid_request)
        queue(secondevent)

        queue.publish_all()

        assert notify.call_args_list == [
            mock.call(firstevent),
            mock.call(secondevent)
        ]
Exemplo n.º 11
0
    def test_publish_all_notifies_events_in_fifo_order(self, pyramid_request,
                                                       subscriber):
        queue = eventqueue.EventQueue(pyramid_request)
        firstevent = DummyEvent(pyramid_request)
        queue(firstevent)
        secondevent = DummyEvent(pyramid_request)
        queue(secondevent)

        queue.publish_all()

        assert subscriber.call_args_list == [
            mock.call(firstevent),
            mock.call(secondevent),
        ]
Exemplo n.º 12
0
    def test_init_adds_response_callback(self, pyramid_request):
        request = mock.Mock()
        queue = eventqueue.EventQueue(request)

        request.add_response_callback.assert_called_once_with(
            queue.response_callback)
Exemplo n.º 13
0
 def test_response_callback_publishes_events(self, publish_all,
                                             pyramid_request):
     queue = eventqueue.EventQueue(pyramid_request)
     queue(mock.Mock())
     queue.response_callback(pyramid_request, None)
     assert publish_all.called