1- from fastapi import APIRouter , Depends
2- from ..middleware .auth_middleware import require_auth , require_roles , require_user_id
1+ from fastapi import APIRouter , Depends , Request
2+ from ..middleware .auth_middleware import require_auth , require_roles , require_user_id , get_token_from_header
3+ from ..middleware .firebase_auth_middleware import require_roles as firebase_require_roles
34from ..schemas .user import UserRole
45
56router = APIRouter (prefix = "/test" , tags = ["test" ])
1112# """Test endpoint requiring just authentication"""
1213# return {"message": "You are authenticated!"}
1314
14- # Role-based tests
15- @router .get ("/admin-only" )
16- @require_roles ({UserRole .ADMIN })
17- async def test_admin_only ():
18- """Test endpoint requiring admin role"""
19- return {"message" : "You are an admin!" }
15+ # Basic Firebase middleware test
16+ @router .get ("/auth-middleware" )
17+ async def test_firebase_middleware (request : Request ):
18+ """Test endpoint to verify Firebase middleware is working"""
19+ return {
20+ "message" : "Firebase auth successful" ,
21+ "user_id" : request .state .user_id ,
22+ "claims" : request .state .user_claims
23+ }
2024
21- @router .get ("/volunteer-or-admin" )
22- @require_roles ({UserRole .VOLUNTEER , UserRole .ADMIN })
23- async def test_volunteer_or_admin ():
24- """Test endpoint requiring volunteer or admin role"""
25- return {"message" : "You are a volunteer or admin!" }
26-
27- @router .get ("/participant-only" )
28- @require_roles ({UserRole .PARTICIPANT })
29- async def test_participant_only ():
30- """Test endpoint requiring participant role"""
31- return {"message" : "You are a participant!" }
32-
33- # User-specific tests
34- @router .get ("/users/{user_id}/profile" )
35- @require_user_id ()
36- async def test_user_specific (user_id : str ):
37- """Test endpoint requiring specific user access"""
38- return {"message" : f"You can access user { user_id } 's profile!" }
39-
40- # Combined tests
41- @router .get ("/users/{user_id}/admin-action" )
42- @require_roles ({UserRole .ADMIN })
43- @require_user_id ()
44- async def test_admin_user_specific (user_id : str ):
45- """Test endpoint requiring both admin role and specific user access"""
46- return {"message" : f"You are an admin accessing user { user_id } 's data!" }
25+ # Test user context middleware
26+ @router .get ("/context" )
27+ async def test_context (request : Request ):
28+ """Test endpoint to verify user context middleware"""
29+ try :
30+ return {
31+ "request_id" : request .state .request_id ,
32+ "timestamp" : request .state .request_timestamp ,
33+ }
34+ except Exception as e :
35+ return {
36+ "error" : str (e )
37+ }
0 commit comments