Files
hou27-jwt/src/test/java/com/api/auth/service/AuthServiceTest.java
2022-06-23 20:34:16 +09:00

118 lines
3.4 KiB
Java

package com.api.auth.service;
import static org.assertj.core.api.Assertions.assertThat;
import com.api.auth.AuthService;
import com.api.auth.dtos.SignInReq;
import com.api.auth.dtos.SignUpReq;
import com.api.auth.dtos.SignUpRes;
import com.api.exception.UserNotFoundException;
import com.api.jwt.dtos.RegenerateTokenDto;
import com.api.jwt.dtos.TokenDto;
import com.api.user.UserService;
import com.api.user.domain.Users;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
@SpringBootTest
@Transactional
@DisplayName("Auth Service Test")
class AuthServiceTest {
private static final String EMAIL = "test@email.com";
private static final String PASSWORD = "12345";
private static final String NAME = "김정호";
@Autowired
private UserService userService;
@Autowired
private AuthService authService;
@Test
@DisplayName("유저 회원가입")
void signUp() {
// given
SignUpReq user = createSignUpRequest();
System.out.println("user = " + user.toString());
// when
SignUpRes signUpRes = authService.signUp(user);
// then
Assertions.assertThat(signUpRes.isOk()).isEqualTo(true);
}
@Test
@DisplayName("유저 로그인")
void signIn() {
// given
SignUpReq user = createSignUpRequest();
System.out.println("user = " + user.toString());
authService.signUp(user);
// when
ResponseEntity<TokenDto> response = authService.signIn(createSignInRequest());
// then
assertThat(response.getBody().getAccess_token()).isNotEmpty();
assertThat(response.getBody().getRefresh_token()).isNotEmpty();
}
@Test
@DisplayName("비밀번호는 암호화되어야 한다.")
void hashPassword() {
// given
SignUpReq user = createSignUpRequest();
// when
authService.signUp(user);
// then
Users createdUser = userService.findByEmail(EMAIL)
.orElseThrow(UserNotFoundException::new);
System.out.println("newUser pw = " + createdUser.getPassword());
assertThat(createdUser.getPassword()).isNotEqualTo(PASSWORD);
}
@Test
@DisplayName("토큰 재발행")
void regenerateToken() {
// given
SignUpReq user = createSignUpRequest();
System.out.println("user = " + user.toString());
authService.signUp(user);
// when
ResponseEntity<TokenDto> response = authService.signIn(createSignInRequest());
String prevAccessToken = response.getBody().getAccess_token();
RegenerateTokenDto regenerateTokenDto = new RegenerateTokenDto(
response.getBody().getRefresh_token()
);
ResponseEntity<TokenDto> regeneratedToken = authService.regenerateToken(regenerateTokenDto);
// then
assertThat(regeneratedToken.getBody().getAccess_token()).isNotEqualTo(prevAccessToken);
}
private SignUpReq createSignUpRequest() {
return SignUpReq.builder()
.email(EMAIL)
.password(PASSWORD)
.name(NAME)
.build();
}
private SignInReq createSignInRequest() {
return SignInReq.builder()
.email(EMAIL)
.password(PASSWORD)
.build();
}
}