From 08723ef26978ed635036e360d92477faa5d900db Mon Sep 17 00:00:00 2001 From: wrathlion Date: Mon, 9 Sep 2024 02:49:28 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix:=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=99=84=EB=A3=8C=20=EC=8B=9C=20=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A1=9C=20=EB=A6=AC=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EB=A0=89=ED=8A=B8=20=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ 카카오 로그인/회원가입 구현 (#3) * Style: codeStyle 추가 * Feat: Member, Profile Entity, MemberRepository 추가 + MemberRepositoryTest 추가 Related to: #1 * Feat: 카카오 로그인, 회원가입 기능 추가 - 권한 필요한 API 접속 시 카카오 로그인 페이지 반환 - 로그인 성공 시 가입이 안되어있으면 가입, 되어있으면 권한 부여 - 권한은 JWT 발급 후 쿠키에 추가, 매 요청마다 JwtFilter를 거치며 쿠키의 Jwt 확 Related to: #1 * Style: 코드 포맷, 비밀번호 노출 등 수정 Related to: #1 * ✨ /api/auth/member API 기능 추가 (#4) * Feat: Member DB 수정 - 한글이름, 영어이름, 기수, 과정 추가 - 과정 표현하는 Enumerate 추가 - 수정에 따른 오류 수정 - getNickname -> getKoreaName of getEnglishName Related to: #2 * Rename: Member DB Field 이름 변경 Related to: #2 * Feat: /api/auth/member 관련 DTO 작성 Related to: #2 * Feat: /api/auth/member API 관련 DTO 내용 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberService 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberContoller 추가 Related to: #2 * Feat: CORS Error 수정 Related to: #2 * Fix: RefreshToken 매번 생성 오류 수정 Related to: #2 * Refactor: 코드 리뷰 내용 반영 - 불필요 코드 삭제 - 반환값 오류 수정 Related to: #2 * Chore: DB를 MariaDB -> H2로 변경 Ralted to: #5 * Test: Test용 application 추가 Related to: #5 * 🐛 Fix: 로그인 완료 시 메인 페이지로 리다이렉트 되도록 수정 (#7) * Feat: Member DB 수정 - 한글이름, 영어이름, 기수, 과정 추가 - 과정 표현하는 Enumerate 추가 - 수정에 따른 오류 수정 - getNickname -> getKoreaName of getEnglishName Related to: #2 * Rename: Member DB Field 이름 변경 Related to: #2 * Feat: /api/auth/member 관련 DTO 작성 Related to: #2 * Feat: /api/auth/member API 관련 DTO 내용 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberService 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberContoller 추가 Related to: #2 * Feat: CORS Error 수정 Related to: #2 * Fix: RefreshToken 매번 생성 오류 수정 Related to: #2 * Refactor: 코드 리뷰 내용 반영 - 불필요 코드 삭제 - 반환값 오류 수정 Related to: #2 * Test: MemberRepository Test 코드 추가 Related to: #2 * Chore: Test용 application yml 추가 Related to: #2 * 카카오 회원가입/로그인, /api/auth/member API 기능 추가 (#6) * ✨ 카카오 로그인/회원가입 구현 (#3) * Style: codeStyle 추가 * Feat: Member, Profile Entity, MemberRepository 추가 + MemberRepositoryTest 추가 Related to: #1 * Feat: 카카오 로그인, 회원가입 기능 추가 - 권한 필요한 API 접속 시 카카오 로그인 페이지 반환 - 로그인 성공 시 가입이 안되어있으면 가입, 되어있으면 권한 부여 - 권한은 JWT 발급 후 쿠키에 추가, 매 요청마다 JwtFilter를 거치며 쿠키의 Jwt 확 Related to: #1 * Style: 코드 포맷, 비밀번호 노출 등 수정 Related to: #1 * ✨ /api/auth/member API 기능 추가 (#4) * Feat: Member DB 수정 - 한글이름, 영어이름, 기수, 과정 추가 - 과정 표현하는 Enumerate 추가 - 수정에 따른 오류 수정 - getNickname -> getKoreaName of getEnglishName Related to: #2 * Rename: Member DB Field 이름 변경 Related to: #2 * Feat: /api/auth/member 관련 DTO 작성 Related to: #2 * Feat: /api/auth/member API 관련 DTO 내용 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberService 추가 Related to: #2 * Feat: /api/auth/member 관련 MemberContoller 추가 Related to: #2 * Feat: CORS Error 수정 Related to: #2 * Fix: RefreshToken 매번 생성 오류 수정 Related to: #2 * Refactor: 코드 리뷰 내용 반영 - 불필요 코드 삭제 - 반환값 오류 수정 Related to: #2 * Chore: DB를 MariaDB -> H2로 변경 Ralted to: #5 * Test: Test용 application 추가 Related to: #5 * Feat: 깃허브 액션 작성 Related to: #5 * Feat: 도커 파일 작성 Related to: #5 * Feat: 테스트용 도커 컴포즈 파일 작성 Related to: #5 * Refactor: import 추가 * Fix: 깃허브 액션 오타 수정 Related to: #5 * Feat: SSL 적용 * Fix: SSL 수정 * Fix: SSL 수정 스크립트 수정 * Fix: SSL 스크립트 수정 * Fix: SSL 스크립트 수정 * Feat: 카카오 로그인 완료 시 메인 페이지로 redirect Related to: #1 --------- Co-authored-by: 박지혁 --------- Co-authored-by: 박지혁 --- .gitignore | 1 + .../repository/MemberRepositoryTest.java | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/.gitignore b/.gitignore index df991c9..6ed1871 100644 --- a/.gitignore +++ b/.gitignore @@ -174,6 +174,7 @@ gradle-app.setting # Java heap dump *.hprof + # End of https://www.toptal.com/developers/gitignore/api/java,gradle,macos,intellij+allauth.yml oauth.yml database.yml diff --git a/src/test/java/kaboo/kaboo_auth/repository/MemberRepositoryTest.java b/src/test/java/kaboo/kaboo_auth/repository/MemberRepositoryTest.java index 8142fd9..f436968 100644 --- a/src/test/java/kaboo/kaboo_auth/repository/MemberRepositoryTest.java +++ b/src/test/java/kaboo/kaboo_auth/repository/MemberRepositoryTest.java @@ -2,6 +2,8 @@ import static org.junit.jupiter.api.Assertions.*; +import java.util.Arrays; +import java.util.List; import java.util.Optional; import org.junit.jupiter.api.DisplayName; @@ -11,6 +13,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import kaboo.kaboo_auth.domain.Course; import kaboo.kaboo_auth.domain.entity.Member; @DataJpaTest @@ -60,4 +63,66 @@ void findByUsername_Failure() { // Then assertEquals(result, Optional.empty()); } + + @Test + @DisplayName("DB에 존재하는 classNum 찾을 때 findByClassNum method 테스트") + void findByClassNum_Success() { + // Given + Member member1 = Member.builder().englishName("Alice").classNum(1).build(); + Member member2 = Member.builder().englishName("Bob").classNum(1).build(); + + memberRepository.save(member1); + memberRepository.save(member2); + + List expectedMembers = Arrays.asList(member1, member2); + + // When + List byClassNum = memberRepository.findByClassNum(1); + + // Then + assertEquals(byClassNum.size(), 2, "리스트의 크기가 다릅니다."); + assertTrue(byClassNum.containsAll(expectedMembers), "리스트에 모든 멤버가 포함되어 있지 않습니다."); + } + + @Test + @DisplayName("DB에 존재하지 않는 classNum 찾을 때 findByClassNum method 테스트") + void findByClassNum_Failure() { + // Given + + // When + List byClassNum = memberRepository.findByClassNum(1); + + // Then + assertEquals(byClassNum.size(), 0); + } + + @Test + @DisplayName("findByKoreaName 성공 테스트") + void findByKoreaName_Success() { + // Given + Member member = Member.builder() + .koreaName("홍길동") + .classNum(1) + .course(Course.AI) + .build(); + memberRepository.save(member); + + // When + Optional byKoreaName = memberRepository.findByKoreaName("홍길동"); + + // Then + assertEquals(byKoreaName.get(), member); + } + + @Test + @DisplayName("findByKoreaName 실패 테스트") + void findByKoreaName_Failure() { + // Given + + // When + Optional byKoreaName = memberRepository.findByKoreaName("홍길동"); + + // Then + assertTrue(byKoreaName.isEmpty()); + } }