Coverage for backend / app / demo / routers.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-17 21:34 +0000

1"""Demo cleanup endpoint.""" 

2 

3from fastapi import APIRouter, Depends, HTTPException, status 

4from sqlalchemy.orm import Session 

5 

6from app import models, database, base_schemas 

7from app.core.oauth2 import get_current_user 

8from app.demo.seed import delete_user 

9 

10demo_router = APIRouter(prefix="/demo", tags=["Demo"]) 

11 

12 

13@demo_router.post("/cleanup", status_code=status.HTTP_200_OK, response_model=base_schemas.GenericResponse) 

14def demo_cleanup( 

15 current_user: models.User = Depends(get_current_user), 

16 db: Session = Depends(database.get_db), 

17) -> dict: 

18 """Clean up a demo user and all their data. 

19 Only accessible by demo users. 

20 :param current_user: The current authenticated demo user 

21 :param db: The database session (demo schema) 

22 :returns: Success response""" 

23 

24 if not current_user.is_demo: 

25 raise HTTPException( 

26 status_code=status.HTTP_403_FORBIDDEN, 

27 detail="This endpoint is only available for demo users.", 

28 ) 

29 

30 delete_user(db, current_user.id) 

31 return dict(success=True, message="Demo data cleaned up successfully.")