Files
bakery-ia/gateway/test_routing_behavior.py

62 lines
2.1 KiB
Python
Raw Normal View History

2026-01-15 20:45:49 +01:00
#!/usr/bin/env python3
"""
Test script to understand FastAPI routing behavior with different prefix configurations.
"""
from fastapi import FastAPI, APIRouter, Request
from fastapi.responses import JSONResponse
# Test 1: Router with prefix="" and full path in route
router1 = APIRouter()
@router1.post("/api/v1/webhooks/stripe")
async def webhook_stripe_v1(request: Request):
return {"message": "webhook_stripe_v1"}
# Test 2: Router with prefix="" and relative path in route
router2 = APIRouter()
@router2.post("/webhooks/stripe")
async def webhook_stripe_v2(request: Request):
return {"message": "webhook_stripe_v2"}
# Test 3: Router with prefix="/api/v1" and relative path in route
router3 = APIRouter()
@router3.post("/webhooks/stripe")
async def webhook_stripe_v3(request: Request):
return {"message": "webhook_stripe_v3"}
# Create test apps
app1 = FastAPI()
app1.include_router(router1, prefix="")
app2 = FastAPI()
app2.include_router(router2, prefix="")
app3 = FastAPI()
app3.include_router(router3, prefix="/api/v1")
print("Testing routing behavior...")
print()
# Test each configuration
from fastapi.testclient import TestClient
client1 = TestClient(app1)
response1 = client1.post("/api/v1/webhooks/stripe")
print(f"Test 1 (prefix='', full path): {response1.status_code} - {response1.json() if response1.status_code == 200 else 'Not found'}")
client2 = TestClient(app2)
response2 = client2.post("/api/v1/webhooks/stripe")
print(f"Test 2 (prefix='', relative path): {response2.status_code} - {response2.json() if response2.status_code == 200 else 'Not found'}")
client3 = TestClient(app3)
response3 = client3.post("/api/v1/webhooks/stripe")
print(f"Test 3 (prefix='/api/v1', relative path): {response3.status_code} - {response3.json() if response3.status_code == 200 else 'Not found'}")
print()
print("Analysis:")
print("- Test 1 should work: prefix='' + full path '/api/v1/webhooks/stripe' = '/api/v1/webhooks/stripe'")
print("- Test 2 should NOT work: prefix='' + relative path '/webhooks/stripe' = '/webhooks/stripe' (not '/api/v1/webhooks/stripe')")
print("- Test 3 should work: prefix='/api/v1' + relative path '/webhooks/stripe' = '/api/v1/webhooks/stripe'")