|
|
@ -2,7 +2,7 @@ from contextlib import asynccontextmanager |
|
|
|
from typing import AsyncGenerator, Dict |
|
|
|
|
|
|
|
import pytest |
|
|
|
from fastapi import APIRouter, FastAPI |
|
|
|
from fastapi import APIRouter, FastAPI, Request |
|
|
|
from fastapi.testclient import TestClient |
|
|
|
from pydantic import BaseModel |
|
|
|
|
|
|
@ -112,19 +112,19 @@ def test_router_nested_lifespan_state(state: State) -> None: |
|
|
|
@asynccontextmanager |
|
|
|
async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: |
|
|
|
state.app_startup = True |
|
|
|
yield |
|
|
|
yield {"app": True} |
|
|
|
state.app_shutdown = True |
|
|
|
|
|
|
|
@asynccontextmanager |
|
|
|
async def router_lifespan(app: FastAPI) -> AsyncGenerator[None, None]: |
|
|
|
state.router_startup = True |
|
|
|
yield |
|
|
|
yield {"router": True} |
|
|
|
state.router_shutdown = True |
|
|
|
|
|
|
|
@asynccontextmanager |
|
|
|
async def subrouter_lifespan(app: FastAPI) -> AsyncGenerator[None, None]: |
|
|
|
state.sub_router_startup = True |
|
|
|
yield |
|
|
|
yield {"sub_router": True} |
|
|
|
state.sub_router_shutdown = True |
|
|
|
|
|
|
|
sub_router = APIRouter(lifespan=subrouter_lifespan) |
|
|
@ -136,7 +136,10 @@ def test_router_nested_lifespan_state(state: State) -> None: |
|
|
|
app.include_router(router) |
|
|
|
|
|
|
|
@app.get("/") |
|
|
|
def main() -> Dict[str, str]: |
|
|
|
def main(request: Request) -> Dict[str, str]: |
|
|
|
assert request.state.app |
|
|
|
assert request.state.router |
|
|
|
assert request.state.sub_router |
|
|
|
return {"message": "Hello World"} |
|
|
|
|
|
|
|
assert state.app_startup is False |
|
|
|