def __enter__(self): """Start of a context where all the bus' transports have been replaced with mocks""" # Mutable structures which we will use this to get the mocked data into # the transports # RPC mock_responses = {} # Events mock_events = set() # Create our transport classes, into which we inject our mutable structures TestRpcTransport = make_test_rpc_transport() TestResultTransport = make_test_result_transport(mock_responses) TestEventTransport = make_test_event_transport(mock_events) TestSchemaTransport = make_test_schema_transport() new_registry = TransportRegistry() new_registry.set_schema_transport(TestSchemaTransport, TestSchemaTransport.Config(), self.bus.client.config) self.old_transport_registry = self.bus.client.transport_registry for api_name, entry in self.old_transport_registry._registry.items(): new_registry.set_rpc_transport(api_name, TestRpcTransport, TestRpcTransport.Config(), self.bus.client.config) new_registry.set_result_transport( api_name, TestResultTransport, TestResultTransport.Config( require_mocking=self.require_mocking), self.bus.client.config, ) new_registry.set_event_transport( api_name, TestEventTransport, TestEventTransport.Config( require_mocking=self.require_mocking), self.bus.client.config, ) # The docs are only available on the bus client during testing self.bus.client.event_dock.transport_registry = new_registry self.bus.client.rpc_result_dock.transport_registry = new_registry queue_mocker = BusQueueMockerContext(client=self.bus.client) bus_with_mocked_queues = queue_mocker.__enter__() self.stack.append(queue_mocker) return MockResult(bus_with_mocked_queues, mock_responses=mock_responses, mock_events=mock_events)
def test_get_all_transports(redis_default_config): registry = TransportRegistry().load_config(redis_default_config) # Is equal to the default transport, so will not be included # in the get_all_transports() return value registry.set_event_transport("another", RedisEventTransport, RedisEventTransport.Config(), Config.default()) registry.set_event_transport("foo", DebugEventTransport, DebugEventTransport.Config(), Config.default()) # redis rpc + redis result + redis event + foo debug transport (above) = 4 assert len(registry.get_all_transports()) == 4
def test_transport_registry_get_event_transports(redis_default_config): registry = TransportRegistry().load_config(redis_default_config) # See comment in test_transport_registry_get_rpc_transports registry.set_event_transport("redis1", RedisEventTransport, RedisEventTransport.Config(batch_size=99), Config.default()) registry.set_event_transport("redis2", RedisEventTransport, RedisEventTransport.Config(batch_size=99), Config.default()) registry.set_event_transport("debug1", DebugEventTransport, DebugEventTransport.Config(), Config.default()) registry.set_event_transport("debug2", DebugEventTransport, DebugEventTransport.Config(), Config.default()) transports = registry.get_event_transports( ["default", "foo", "bar", "redis1", "redis2", "debug1", "debug2"]) default_transport = registry.get_event_transport("default") redis_transport = registry.get_event_transport("redis1") debug_transport = registry.get_event_transport("debug1") assert set(transports[default_transport]) == {"default", "foo", "bar"} assert set(transports[debug_transport]) == {"debug1", "debug2"} assert set(transports[redis_transport]) == {"redis1", "redis2"}