2121
2222import pytest
2323
24- from nitric .faas import start , FunctionServer , EventContext , HttpContext
24+ from nitric .faas import start , FunctionServer , HttpContext , compose_middleware , HttpResponse
2525
2626from nitricapi .nitric .faas .v1 import (
2727 ServerMessage ,
@@ -46,6 +46,21 @@ def __init__(self):
4646
4747
4848class EventClientTest (IsolatedAsyncioTestCase ):
49+ async def test_compose_middleware (self ):
50+ async def middleware (ctx : HttpContext , next ) -> HttpContext :
51+ ctx .res .status = 401
52+ return await next (ctx )
53+
54+ async def handler (ctx : HttpContext ) -> HttpContext :
55+ ctx .res .body = "some text"
56+ return ctx
57+
58+ composed = compose_middleware (middleware , handler )
59+
60+ ctx = HttpContext (response = HttpResponse (), request = None )
61+ result = await composed (ctx )
62+ assert result .res .status == 401
63+
4964 def test_start_with_one_handler (self ):
5065 mock_server_constructor = Mock ()
5166 mock_server = Object ()
@@ -94,7 +109,7 @@ def test_start_starts_event_loop(self):
94109 mock_run .return_value = mock_run_coroutine
95110
96111 with patch ("nitric.faas.compose_middleware" , mock_compose ):
97- with patch ("nitric.faas.FunctionServer.run " , mock_run ):
112+ with patch ("nitric.faas.FunctionServer._run " , mock_run ):
98113 with patch ("asyncio.run" , mock_asyncio_run ):
99114 FunctionServer ().start (mock_handler )
100115
@@ -124,7 +139,7 @@ async def mock_stream(self, request_iterator):
124139 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
125140 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
126141 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
127- await FunctionServer ().http (mock_handler ).run ()
142+ await FunctionServer ().http (mock_handler )._run ()
128143
129144 # gRPC channel created
130145 mock_grpc_channel .assert_called_once ()
@@ -165,7 +180,7 @@ async def mock_stream(self, request_iterator):
165180 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
166181 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
167182 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
168- await FunctionServer ().http (mock_http_handler ).event (mock_event_handler ).run ()
183+ await FunctionServer ().http (mock_http_handler ).event (mock_event_handler )._run ()
169184
170185 # accept the init response from server
171186 assert 1 == stream_calls
@@ -200,7 +215,7 @@ async def mock_stream(self, request_iterator):
200215 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
201216 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
202217 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
203- await FunctionServer ().http (mock_http_handler ).event (mock_event_handler ).run ()
218+ await FunctionServer ().http (mock_http_handler ).event (mock_event_handler )._run ()
204219
205220 # accept the init response from server
206221 assert 1 == stream_calls
@@ -235,7 +250,7 @@ async def mock_stream(self, request_iterator):
235250 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
236251 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
237252 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
238- await FunctionServer ().http (mock_http_handler ).event (mock_event_handler ).run ()
253+ await FunctionServer ().http (mock_http_handler ).event (mock_event_handler )._run ()
239254
240255 # accept the init response from server
241256 assert 1 == stream_calls
@@ -270,7 +285,7 @@ async def mock_stream(self, request_iterator):
270285 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
271286 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
272287 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
273- await FunctionServer ().http (mock_http_handler ).event (mock_event_handler ).run ()
288+ await FunctionServer ().http (mock_http_handler ).event (mock_event_handler )._run ()
274289
275290 # accept the init response from server
276291 assert 1 == stream_calls
@@ -305,7 +320,7 @@ async def mock_stream(self, request_iterator):
305320 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
306321 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
307322 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
308- await FunctionServer ().http (mock_http_handler ).event (mock_event_handler ).run ()
323+ await FunctionServer ().http (mock_http_handler ).event (mock_event_handler )._run ()
309324
310325 # accept the init response from server
311326 assert 1 == stream_calls
@@ -334,7 +349,7 @@ async def mock_stream(self, request_iterator):
334349 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
335350 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
336351 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
337- await FunctionServer ().event (mock_handler ).run ()
352+ await FunctionServer ().event (mock_handler )._run ()
338353
339354 # accept the trigger response from server
340355 assert 1 == stream_calls
@@ -373,7 +388,7 @@ async def mock_stream(self, request_iterator):
373388 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
374389 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
375390 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
376- await FunctionServer ().http (mock_handler ).run ()
391+ await FunctionServer ().http (mock_handler )._run ()
377392
378393 # accept the trigger response from server
379394 assert 1 == stream_calls
@@ -414,7 +429,7 @@ async def mock_stream(self, request_iterator):
414429 with patch ("nitric.faas.AsyncChannel" , mock_async_channel_init ), patch (
415430 "nitricapi.nitric.faas.v1.FaasServiceStub.trigger_stream" , mock_stream
416431 ), patch ("nitric.faas.new_default_channel" , mock_grpc_channel ):
417- await FunctionServer ().http (mock_handler ).run ()
432+ await FunctionServer ().http (mock_handler )._run ()
418433
419434 # accept the trigger response from server
420435 assert 1 == stream_calls
0 commit comments