O2Sound_ver2_final/backend/tests/README.md

125 lines
3.1 KiB
Markdown

# 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. 엣지 케이스 고려 (빈 값, 잘못된 형식 등)