3 changed files with 53 additions and 34 deletions
@ -1,29 +1,45 @@ |
|||||
from fastapi import FastAPI |
from fastapi import FastAPI, WebSocket, APIRouter |
||||
from fastapi.testclient import TestClient |
from fastapi.testclient import TestClient |
||||
|
|
||||
recognizing_app = FastAPI() |
app = FastAPI(ignore_trailing_slash=True) |
||||
ignoring_app = FastAPI(ignore_trailing_whitespaces=True) |
router = APIRouter() |
||||
|
|
||||
@recognizing_app.get("/example") |
@app.get("/example") |
||||
@ignoring_app.get("/example") |
async def example_endpoint(): |
||||
async def return_data(): |
return {"msg": "Example"} |
||||
return {"msg": "Reached the route!"} |
|
||||
|
|
||||
recognizing_client = TestClient(recognizing_app) |
@app.websocket("/websocket") |
||||
ignoring_client = TestClient(ignoring_app) |
async def websocket_endpoint(websocket: WebSocket): |
||||
|
await websocket.accept() |
||||
|
await websocket.send_text("Websocket") |
||||
|
await websocket.close() |
||||
|
|
||||
def test_recognizing_trailing_slash(): |
@router.get("/example") |
||||
response = recognizing_client.get("/example", follow_redirects=False) |
def route_endpoint(): |
||||
assert response.status_code == 200 |
return {"msg": "Routing Example"} |
||||
assert response.json()["msg"] == "Reached the route!" |
|
||||
response = recognizing_client.get("/example/", follow_redirects=False) |
app.include_router(router, prefix="/router") |
||||
assert response.status_code == 307 |
|
||||
assert response.headers["location"].endswith("/example") |
client = TestClient(app) |
||||
|
|
||||
def test_ignoring_trailing_slash(): |
def test_ignoring_trailing_slash(): |
||||
response = ignoring_client.get("/example", follow_redirects=False) |
response = client.get("/example", follow_redirects=False) |
||||
|
assert response.status_code == 200 |
||||
|
assert response.json()["msg"] == "Example" |
||||
|
response = client.get("/example/", follow_redirects=False) |
||||
|
assert response.status_code == 200 |
||||
|
assert response.json()["msg"] == "Example" |
||||
|
|
||||
|
def test_ignoring_trailing_shlash_ws(): |
||||
|
with client.websocket_connect("/websocket") as websocket: |
||||
|
assert websocket.receive_text() == "Websocket" |
||||
|
with client.websocket_connect("/websocket/") as websocket: |
||||
|
assert websocket.receive_text() == "Websocket" |
||||
|
|
||||
|
def test_ignoring_trailing_routing(): |
||||
|
response = client.get("router/example", follow_redirects=False) |
||||
assert response.status_code == 200 |
assert response.status_code == 200 |
||||
assert response.json()["msg"] == "Reached the route!" |
assert response.json()["msg"] == "Routing Example" |
||||
response = ignoring_client.get("/example/", follow_redirects=False) |
response = client.get("router/example/", follow_redirects=False) |
||||
assert response.status_code == 200 |
assert response.status_code == 200 |
||||
assert response.json()["msg"] == "Reached the route!" |
assert response.json()["msg"] == "Routing Example" |
||||
|
Loading…
Reference in new issue