Пример #1
0
    def test_subscribe(self):
        """Test that a subscriber is successfully validated and added to the
        event broadcaster.
        """

        mock_event_broadcaster = Mock()
        mock_event_broadcaster.get_latest_known_block_id.return_value = \
            "0" * 128
        handler = \
            ClientEventsSubscribeValidationHandler(mock_event_broadcaster)
        request = client_event_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(client_event_pb2.ClientEventsSubscribeResponse.OK,
                         response.message_out.status)
Пример #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 = client_event_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(
            client_event_pb2.ClientEventsSubscribeResponse.INVALID_FILTER,
            response.message_out.status)
Пример #3
0
 def _subscribe(self, subscriptions=None, last_known_block_ids=None):
     if subscriptions is None:
         subscriptions = [
             events_pb2.EventSubscription(
                 event_type="sawtooth/block-commit"),
             # Subscribe to the settings state events, to test genesis
             # catch-up.
             events_pb2.EventSubscription(
                 event_type="sawtooth/state-delta",
                 filters=[events_pb2.EventFilter(
                     key='address',
                     match_string='000000.*',
                     filter_type=events_pb2.EventFilter.REGEX_ANY)]),
             # Subscribe to the intkey state events, to test additional
             # events.
             events_pb2.EventSubscription(
                 event_type="sawtooth/state-delta",
                 filters=[events_pb2.EventFilter(
                     key='address',
                     match_string='{}.*'.format(INTKEY_ADDRESS_PREFIX),
                     filter_type=events_pb2.EventFilter.REGEX_ANY)]),
         ]
     if last_known_block_ids is None:
         last_known_block_ids = []
     request = client_event_pb2.ClientEventsSubscribeRequest(
         subscriptions=subscriptions,
         last_known_block_ids=last_known_block_ids)
     response = self.stream.send(
         validator_pb2.Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST,
         request.SerializeToString()).result()
     return response
Пример #4
0
    def test_subscribe(self):
        """Tests that the handler turns on the subscriber."""
        mock_event_broadcaster = Mock()
        handler = ClientEventsSubscribeHandler(mock_event_broadcaster)
        request = client_event_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)