feat: user login 수정
This commit is contained in:
parent
3fc1f37b1a
commit
96a124a822
@ -86,9 +86,12 @@ public class UserController {
|
|||||||
String accessToken = jwtUtil.createAccessToken(String.valueOf(loginUser.getId()));
|
String accessToken = jwtUtil.createAccessToken(String.valueOf(loginUser.getId()));
|
||||||
String refreshToken = jwtUtil.createRefreshToken(String.valueOf(loginUser.getId()));
|
String refreshToken = jwtUtil.createRefreshToken(String.valueOf(loginUser.getId()));
|
||||||
|
|
||||||
|
|
||||||
userService.saveRefreshToken(loginUser.getId(), refreshToken);
|
userService.saveRefreshToken(loginUser.getId(), refreshToken);
|
||||||
|
|
||||||
System.out.println(accessToken);
|
|
||||||
|
|
||||||
|
resultMap.put("role",loginUser.getRole());
|
||||||
resultMap.put("access-token", accessToken);
|
resultMap.put("access-token", accessToken);
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +26,10 @@ public class UserServiceImpl implements UserService {
|
|||||||
private final JavaMailSender mailSender;
|
private final JavaMailSender mailSender;
|
||||||
|
|
||||||
|
|
||||||
public void join(User user) {
|
public void join(User user)
|
||||||
|
{
|
||||||
|
System.out.println(user.getRole().getClass());
|
||||||
|
|
||||||
userRepository.save(user);
|
userRepository.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,79 @@
|
|||||||
|
//package com.edufocus.edufocus.user;
|
||||||
|
//
|
||||||
|
//import com.edufocus.edufocus.user.controller.UserController;
|
||||||
|
//import com.edufocus.edufocus.user.model.entity.InfoDto;
|
||||||
|
//import com.edufocus.edufocus.user.model.entity.PasswordDto;
|
||||||
|
//import com.edufocus.edufocus.user.model.entity.User;
|
||||||
|
//import com.edufocus.edufocus.user.model.entity.UserRole;
|
||||||
|
//import com.edufocus.edufocus.user.model.service.UserService;
|
||||||
|
//import com.edufocus.edufocus.user.util.JWTUtil;
|
||||||
|
//import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
//import org.junit.jupiter.api.BeforeEach;
|
||||||
|
//import org.junit.jupiter.api.Test;
|
||||||
|
//import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
//import org.mockito.InjectMocks;
|
||||||
|
//import org.mockito.Mock;
|
||||||
|
//import org.mockito.MockitoAnnotations;
|
||||||
|
//import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
//import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
//import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
|
//import org.springframework.http.HttpStatus;
|
||||||
|
//import org.springframework.http.MediaType;
|
||||||
|
//import org.springframework.http.ResponseEntity;
|
||||||
|
//import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
//
|
||||||
|
//import static org.mockito.ArgumentMatchers.any;
|
||||||
|
//import static org.mockito.Mockito.*;
|
||||||
|
//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||||
|
//
|
||||||
|
//@WebMvcTest(UserController.class)
|
||||||
|
//public class UserControllerTest {
|
||||||
|
//
|
||||||
|
// @Mock
|
||||||
|
// private MockMvc mockMvc;
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// ObjectMapper mapper;
|
||||||
|
// @Mock
|
||||||
|
// private UserService userService;
|
||||||
|
//
|
||||||
|
// @Mock
|
||||||
|
// private JWTUtil jwtUtil;
|
||||||
|
//
|
||||||
|
// @InjectMocks
|
||||||
|
// private UserController userController;
|
||||||
|
//
|
||||||
|
// private User testUser;
|
||||||
|
// private InfoDto testInfo;
|
||||||
|
// private PasswordDto passwordDto;
|
||||||
|
// private UserRole userRole;
|
||||||
|
// @BeforeEach
|
||||||
|
// void setUp()
|
||||||
|
// {
|
||||||
|
// MockitoAnnotations.openMocks(this);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//// @Test
|
||||||
|
//// void testjoin() throws Exception
|
||||||
|
//// {
|
||||||
|
////
|
||||||
|
//// User user = new User();
|
||||||
|
//// user.setId(1L);
|
||||||
|
//// user.setName("jungmin");
|
||||||
|
//// user.setUserId("v_v");
|
||||||
|
//// user.setRole(userRole.STUDENT);
|
||||||
|
//// user.setPassword("pwd");
|
||||||
|
//// user.setEmail("wjdals231@naver.com");
|
||||||
|
////
|
||||||
|
//// String body= mapper.writeValueAsString(
|
||||||
|
//// UserRe
|
||||||
|
//// )
|
||||||
|
////
|
||||||
|
//// mockMvc.perform(post("/api/user/join")
|
||||||
|
//// .contentType(MediaType.APPLICATION_JSON)
|
||||||
|
//// .
|
||||||
|
////
|
||||||
|
//// //
|
||||||
|
////
|
||||||
|
//// }
|
||||||
|
//}
|
@ -0,0 +1,298 @@
|
|||||||
|
package com.edufocus.edufocus.user.model.service;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
|
||||||
|
import com.edufocus.edufocus.user.model.entity.*;
|
||||||
|
import com.edufocus.edufocus.user.model.exception.UserException;
|
||||||
|
import com.edufocus.edufocus.user.model.repository.UserRepository;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.*;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
import org.springframework.mail.SimpleMailMessage;
|
||||||
|
import org.springframework.mail.javamail.JavaMailSender;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class UserServiceImplTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private UserServiceImpl userService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private JavaMailSender mailSender;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MockitoAnnotations.openMocks(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testJoin() {
|
||||||
|
User user = new User();
|
||||||
|
user.setId(1L);
|
||||||
|
user.setName("John Doe");
|
||||||
|
|
||||||
|
userService.join(user);
|
||||||
|
|
||||||
|
verify(userRepository, times(1)).save(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLoginSuccess() throws Exception {
|
||||||
|
User user = new User();
|
||||||
|
user.setUserId("john");
|
||||||
|
user.setPassword("password");
|
||||||
|
|
||||||
|
User returnedUser = new User();
|
||||||
|
returnedUser.setUserId("john");
|
||||||
|
returnedUser.setPassword("password");
|
||||||
|
|
||||||
|
when(userRepository.findByUserId(user.getUserId())).thenReturn(Optional.of(returnedUser));
|
||||||
|
|
||||||
|
User result = userService.login(user);
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals("john", result.getUserId());
|
||||||
|
assertEquals("password", result.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLoginUserNotFound() {
|
||||||
|
User user = new User();
|
||||||
|
user.setUserId("john");
|
||||||
|
user.setPassword("password");
|
||||||
|
|
||||||
|
when(userRepository.findByUserId(user.getUserId())).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
UserException exception = assertThrows(UserException.class, () -> userService.login(user));
|
||||||
|
|
||||||
|
assertEquals("없는 유저", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLoginIncorrectPassword() {
|
||||||
|
User user = new User();
|
||||||
|
user.setUserId("john");
|
||||||
|
user.setPassword("password");
|
||||||
|
|
||||||
|
User returnedUser = new User();
|
||||||
|
returnedUser.setUserId("john");
|
||||||
|
returnedUser.setPassword("wrongPassword");
|
||||||
|
|
||||||
|
when(userRepository.findByUserId(user.getUserId())).thenReturn(Optional.of(returnedUser));
|
||||||
|
|
||||||
|
UserException exception = assertThrows(UserException.class, () -> userService.login(user));
|
||||||
|
|
||||||
|
assertEquals("비밀번호 틀림", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUserInfo() {
|
||||||
|
User user = new User();
|
||||||
|
user.setId(1L);
|
||||||
|
user.setName("John Doe");
|
||||||
|
|
||||||
|
when(userRepository.findById(1L)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
User result = userService.userInfo(1L);
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals("John Doe", result.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSendEmail() throws Exception {
|
||||||
|
User user = new User();
|
||||||
|
user.setEmail("test@example.com");
|
||||||
|
user.setUserId("testUser");
|
||||||
|
user.setName("Test User");
|
||||||
|
|
||||||
|
MailDto mailDto = new MailDto();
|
||||||
|
mailDto.setAddress("test@example.com");
|
||||||
|
mailDto.setTitle("Test Title");
|
||||||
|
mailDto.setMessage("Test Message");
|
||||||
|
|
||||||
|
doNothing().when(mailSender).send(any(SimpleMailMessage.class));
|
||||||
|
doReturn(mailDto).when(userService).createMailAndChargePassword(user);
|
||||||
|
|
||||||
|
userService.sendEamail(user);
|
||||||
|
|
||||||
|
verify(mailSender, times(1)).send(any(SimpleMailMessage.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUserCheck() throws Exception {
|
||||||
|
User user = new User();
|
||||||
|
user.setId(1L);
|
||||||
|
user.setUserId("testUser");
|
||||||
|
user.setEmail("test@example.com");
|
||||||
|
user.setName("Test User");
|
||||||
|
|
||||||
|
when(userRepository.findById(1L)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
userService.userCheck(1L);
|
||||||
|
|
||||||
|
verify(userRepository, times(1)).findById(1L);
|
||||||
|
verify(userService, times(1)).sendEamail(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUserCheckInvalidId() {
|
||||||
|
when(userRepository.findById(1L)).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
RuntimeException exception = assertThrows(RuntimeException.class, () -> userService.userCheck(1L));
|
||||||
|
|
||||||
|
assertEquals("유효하지 않은 아이디입니다. 다시 입력하세요", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeUserInfo() throws Exception {
|
||||||
|
Long userId = 1L;
|
||||||
|
InfoDto infoDto = new InfoDto();
|
||||||
|
infoDto.setName("New Name");
|
||||||
|
infoDto.setEmail("new.email@example.com");
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setId(userId);
|
||||||
|
user.setName("Old Name");
|
||||||
|
user.setEmail("old.email@example.com");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
userService.changeuInfo(infoDto, userId);
|
||||||
|
|
||||||
|
assertEquals("New Name", user.getName());
|
||||||
|
assertEquals("new.email@example.com", user.getEmail());
|
||||||
|
verify(userRepository, times(1)).save(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeUserInfoUserNotFound() {
|
||||||
|
Long userId = 1L;
|
||||||
|
InfoDto infoDto = new InfoDto();
|
||||||
|
infoDto.setName("New Name");
|
||||||
|
infoDto.setEmail("new.email@example.com");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
Exception exception = assertThrows(Exception.class, () -> userService.changeuInfo(infoDto, userId));
|
||||||
|
|
||||||
|
assertEquals("User not found", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangePasswordSuccess() throws Exception {
|
||||||
|
Long userId = 1L;
|
||||||
|
PasswordDto passwordDto = new PasswordDto();
|
||||||
|
passwordDto.setCurrentPassword("oldPassword");
|
||||||
|
passwordDto.setNewPassword("newPassword");
|
||||||
|
passwordDto.setNewPasswordCheck("newPassword");
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setId(userId);
|
||||||
|
user.setPassword("oldPassword");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
userService.changePassword(passwordDto, userId);
|
||||||
|
|
||||||
|
assertEquals("newPassword", user.getPassword());
|
||||||
|
verify(userRepository, times(1)).save(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangePasswordUserNotFound() {
|
||||||
|
Long userId = 1L;
|
||||||
|
PasswordDto passwordDto = new PasswordDto();
|
||||||
|
passwordDto.setCurrentPassword("oldPassword");
|
||||||
|
passwordDto.setNewPassword("newPassword");
|
||||||
|
passwordDto.setNewPasswordCheck("newPassword");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
Exception exception = assertThrows(Exception.class, () -> userService.changePassword(passwordDto, userId));
|
||||||
|
|
||||||
|
assertEquals("User not found", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangePasswordIncorrectCurrentPassword() {
|
||||||
|
Long userId = 1L;
|
||||||
|
PasswordDto passwordDto = new PasswordDto();
|
||||||
|
passwordDto.setCurrentPassword("wrongPassword");
|
||||||
|
passwordDto.setNewPassword("newPassword");
|
||||||
|
passwordDto.setNewPasswordCheck("newPassword");
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setId(userId);
|
||||||
|
user.setPassword("oldPassword");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
Exception exception = assertThrows(Exception.class, () -> userService.changePassword(passwordDto, userId));
|
||||||
|
|
||||||
|
assertEquals("Current password is incorrect", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangePasswordNewPasswordMismatch() {
|
||||||
|
Long userId = 1L;
|
||||||
|
PasswordDto passwordDto = new PasswordDto();
|
||||||
|
passwordDto.setCurrentPassword("oldPassword");
|
||||||
|
passwordDto.setNewPassword("newPassword");
|
||||||
|
passwordDto.setNewPasswordCheck("differentNewPassword");
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setId(userId);
|
||||||
|
user.setPassword("oldPassword");
|
||||||
|
|
||||||
|
when(userRepository.findById(userId)).thenReturn(Optional.of(user));
|
||||||
|
|
||||||
|
Exception exception = assertThrows(Exception.class, () -> userService.changePassword(passwordDto, userId));
|
||||||
|
|
||||||
|
assertEquals("New password confirmation does not match", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSaveRefreshToken() throws Exception {
|
||||||
|
Long userId = 1L;
|
||||||
|
String refreshToken = "refresh-token";
|
||||||
|
|
||||||
|
doNothing().when(userRepository).saveRefreshToken(userId, refreshToken);
|
||||||
|
|
||||||
|
userService.saveRefreshToken(userId, refreshToken);
|
||||||
|
|
||||||
|
verify(userRepository, times(1)).saveRefreshToken(userId, refreshToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetRefreshToken() throws Exception {
|
||||||
|
Long userId = 1L;
|
||||||
|
String refreshToken = "refresh-token";
|
||||||
|
|
||||||
|
when(userRepository.getRefreshToken(userId)).thenReturn(refreshToken);
|
||||||
|
|
||||||
|
String result = userService.getRefreshToken(userId);
|
||||||
|
|
||||||
|
assertEquals(refreshToken, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
// void testDeleteRefreshToken() throws Exception {
|
||||||
|
// Long userId = 1L;
|
||||||
|
//
|
||||||
|
// doNothing().when(userRepository).delete
|
||||||
|
// }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user