Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#3] 로그인, 회원가입 기능 개선 및 코드 리팩토링 #4

Merged
merged 8 commits into from
Sep 22, 2024

Conversation

wktls63
Copy link
Collaborator

@wktls63 wktls63 commented Sep 12, 2024

[PR 제목] 회원가입 및 로그인 예외 처리 개선

변경 사항

  • 회원가입 시 이메일 중복 및 이메일 형식에 대한 예외 처리 개선
  • 로그인 시 유효성 검증 및 예외 처리 추가
  • Pydantic의 EmailStr 필드를 사용하여 이메일 형식 검증
  • raise_http_exception 함수로 예외 처리 로직 통일
  • 테스트 케이스 수정 및 추가 (중복 이메일, 잘못된 이메일 형식, 로그인 실패 등)

변경된 파일

  • app/models.py
  • app/auth.py
  • app/main.py
  • tests/test_auth.py

변경 이유

  • 회원가입 및 로그인 과정에서 발생할 수 있는 다양한 예외 상황에 대한 구체적인 예외 처리 및 메시지 제공
  • 이메일 형식 검증과 중복 이메일 체크를 강화하여 보안성과 사용자 경험을 개선
  • 예외 처리 로직을 통일하여 코드의 가독성 및 유지보수성을 높임

체크리스트

  • Pydantic을 이용한 이메일 형식 검증
  • 중복 이메일 확인 시 적절한 예외 메시지 반환
  • 예외 처리 함수 (raise_http_exception)로 모든 HTTP 예외 처리
  • 중복 이메일, 잘못된 이메일 형식, 비밀번호 오류 시 테스트 케이스 통과
  • 기존 기능이 모두 정상적으로 작동하는지 확인

테스트 방법

  1. 가상 환경 실행: source venv/bin/activate
  2. 서버 실행: uvicorn app.main:app --reload
  3. pytest를 사용하여 테스트 실행:
    pytest
  4. 다음 사항을 테스트:
    • 회원가입 시 중복된 이메일일 경우 이미 가입된 이메일입니다. 메시지 확인
    • 잘못된 이메일 형식일 경우 올바른 이메일 주소를 입력해 주세요. 메시지 확인
    • 로그인 시 비밀번호가 잘못되었을 경우 이메일 또는 비밀번호가 잘못되었습니다. 메시지 확인

추가된 테스트

  • test_signup_duplicate_email: 이미 가입된 이메일로 회원가입 시도
  • test_signup_invalid_email_format: 잘못된 이메일 형식으로 회원가입 시도
  • test_login_invalid_credentials: 잘못된 비밀번호로 로그인 시도
  • test_login_non_existent_email: 존재하지 않는 이메일로 로그인 시도

참고 사항

  • FastAPI에서 기본적으로 Pydantic을 통한 이메일 형식 검증을 사용하도록 변경했습니다.
  • 테스트 케이스는 모두 최신 기능에 맞게 업데이트되었으며, 로컬 환경에서 성공적으로 통과했습니다.

@wktls63 wktls63 self-assigned this Sep 12, 2024
Copy link

sonarcloud bot commented Sep 22, 2024

@wktls63 wktls63 merged commit 575fa0f into main Sep 22, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant