async def test_middleware_normalization_2(): services = {"context": object(), "foo": object()} fake_request = Request("GET", b"/", None) async def middleware(context, foo): pass normalized = normalize_middleware(middleware, services) # type: ignore # NB: middlewares base signature is (request, handler) result = await normalized(fake_request, fake_handler) # type: ignore assert result == "fake-handler-result"
async def test_middleware_header_normalization(): services = {'context': object()} fake_request = Request('GET', b'/', [(b'example', b'Lorem')]) async def middleware(request, handler, example: FromHeader(str)): assert request is fake_request assert handler is fake_handler assert example == 'Lorem' return await handler(request) normalized = normalize_middleware(middleware, services) # NB: middlewares base signature is (request, handler) result = await normalized(fake_request, fake_handler) assert result == 'fake-handler-result'
async def test_middleware_normalization(): services = {'context': object()} fake_request = Request('GET', b'/', None) async def middleware(request, handler, context): assert request is fake_request assert handler is fake_handler assert context is services.get('context') return await handler(request) normalized = normalize_middleware(middleware, services) # NB: middlewares base signature is (request, handler) result = await normalized(fake_request, fake_handler) assert result == 'fake-handler-result'
async def test_middleware_header_normalization(): services = {"context": object()} fake_request = Request("GET", b"/", [(b"example", b"Lorem")]) async def middleware(request, handler, example: FromHeader[str]): assert request is fake_request assert handler is fake_handler assert example.value == "Lorem" return await handler(request) normalized = normalize_middleware(middleware, services) # NB: middlewares base signature is (request, handler) result = await normalized(fake_request, fake_handler) # type: ignore assert result == "fake-handler-result"
async def test_middleware_normalization(): services = {"context": object()} fake_request = Request("GET", b"/", None) async def middleware(request, handler, context): assert request is fake_request assert handler is fake_handler assert context is services.get("context") return await handler(request) normalized = normalize_middleware(middleware, services) # NB: middlewares base signature is (request, handler) result = await normalized(fake_request, fake_handler) # type: ignore assert result == "fake-handler-result"
async def test_middleware_normalization_no_parameters(): services = {'context': object()} fake_request = Request('GET', b'/', [(b'example', b'Lorem')]) called = False async def middleware(): nonlocal called called = True normalized = normalize_middleware(middleware, services) # NB: middlewares base signature is (request, handler) # since our middleware above does not handle the next request handler, it is called by the normalized method result = await normalized(fake_request, fake_handler) assert called assert result == 'fake-handler-result'
async def test_middleware_normalization_no_parameters(): services = {"context": object()} fake_request = Request("GET", b"/", [(b"example", b"Lorem")]) called = False async def middleware(): nonlocal called called = True normalized = normalize_middleware(middleware, services) # type: ignore # NB: middlewares base signature is (request, handler) # since our middleware above does not handle the next request handler, # it is called by the normalized method result = await normalized(fake_request, fake_handler) # type: ignore assert called assert result == "fake-handler-result"
def _normalize_middlewares(self): self.middlewares = [ normalize_middleware(middleware, self.service_provider) for middleware in self.middlewares ]
def test_middleware_not_normalized_if_signature_matches_expected_signature(): async def middleware(request, handler): return await handler(request) normalized = normalize_middleware(middleware, {}) assert normalized is middleware
async def test_middleware_normalization_raises_for_sync_function(): def faulty_middleware(request, handler): pass with pytest.raises(ValueError): normalize_middleware(faulty_middleware, Services()) # type: ignore
def _normalize_middlewares(self): self.middlewares = [ normalize_middleware(middleware, self.services) # type: ignore for middleware in self.middlewares ]