Exemple #1
0
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"
Exemple #2
0
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'
Exemple #3
0
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'
Exemple #4
0
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"
Exemple #5
0
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"
Exemple #6
0
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'
Exemple #7
0
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
     ]
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
 def _normalize_middlewares(self):
     self.middlewares = [
         normalize_middleware(middleware, self.services)  # type: ignore
         for middleware in self.middlewares
     ]