Skip to content

Commit

Permalink
馃悰 Fix support for prefix on APIRouter WebSockets (tiangolo#2640)
Browse files Browse the repository at this point in the history
Co-authored-by: Sebasti谩n Ram铆rez <tiangolo@gmail.com>
  • Loading branch information
2 people authored and JeanArhancet committed Aug 20, 2022
1 parent e7ccb1b commit 64069e1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion fastapi/routing.py
Expand Up @@ -649,7 +649,7 @@ def add_api_websocket_route(
self, path: str, endpoint: Callable[..., Any], name: Optional[str] = None
) -> None:
route = APIWebSocketRoute(
path,
self.prefix + path,
endpoint=endpoint,
name=name,
dependency_overrides_provider=self.dependency_overrides_provider,
Expand Down
16 changes: 16 additions & 0 deletions tests/test_ws_router.py
Expand Up @@ -3,6 +3,7 @@

router = APIRouter()
prefix_router = APIRouter()
native_prefix_route = APIRouter(prefix="/native")
app = FastAPI()


Expand Down Expand Up @@ -47,8 +48,16 @@ async def router_ws_decorator_depends(
await websocket.close()


@native_prefix_route.websocket("/")
async def router_native_prefix_ws(websocket: WebSocket):
await websocket.accept()
await websocket.send_text("Hello, router with native prefix!")
await websocket.close()


app.include_router(router)
app.include_router(prefix_router, prefix="/prefix")
app.include_router(native_prefix_route)


def test_app():
Expand All @@ -72,6 +81,13 @@ def test_prefix_router():
assert data == "Hello, router with prefix!"


def test_native_prefix_router():
client = TestClient(app)
with client.websocket_connect("/native/") as websocket:
data = websocket.receive_text()
assert data == "Hello, router with native prefix!"


def test_router2():
client = TestClient(app)
with client.websocket_connect("/router2") as websocket:
Expand Down

0 comments on commit 64069e1

Please sign in to comment.