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

[Feat #26] JWT 관리(저장/재발급) 및 로그아웃 API #28

Merged
merged 42 commits into from
Aug 11, 2024

Conversation

dudxo
Copy link
Collaborator

@dudxo dudxo commented Aug 10, 2024

관련 이슈

📑 작업 상세 내용

  • 로그인 시 발급 되는 RefreshToken 관리(Redis 저장)
  • 로그아웃 API
    • Redis 저장된 RefreshToken 삭제
    • 발급되어 있는 AccessToken BlackList 지정
  • AccessToken 재발급 API
    • 로그아웃 또는 만료된 Access/RefreshToken 검증
    • Access/Refresh Token 재발급
    • Redis Refresh 업데이트

💫 작업 요약

  • 로그아웃 API
  • 로그아웃 API 테스트
  • 토큰 재발급 API
  • 토큰 재발급 API 테스트

🔍 중점적으로 리뷰 할 부분

  • TokenProvider.class <-> MemberService.class에서 순환참조가 발생해서 임시방편으로 TokenProvider.class에서 MemberService가 아닌 MemberRepository를 의존하도록 변경했습니다.
  • 로그아웃/토큰 재발급 API 단위 테스트를 거의 다 Mocking해서 테스트 했는데 이게 맞는가 싶네요,, 다 가짜로 주입하면 이게 성공할 수 밖에 없는 구조아닌가 싶어요,,

@dudxo dudxo added the ✨ feat 기능 추가 label Aug 10, 2024
@dudxo dudxo self-assigned this Aug 10, 2024
@dudxo dudxo linked an issue Aug 10, 2024 that may be closed by this pull request
4 tasks
@dudxo
Copy link
Collaborator Author

dudxo commented Aug 10, 2024

헉 컨트롤러 통합 테스트를 작성 안했네요! 추가 작성해서 커밋하겠습니다,,

Copy link

github-actions bot commented Aug 10, 2024

Test Results

43 tests   37 ✅  5s ⏱️
14 suites   6 💤
14 files     0 ❌

Results for commit d40766d.

♻️ This comment has been updated with latest results.

@dudxo
Copy link
Collaborator Author

dudxo commented Aug 10, 2024

헉 컨트롤러 통합 테스트를 작성 안했네요! 추가 작성해서 커밋하겠습니다,,

커밋 완료했습니다!

@hyun2371 hyun2371 self-requested a review August 11, 2024 01:52
Copy link
Member

@hyun2371 hyun2371 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~

@hyun2371
Copy link
Member

로그아웃/토큰 재발급 API 단위 테스트를 거의 다 Mocking해서 테스트 했는데 이게 맞는가 싶네요,, 다 가짜로 주입하면 이게 성공할 수 밖에 없는 구조아닌가 싶어요,,

서비스 내부 로직이 다 호출되는지만 확인하면 되지 않을까요? 통합 테스트에서 확인해도 괜찮을 것 같습니다!!

@dudxo
Copy link
Collaborator Author

dudxo commented Aug 11, 2024

로그아웃/토큰 재발급 API 단위 테스트를 거의 다 Mocking해서 테스트 했는데 이게 맞는가 싶네요,, 다 가짜로 주입하면 이게 성공할 수 밖에 없는 구조아닌가 싶어요,,

서비스 내부 로직이 다 호출되는지만 확인하면 되지 않을까요? 통합 테스트에서 확인해도 괜찮을 것 같습니다!!

그렇겠죠? 감사합니다 ㅎㅎ

return "KAKAO";
} else if (socialEmail.contains("NAVER")) {
} else if (socialEmail.contains(Provider.NAVER.getProvider())) {
return "NAVER";
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

public static Provider fromSocialEmail(String socialEmail){
for (Provider provider : values()) {
  if (socialEmail.contains(provider.getProvider())) {
  return provider;
  }
}
throw new NotFoundException(AuthErrorCode.NOT_FOUND_PROVIDER);
}

enum 안에 함수를 넣어도 괜찮을 것 같아요!

Copy link
Collaborator Author

@dudxo dudxo Aug 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

책임 분배를 생각 못했네요! 반복문 + 조건식보다 스트림이 더 좋겠다고 생각되서 스트림 방식으로 변경했습니다~
추가적으로 Provider Test 코드도 작성했습니당

@dudxo dudxo merged commit 402f213 into dev Aug 11, 2024
3 checks passed
@dudxo dudxo deleted the feat/26/JWT-Logout branch August 11, 2024 10:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ feat 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

✨JWT 토큰 관리 및 로그아웃 API
2 participants