-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #13 from f-lab-edu/feature/9-check-email-code
[#9] 인증번호 확인 API 구현
- Loading branch information
Showing
6 changed files
with
126 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 21 additions & 0 deletions
21
src/main/java/com/kboticketing/kboticketing/dto/VerificationCodeDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.kboticketing.kboticketing.dto; | ||
|
||
import jakarta.validation.constraints.Email; | ||
import jakarta.validation.constraints.NotBlank; | ||
import lombok.Getter; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
/** | ||
* @author hazel | ||
*/ | ||
@Getter | ||
@RequiredArgsConstructor | ||
public class VerificationCodeDto { | ||
|
||
@NotBlank(message = "이메일을 입력해주세요.") | ||
@Email(message = "이메일 형식이 아닙니다.") | ||
private final String email; | ||
|
||
@NotBlank(message = "인증번호를 입력해주세요.") | ||
private final String verificationCode; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,7 @@ | |
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.kboticketing.kboticketing.dto.EmailRequestDto; | ||
import com.kboticketing.kboticketing.dto.UserDto; | ||
import com.kboticketing.kboticketing.dto.VerificationCodeDto; | ||
import com.kboticketing.kboticketing.service.UserService; | ||
import com.kboticketing.kboticketing.utils.exception.CustomException; | ||
import com.kboticketing.kboticketing.utils.exception.ErrorCode; | ||
|
@@ -112,7 +113,7 @@ void sendVerificationEmailInputTest() throws Exception { | |
} | ||
|
||
@Test | ||
@DisplayName("[FAIL] 이메일 유효성 검증 태스트") | ||
@DisplayName("[FAIL] 이메일 유효성 검증 테스트") | ||
void sendVerificationEmailValidTest() throws Exception { | ||
|
||
//given | ||
|
@@ -125,4 +126,37 @@ void sendVerificationEmailValidTest() throws Exception { | |
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isBadRequest()); | ||
} | ||
|
||
@Test | ||
@DisplayName("[SUCCESS] 인증번호 확인 테스트") | ||
void checkVerificationCodeTest() throws Exception { | ||
|
||
//given | ||
VerificationCodeDto verificationCodeDto = new VerificationCodeDto("[email protected]", | ||
"123123"); | ||
String json = new ObjectMapper().writeValueAsString(verificationCodeDto); | ||
|
||
//when, then | ||
mockMvc.perform(post("/verification-code-validation") | ||
.content(json) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isOk()); | ||
} | ||
|
||
|
||
@Test | ||
@DisplayName("[FAIL] 인증번호 미입력 테스트") | ||
public void checkVerificationCodeValidationTest() throws Exception { | ||
|
||
//given | ||
VerificationCodeDto verificationCodeDto = new VerificationCodeDto("[email protected]", | ||
""); | ||
String json = new ObjectMapper().writeValueAsString(verificationCodeDto); | ||
|
||
//when, then | ||
mockMvc.perform(post("/verification-code-validation") | ||
.content(json) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isBadRequest()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,7 @@ | |
import com.kboticketing.kboticketing.domain.User; | ||
import com.kboticketing.kboticketing.dto.EmailRequestDto; | ||
import com.kboticketing.kboticketing.dto.UserDto; | ||
import com.kboticketing.kboticketing.dto.VerificationCodeDto; | ||
import com.kboticketing.kboticketing.utils.EmailUtils; | ||
import com.kboticketing.kboticketing.utils.enums.Role; | ||
import com.kboticketing.kboticketing.utils.exception.CustomException; | ||
|
@@ -18,7 +19,6 @@ | |
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.extension.ExtendWith; | ||
import org.mockito.BDDMockito; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.junit.jupiter.MockitoExtension; | ||
|
@@ -49,6 +49,7 @@ public void signUpSuccessTest() { | |
// given | ||
UserDto userDto = new UserDto("홍길동", "[email protected]", "123123", "123123", "123123"); | ||
given(userMapper.selectByEmail(any())).willReturn(null); | ||
given(redisTemplate.hasKey(anyString())).willReturn(true); | ||
|
||
//when, then : 아무런 예외를 던지지 않음. | ||
assertDoesNotThrow(() -> userService.signUp(userDto)); | ||
|
@@ -60,6 +61,7 @@ public void signUpPasswordMismatchTest() { | |
|
||
//given | ||
UserDto userDto = new UserDto("홍길동", "[email protected]", "123123", "123123", "000000"); | ||
given(redisTemplate.hasKey(anyString())).willReturn(true); | ||
|
||
// when | ||
CustomException customException = assertThrows(CustomException.class, () -> { | ||
|
@@ -77,8 +79,8 @@ public void signUpEmailCheckTest() { | |
//given | ||
UserDto userDto = new UserDto("홍길동", "[email protected]", "123123", "123123", "123123"); | ||
User user = new User("홍길동", "[email protected]", "123123", Role.USER, LocalDateTime.now()); | ||
BDDMockito.given(userMapper.selectByEmail(userDto.getEmail())) | ||
.willReturn(user); | ||
given(userMapper.selectByEmail(userDto.getEmail())).willReturn(user); | ||
given(redisTemplate.hasKey(anyString())).willReturn(true); | ||
|
||
//when | ||
CustomException customException = assertThrows(CustomException.class, () -> { | ||
|
@@ -123,6 +125,43 @@ public void sendVerificationAgainFailTest() { | |
assertThat(customException.getErrorCode()).isEqualTo( | ||
ErrorCode.FREQUENT_VERIFICATION_REQUEST); | ||
} | ||
|
||
@Test | ||
@DisplayName("[SUCCESS] 인증번호 확인 테스트") | ||
public void checkVerificationCodeTest() { | ||
|
||
//given | ||
VerificationCodeDto verificationCodeDto = new VerificationCodeDto("[email protected]", | ||
"123456"); | ||
given(redisTemplate.hasKey(anyString())).willReturn(true); | ||
given(redisTemplate.opsForValue()).willReturn(valueOperations); | ||
given(redisTemplate.opsForValue() | ||
.get(verificationCodeDto.getEmail())).willReturn("123456"); | ||
|
||
//when,then | ||
assertDoesNotThrow(() -> userService.checkVerificationCode(verificationCodeDto)); | ||
} | ||
|
||
@Test | ||
@DisplayName("[FAIL] 인증번호 불일치 테스트") | ||
public void checkVerificationCodeWrongTest() { | ||
|
||
//given | ||
VerificationCodeDto verificationCodeDto = new VerificationCodeDto("[email protected]", | ||
"123456"); | ||
given(redisTemplate.hasKey(anyString())).willReturn(true); | ||
given(redisTemplate.opsForValue()).willReturn(valueOperations); | ||
given(redisTemplate.opsForValue() | ||
.get(verificationCodeDto.getEmail())).willReturn("999999"); | ||
|
||
//when | ||
CustomException customException = assertThrows(CustomException.class, () -> { | ||
userService.checkVerificationCode(verificationCodeDto); | ||
}); | ||
|
||
//then | ||
assertThat(customException.getErrorCode()).isEqualTo(ErrorCode.WRONG_VERIFICATION_CODE); | ||
} | ||
} | ||
|
||
|
||
|