fix : user Signup Test Refactoring

This commit is contained in:
minseokkang
2022-09-20 10:15:39 +09:00
parent e32ac29572
commit 6eadfcfbc0
4 changed files with 34 additions and 53 deletions

View File

@@ -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();
}

View File

@@ -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)

View File

@@ -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()));
}
}

View File

@@ -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())
);
}