Exemplo n.º 1
0
    def test_subscribe(self):
        """Test that a subscriber is successfully validated and added to the
        event broadcaster.
        """

        mock_event_broadcaster = Mock()
        handler = \
            ClientEventsSubscribeValidationHandler(mock_event_broadcaster)
        request = events_pb2.ClientEventsSubscribeRequest(
            subscriptions=[
                events_pb2.EventSubscription(
                    event_type="test_event",
                    filters=[
                        events_pb2.EventFilter(key="test", match_string="test")
                    ],
                )
            ],
            last_known_block_ids=["0" * 128]).SerializeToString()

        response = handler.handle("test_conn_id", request)

        mock_event_broadcaster.add_subscriber.assert_called_with(
            "test_conn_id", [
                EventSubscription(event_type="test_event",
                                  filters=[
                                      FILTER_FACTORY.create(
                                          key="test", match_string="test")
                                  ])
            ], ["0" * 128])
        self.assertEqual(HandlerStatus.RETURN_AND_PASS, response.status)
        self.assertEqual(events_pb2.ClientEventsSubscribeResponse.OK,
                         response.message_out.status)
Exemplo n.º 2
0
    def test_subscribe_bad_filter(self):
        """Tests that the handler will respond with an INVALID_FILTER
        when a subscriber provides an invalid filter.
        """
        mock_event_broadcaster = Mock()
        handler = \
            ClientEventsSubscribeValidationHandler(mock_event_broadcaster)
        request = events_pb2.ClientEventsSubscribeRequest(
            subscriptions=[
                events_pb2.EventSubscription(
                    event_type="test_event",
                    filters=[
                        events_pb2.EventFilter(
                            key="test",
                            match_string="???",
                            filter_type=events_pb2.EventFilter.REGEX_ANY)
                    ],
                )
            ],
            last_known_block_ids=["0" * 128]).SerializeToString()

        response = handler.handle("test_conn_id", request)

        mock_event_broadcaster.add_subscriber.assert_not_called()
        self.assertEqual(HandlerStatus.RETURN, response.status)
        self.assertEqual(
            events_pb2.ClientEventsSubscribeResponse.INVALID_FILTER,
            response.message_out.status)
Exemplo n.º 3
0
    def test_subscribe(self):
        """Tests that the handler turns on the subscriber."""
        mock_event_broadcaster = Mock()
        handler = ClientEventsSubscribeHandler(mock_event_broadcaster)
        request = events_pb2.ClientEventsSubscribeRequest()

        response = handler.handle("test_conn_id", request)

        mock_event_broadcaster.enable_subscriber.assert_called_with(
            "test_conn_id")
        self.assertEqual(HandlerStatus.PASS, response.status)
Exemplo n.º 4
0
 def _subscribe(self, subscriptions=None):
     if subscriptions is None:
         subscriptions = [
             events_pb2.EventSubscription(event_type="block_commit"),
         ]
     request = events_pb2.ClientEventsSubscribeRequest(
         subscriptions=subscriptions)
     response = self.stream.send(
         validator_pb2.Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST,
         request.SerializeToString()).result()
     return response