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)
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)
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)
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", filter_type=events_pb2.EventFilter.SIMPLE_ANY) ], ) ], 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)