O2Sound_ver2_final/backend/tests/README.md

3.1 KiB

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 테스트

테스트 실행 방법

모든 테스트 실행

cd backend
pytest tests/

특정 파일의 테스트만 실행

pytest tests/api/v1/test_auth.py

특정 테스트 함수만 실행

pytest tests/api/v1/test_auth.py::TestAuthAPI::test_login_success

테스트 커버리지 확인

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 메모리 데이터베이스를 사용하며, 각 테스트마다 깨끗한 상태에서 시작합니다.

SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:"

추가 테스트 작성 가이드

새로운 엔드포인트를 추가할 때:

  1. 해당 API 파일에 테스트 클래스 추가
  2. 성공 케이스와 실패 케이스 모두 작성
  3. Mock 객체를 활용하여 외부 의존성 제거
  4. 엣지 케이스 고려 (빈 값, 잘못된 형식 등)