fix : user Signup Test Refactoring
This commit is contained in:
@@ -7,5 +7,5 @@ import org.springframework.data.repository.CrudRepository;
|
||||
public interface UserRepository extends CrudRepository<User, Long> {
|
||||
User save(User user);
|
||||
User findByEmail(String email);
|
||||
|
||||
Iterable<User> findAll();
|
||||
}
|
||||
|
||||
@@ -2,12 +2,10 @@ package com.io.realworld.api.users;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserResponse;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest;
|
||||
import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest;
|
||||
import com.io.realworld.exception.CustomException;
|
||||
import com.io.realworld.exception.Error;
|
||||
import com.io.realworld.domain.aggregate.user.controller.UsersController;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.service.JwtService;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import org.hamcrest.Matchers;
|
||||
@@ -16,24 +14,18 @@ import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.security.test.context.support.WithMockUser;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
|
||||
|
||||
@WebMvcTest(controllers = UsersController.class)
|
||||
|
||||
@@ -3,10 +3,14 @@ package com.io.realworld.repository;
|
||||
import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.aggregate.user.repository.UserRepository;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
||||
@@ -17,12 +21,10 @@ class UserRepositoryTest {
|
||||
private UserRepository userRepository;
|
||||
|
||||
|
||||
@Test
|
||||
@MethodSource("validUsers")
|
||||
@ParameterizedTest
|
||||
@DisplayName("회원가입 레포 테스트")
|
||||
void save() {
|
||||
|
||||
//given
|
||||
User user = user();
|
||||
void save(User user) {
|
||||
|
||||
//when
|
||||
User saved_user = userRepository.save(user);
|
||||
@@ -35,14 +37,7 @@ class UserRepositoryTest {
|
||||
assertThat(saved_user.getImage()).isEqualTo(user.getImage());
|
||||
}
|
||||
|
||||
|
||||
private User user() {
|
||||
return User.builder()
|
||||
.username("kms")
|
||||
.password("")
|
||||
.email("kms@gamil.com")
|
||||
.bio("1")
|
||||
.image("image")
|
||||
.build();
|
||||
public static Stream<Arguments> validUsers() {
|
||||
return Stream.of(Arguments.of(User.builder().username("kms").password("").email("kms@gamil.com").bio("1").image("image").build()));
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,9 @@ import com.io.realworld.domain.aggregate.user.entity.User;
|
||||
import com.io.realworld.domain.aggregate.user.repository.UserRepository;
|
||||
import com.io.realworld.domain.aggregate.user.service.UserServiceImpl;
|
||||
import com.io.realworld.domain.service.JwtService;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import com.io.realworld.exception.CustomException;
|
||||
import com.io.realworld.exception.Error;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
@@ -17,17 +17,16 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.internal.verification.VerificationModeFactory.times;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@@ -46,11 +45,6 @@ class UserServiceImplTest {
|
||||
@Mock
|
||||
private JwtService jwtService;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
userService = new UserServiceImpl(userRepository, passwordEncoder, jwtService);
|
||||
}
|
||||
|
||||
|
||||
@MethodSource("validUsers")
|
||||
@ParameterizedTest
|
||||
@@ -81,23 +75,24 @@ class UserServiceImplTest {
|
||||
}
|
||||
|
||||
|
||||
private UserSignupRequest getUserSignupRequest() {
|
||||
return UserSignupRequest.builder()
|
||||
.username("kms")
|
||||
.email("kms@gmail.com")
|
||||
.password("password")
|
||||
@MethodSource("duplicateUsers")
|
||||
@ParameterizedTest
|
||||
@DisplayName("회원가입_중복_서비스_테스트")
|
||||
void duplicateSignup(UserSignupRequest requestUser) {
|
||||
User user = User.builder()
|
||||
.username(requestUser.getUsername())
|
||||
.bio("")
|
||||
.email(requestUser.getEmail())
|
||||
.image("")
|
||||
.password(requestUser.getPassword())
|
||||
.build();
|
||||
|
||||
when(userRepository.findByEmail(any(String.class))).thenReturn(null).thenThrow(new CustomException(Error.DUPLICATE_USER));
|
||||
when(userRepository.save(any(User.class))).thenReturn(user);
|
||||
userService.signup(requestUser);
|
||||
|
||||
}
|
||||
|
||||
private UserResponse getUserResponse() {
|
||||
return UserResponse.builder()
|
||||
.username("kms")
|
||||
.email("kms@gmail.com")
|
||||
.bio("1")
|
||||
.image("image")
|
||||
.token("kms")
|
||||
.build();
|
||||
}
|
||||
|
||||
public static Stream<Arguments> validUsers() {
|
||||
return Stream.of(
|
||||
@@ -107,11 +102,10 @@ class UserServiceImplTest {
|
||||
);
|
||||
}
|
||||
|
||||
private static Stream<Arguments> invalidUsers() {
|
||||
private static Stream<Arguments> duplicateUsers() {
|
||||
return Stream.of(
|
||||
Arguments.of(UserSignupRequest.builder().username("").email("kms@gmail.com").password("password").build()),
|
||||
Arguments.of(UserSignupRequest.builder().username("jyb").email("yyb95@gmail.com").password("").build()),
|
||||
Arguments.of(UserSignupRequest.builder().username("kms").email("").password("password").build())
|
||||
Arguments.of(UserSignupRequest.builder().username("kms").email("kms@gmail.com").password("password").build()),
|
||||
Arguments.of(UserSignupRequest.builder().username("kms").email("kms@gmail.com").password("password").build())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user