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

@@ -11,6 +11,9 @@ import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.security.crypto.password.PasswordEncoder;
import com.example.oneul.domain.user.exception.WrongUsernameAndPasswordException;
@Entity
@Table(name = "user")
@@ -26,6 +29,13 @@ public class UserEntity implements Serializable {
@Column(name = "createAt", nullable = false, updatable = false)
private LocalDateTime createdAt;
public boolean matchPassword(String password, PasswordEncoder passwordEncoder){
if(!passwordEncoder.matches(password, getPassword())){
throw new WrongUsernameAndPasswordException("wrong password");
}
return true;
}
public Long getId(){
return this.id;
}

View File

@@ -31,11 +31,12 @@ public class UserServiceImpl implements UserService {
throw new UserAlreadyExistException(userEntity.getUsername() + " is already exists");
}
UserEntity user = UserEntity.builder().username(userEntity.getUsername())
.password(
passwordEncoder.encode(userEntity.getPassword()))
.build();
userRepository.save(user);
UserEntity user = userRepository.save(
UserEntity.builder().username(userEntity.getUsername())
.password(
passwordEncoder.encode(userEntity.getPassword()))
.build());
log.info(user.getPassword());
log.info("user is created: " + user.toString());
return user;
}
@@ -45,9 +46,7 @@ public class UserServiceImpl implements UserService {
UserEntity user = userRepository.findByUsername(userEntity.getUsername())
.orElseThrow(() -> new WrongUsernameAndPasswordException("wrong username"));
if(!passwordEncoder.matches(userEntity.getPassword(), user.getPassword())){
throw new WrongUsernameAndPasswordException("wrong passowrd");
}
user.matchPassword(userEntity.getPassword(), passwordEncoder);
log.info("login user: " + userEntity.toString());
httpSession.setAttribute("user",user);

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");
}
}