signup test code
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user