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

✏️ 회원가입 API 개선 (+ Domain Service Runtime 예외 발생 제거) #24

Merged
merged 30 commits into from
Mar 28, 2024
Merged
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a068151
feat: sign up dto -> phone verification dto from 메서드 추가
psychology50 Mar 27, 2024
46a7f94
fix: helper 클래스 책임과 역할 분리
psychology50 Mar 27, 2024
b9201ba
rename: user sync helper 메서드명 명시적으로 수정
psychology50 Mar 27, 2024
e2c68ec
fix: sign up dto password 암호화 후 entity 생성
psychology50 Mar 27, 2024
213d549
fix: 일반 회원가입, 로그인 시나리오 helper 클래스 분리
psychology50 Mar 27, 2024
3d246a8
fix: 일반 회원가입, oauth 계정 연동 시나리오에 맞게 dto 분리 후 info 클래스로 통합
psychology50 Mar 27, 2024
1a6c61b
fix: oauth 연동 dto -> phone, code 필드 추가
psychology50 Mar 27, 2024
1832507
fix: sign up api 회원가입 요청 인자 수정
psychology50 Mar 27, 2024
544c71c
fix: 서명 헬퍼 클래스 매개변수 수정
psychology50 Mar 27, 2024
a56c837
feat: user domain 비밀번호 업데이트 메서드 추가
psychology50 Mar 27, 2024
988004a
fix: dto에서 유저 생성 시, password update at 갱신
psychology50 Mar 27, 2024
d087f89
feat: 일반 회원가입 도우미 메서드 분기 처리
psychology50 Mar 27, 2024
10ec483
rename: helper, mapper 클래스 재지정
psychology50 Mar 27, 2024
d3128dd
fix: 전화번호 요청 코드 정적 메서드 매개변수 타입 변경
psychology50 Mar 27, 2024
18f2dc1
rename: user general sign mapper 메서드 create -> save(생성 혹은 수정 기능)
psychology50 Mar 27, 2024
2ceae9d
fix: sync with oauth dto의 to info 메서드 인자 제거
psychology50 Mar 27, 2024
dcb6339
feat: 기존 소셜 계정 연동 api 추가 && 인증 응답 생성 도우미 메서드 분리
psychology50 Mar 27, 2024
850fdc0
feat: 회원가입 시나리오 개선
psychology50 Mar 27, 2024
849a4eb
test: user sync mapper test 변경 사항 반영
psychology50 Mar 27, 2024
a483fa9
test: auth controller validation test 변경 사항 반영
psychology50 Mar 27, 2024
ef3e5c1
test: user general sign mapper test 분리
psychology50 Mar 27, 2024
e426551
fix: domain service layer 예외 처리 제거
psychology50 Mar 27, 2024
431362f
refactor: user sync mapper 예외 처리 로직 수정
psychology50 Mar 27, 2024
d2856fd
refactor: user details service imple 예외 처리 로직 수정
psychology50 Mar 27, 2024
948eb58
refactor: user general sign mapper 예외 처리 로직 수정
psychology50 Mar 27, 2024
f8bcdc0
refactor: user sync mapper에서 비검사 예외 발생 제거
psychology50 Mar 27, 2024
ecc5706
fix: user sync mapper 선언적 transaction 추가
psychology50 Mar 27, 2024
43ebba0
refactor: auth use case 비검사 예외 핸들링 제거
psychology50 Mar 27, 2024
c3dc075
test: test optional 반환 적용
psychology50 Mar 27, 2024
0999091
rename: user sync mapper 주석 수정
psychology50 Mar 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: user general sign mapper test 분리
psychology50 committed Mar 27, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit ef3e5c10aed7aeac2873235ee9d7a6ca2051fdcc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package kr.co.pennyway.api.apis.auth.mapper;

import kr.co.pennyway.domain.domains.user.domain.User;
import kr.co.pennyway.domain.domains.user.exception.UserErrorCode;
import kr.co.pennyway.domain.domains.user.exception.UserErrorException;
import kr.co.pennyway.domain.domains.user.service.UserService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.security.crypto.password.PasswordEncoder;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.BDDMockito.given;

@ExtendWith(MockitoExtension.class)
public class UserGeneralSignMapperTest {
private UserGeneralSignMapper userGeneralSignMapper;
@Mock
private UserService userService;
@Mock
private PasswordEncoder passwordEncoder;

@BeforeEach
void setUp() {
userGeneralSignMapper = new UserGeneralSignMapper(userService, passwordEncoder);
}

@DisplayName("로그인 시, 유저가 존재하고 비밀번호가 일치하면 User를 반환한다.")
@Test
void readUserIfValidReturnUser() {
// given
User user = User.builder().username("pennyway").password("password").build();
given(userService.readUserByUsername("pennyway")).willReturn(user);
given(passwordEncoder.matches("password", user.getPassword())).willReturn(true);

// when
User result = userGeneralSignMapper.readUserIfValid("pennyway", "password");

// then
assertEquals(result, user);
}

@DisplayName("로그인 시, username에 해당하는 유저가 존재하지 않으면 UserErrorException을 발생시킨다.")
@Test
void readUserIfNotFound() {
// given
given(userService.readUserByUsername("pennyway")).willThrow(
new UserErrorException(UserErrorCode.NOT_FOUND));

// when - then
UserErrorException exception = assertThrows(UserErrorException.class, () -> userGeneralSignMapper.readUserIfValid("pennyway", "password"));
System.out.println(exception.getExplainError());
}

@DisplayName("로그인 시, 비밀번호가 일치하지 않으면 UserErrorException을 발생시킨다.")
@Test
void readUserIfNotMatchedPassword() {
// given
User user = User.builder().username("pennyway").password("password").build();
given(userService.readUserByUsername("pennyway")).willReturn(user);
given(passwordEncoder.matches("password", user.getPassword())).willReturn(false);

// when - then
UserErrorException exception = assertThrows(UserErrorException.class, () -> userGeneralSignMapper.readUserIfValid("pennyway", "password"));
System.out.println(exception.getExplainError());
}
}