# Backend API Tests 백엔드 API 엔드포인트에 대한 테스트 스위트입니다. ## 테스트 구조 ``` tests/ ├── __init__.py ├── conftest.py # 공통 fixture 및 설정 └── api/ └── v1/ ├── __init__.py ├── test_auth.py # 인증 API 테스트 ├── test_user.py # 사용자 API 테스트 ├── test_moviemakers.py # MovieMaker API 테스트 ├── test_social.py # 소셜 로그인 API 테스트 └── test_uservideo.py # 비디오 스트리밍 API 테스트 ``` ## 테스트 실행 방법 ### 모든 테스트 실행 ```bash cd backend pytest tests/ ``` ### 특정 파일의 테스트만 실행 ```bash pytest tests/api/v1/test_auth.py ``` ### 특정 테스트 함수만 실행 ```bash pytest tests/api/v1/test_auth.py::TestAuthAPI::test_login_success ``` ### 테스트 커버리지 확인 ```bash pytest tests/ --cov=app --cov-report=html ``` ## 테스트 케이스 설명 ### 1. Auth API Tests (test_auth.py) - **회원가입 테스트** - 성공적인 회원가입 - 중복 이메일 처리 - 비밀번호 불일치 처리 - **로그인 테스트** - 성공적인 로그인 - 잘못된 인증정보 처리 - 빈 값 검증 ### 2. User API Tests (test_user.py) - **아이템 관리** - 아이템 목록 조회 - 아이템 업데이트 - 아이템 삭제 - **비디오 관리** - 비디오 목록 조회 - 비디오 삭제 - **프로필 관리** - 프로필 조회 - 프로필 업데이트 - 존재하지 않는 사용자 처리 ### 3. MovieMaker API Tests (test_moviemakers.py) - **워크플로우 시작** - 정상적인 워크플로우 시작 - 잘못된 URL 처리 - **진행상황 조회** - 진행 중인 작업 상태 확인 - 완료된 작업 확인 - 존재하지 않는 작업 처리 ### 4. Social API Tests (test_social.py) - **Google OAuth 로그인** - 로그인 URL 생성 - OAuth 콜백 처리 - 에러 처리 - **토큰 정보 조회** - 임시 토큰으로 정보 조회 - 만료된 토큰 처리 ### 5. User Video API Tests (test_uservideo.py) - **비디오 스트리밍** - 정상적인 스트리밍 - 파일이 없는 경우 처리 - URL 인코딩된 파일명 처리 - 경로 탐색 공격 방지 ## Mock 사용 테스트에서는 실제 서비스 대신 Mock 객체를 사용합니다: - `mock_auth_service`: 인증 서비스 Mock - `mock_user_service`: 사용자 서비스 Mock - `mock_video_service`: 비디오 서비스 Mock - `mock_google_service`: Google OAuth 서비스 Mock - `mock_redis_manager`: Redis 관리자 Mock ## 테스트 환경 설정 테스트는 SQLite 메모리 데이터베이스를 사용하며, 각 테스트마다 깨끗한 상태에서 시작합니다. ```python SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:" ``` ## 추가 테스트 작성 가이드 새로운 엔드포인트를 추가할 때: 1. 해당 API 파일에 테스트 클래스 추가 2. 성공 케이스와 실패 케이스 모두 작성 3. Mock 객체를 활용하여 외부 의존성 제거 4. 엣지 케이스 고려 (빈 값, 잘못된 형식 등)