signup test code

This commit is contained in:
jinho jeong
2022-07-10 14:32:35 +09:00
parent 733bacdb5e
commit fe59c881cd
3 changed files with 73 additions and 32 deletions

View File

@@ -1,45 +1,77 @@
package com.example.oneul.service;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import com.example.oneul.domain.user.domain.UserEntity;
import com.example.oneul.domain.user.dto.LoginDTO;
import com.example.oneul.domain.user.service.UserService;
import java.util.Optional;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.test.context.ActiveProfiles;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.springframework.test.util.ReflectionTestUtils;
import com.example.oneul.domain.user.dao.UserRepository;
import com.example.oneul.domain.user.domain.UserEntity;
import com.example.oneul.domain.user.dto.LoginDTO;
import com.example.oneul.domain.user.service.UserServiceImpl;
@Testcontainers
@SpringBootTest
@ActiveProfiles("test")
@ExtendWith(MockitoExtension.class)
public class UserServiceTest {
@Autowired
private UserService userCommandService;
@Autowired
// private UserService userService;
@InjectMocks
private UserServiceImpl userService;
@Mock
private UserRepository userRepository;
@Mock
private PasswordEncoder passwordEncoder;
protected MockHttpSession httpSession;
static {
GenericContainer redis = new GenericContainer("redis:3-alpine")
.withExposedPorts(6379);
redis.start();
// static {
// GenericContainer redis = new GenericContainer("redis:3-alpine")
// .withExposedPorts(6379);
// redis.start();
System.setProperty("spring.redis.host", redis.getContainerIpAddress());
System.setProperty("spring.redis.port", redis.getFirstMappedPort() + "");
}
// System.setProperty("spring.redis.host", redis.getContainerIpAddress());
// System.setProperty("spring.redis.port", redis.getFirstMappedPort() + "");
// }
@Before
public void setUp() {
userService = new UserServiceImpl(userRepository, passwordEncoder);
}
@Test
public void signUpTest(){
LoginDTO loginDTO = new LoginDTO("zzzinho", "password");
UserEntity user = userCommandService.signUp(loginDTO.toEntity());
assertEquals(loginDTO.getUsername(), user.getUsername());
assertEquals(true, passwordEncoder.matches(loginDTO.getPassword(), user.getPassword()));
public void signUpTest() throws Exception {
// given
LoginDTO loginDTO = createLoginDTO();
UserEntity userEntity = loginDTO.toEntity();
Long mockUserId = 1L;
ReflectionTestUtils.setField(userEntity, "id", mockUserId);
// mocking
given(userRepository.findByUsername(userEntity.getUsername())).willReturn(Optional.empty());
given(userRepository.save(any())).willReturn(userEntity);
given(userRepository.findById(mockUserId)).willReturn(Optional.ofNullable(userEntity));
// when
UserEntity user = userService.signUp(userEntity);
// then
UserEntity userFoundById = userRepository.findById(1L).get();
assertEquals(user.getUsername(),userFoundById.getUsername());
}
private LoginDTO createLoginDTO() {
return new LoginDTO("zzzinho", "password");
}
}