@@ -417,7 +417,7 @@ async def handle_outbound(self, message, connector_name):
417417 return message
418418
419419 async def handle_event (self , event , connector_name ):
420- event .helper_metadata ["test" ] = "event "
420+ event .helper_metadata ["test" ] = "_ToyMiddleWare1 "
421421
422422 return event
423423
@@ -445,8 +445,8 @@ async def handle_outbound(self, message, connector_name):
445445 return message
446446
447447 async def handle_event (self , event , connector_name ):
448- event .helper_metadata ["test" ] = "event"
449-
448+ prev_helper = event .helper_metadata ["test" ]
449+ event . helper_metadata [ "test" ] = f" { prev_helper } _ToyMiddleWare2"
450450 return event
451451
452452
@@ -561,7 +561,51 @@ async def test_middle_event(worker_factory, connector_factory):
561561 event = await ri_app .consume_event ()
562562 assert message_hello_test .content == "Hello"
563563 assert message_goodbye_test .content == "Goodbye"
564- assert event .helper_metadata == {"test" : "event" }
564+ assert event .helper_metadata == {"test" : "_ToyMiddleWare1" }
565+
566+
567+ async def test_multiple_middlewares_event (worker_factory , connector_factory ):
568+ """
569+ This test is to check if middleware is called in
570+ the order that they added to the router
571+ """
572+
573+ middleware_config = {
574+ "class_path" : "tests.test_workers.ToyMiddleware" ,
575+ "enable_for_connectors" : ["test" , "app" ],
576+ "inbound_enabled" : False ,
577+ "outbound_enabled" : False ,
578+ "event_enabled" : True ,
579+ }
580+
581+ middleware_config_2 = {
582+ "class_path" : "tests.test_workers.ToyMiddleware2" ,
583+ "enable_for_connectors" : ["test" , "app" ],
584+ "inbound_enabled" : False ,
585+ "outbound_enabled" : False ,
586+ "event_enabled" : True ,
587+ }
588+
589+ config = {
590+ "transport_names" : ["test" ],
591+ "default_app" : "app" ,
592+ "middlewares" : [middleware_config , middleware_config_2 ],
593+ }
594+
595+ async with worker_factory .with_cleanup (MiddlewareWorker , config ) as worker :
596+ await worker .setup ()
597+ ri_app = await connector_factory .setup_ri ("app" )
598+ ro_test = await connector_factory .setup_ro ("test" )
599+ message_hello = mkmsg ("Hello" )
600+ message_goodbye = mkmsg ("Goodbye" )
601+ message_id = message_goodbye .message_id
602+ await ro_test .publish_inbound (message_hello )
603+ await ri_app .consume_inbound ()
604+ await ri_app .publish_outbound (message_goodbye )
605+ await ro_test .consume_outbound ()
606+ await ro_test .publish_event (mkev (message_id ))
607+ event = await ri_app .consume_event ()
608+ assert event .helper_metadata == {"test" : "_ToyMiddleWare1_ToyMiddleWare2" }
565609
566610
567611async def test_multiple_middle_wares_inbound (worker_factory , connector_factory ):
0 commit comments