Esempio n. 1
0
async def test_app_add_remove_middleware():
    app = Baguette()

    @app.route("/short")
    async def short():
        return ""

    @app.route("/long")
    async def long():
        await asyncio.sleep(0.2)
        return ""

    assert len(app.middlewares) == 2
    app.add_middleware(TimingMiddleware)
    assert len(app.middlewares) == 3

    request = create_test_request(path="/short")
    response = await app.handle_request(request)
    assert "X-time" in response.headers
    short_time = float(response.headers["X-time"])

    request = create_test_request(path="/long")
    response = await app.handle_request(request)
    assert "X-time" in response.headers
    long_time = float(response.headers["X-time"])

    assert short_time < long_time

    app.remove_middleware(TimingMiddleware)
    assert len(app.middlewares) == 2
Esempio n. 2
0
async def test_app_middleware():
    app = Baguette()

    @app.route("/short")
    async def short():
        return ""

    @app.route("/long")
    async def long():
        await asyncio.sleep(0.2)
        return ""

    assert len(app.middlewares) == 2

    @app.middleware()
    class TimingMiddleware(Middleware):
        async def __call__(self, request: Request):
            start_time = time.perf_counter()
            response = await self.next(request)
            response.headers["X-time"] = str(time.perf_counter() - start_time)
            return response

    assert len(app.middlewares) == 3

    @app.middleware()
    async def timing_middleware(next_middleware, request: Request):
        start_time = time.time()
        response = await next_middleware(request)
        process_time = time.time() - start_time
        response.headers["X-time"] = str(process_time)
        return response

    assert len(app.middlewares) == 4

    request = create_test_request(path="/short")
    response = await app.handle_request(request)
    assert "X-time" in response.headers
    short_time = float(response.headers["X-time"])

    request = create_test_request(path="/long")
    response = await app.handle_request(request)
    assert "X-time" in response.headers
    long_time = float(response.headers["X-time"])

    assert short_time < long_time

    app.remove_middleware(timing_middleware)
    app.remove_middleware(TimingMiddleware)
    assert len(app.middlewares) == 2