diff --git a/server/src/main/java/com/ticketing/server/user/application/request/UserPasswordModifyRequest.java b/server/src/main/java/com/ticketing/server/user/application/request/UserPasswordModifyRequest.java new file mode 100644 index 0000000..535e9da --- /dev/null +++ b/server/src/main/java/com/ticketing/server/user/application/request/UserPasswordModifyRequest.java @@ -0,0 +1,2 @@ +package com.ticketing.server.user.application.request;public class UserPasswordModifyRequset { +} diff --git a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java index 4fbf9bb..7cc3ccc 100644 --- a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java @@ -2,6 +2,7 @@ package com.ticketing.server.user.service; import com.ticketing.server.user.domain.User; import com.ticketing.server.user.domain.repository.UserRepository; +import com.ticketing.server.user.service.dto.ChangePassword; import com.ticketing.server.user.service.dto.DeleteUser; import com.ticketing.server.user.service.dto.SignUp; import com.ticketing.server.user.service.interfaces.UserService; @@ -48,4 +49,16 @@ public class UserServiceImpl implements UserService { return Optional.of(user.delete(deleteUser)); } + @Override + public Optional modifyPassword(@Valid ChangePassword changePassword) { + Optional optionalUser = userRepository.findByEmail(changePassword.getEmail()); + if (optionalUser.isEmpty()) { + log.error("존재하지 않는 이메일 입니다. :: {}", changePassword); + return Optional.empty(); + } + + User user = optionalUser.get(); + return Optional.of(user.modifyPassword(changePassword)); + } + } diff --git a/server/src/main/java/com/ticketing/server/user/service/dto/ChangePassword.java b/server/src/main/java/com/ticketing/server/user/service/dto/ChangePassword.java index 17bde8a..f12100e 100644 --- a/server/src/main/java/com/ticketing/server/user/service/dto/ChangePassword.java +++ b/server/src/main/java/com/ticketing/server/user/service/dto/ChangePassword.java @@ -37,4 +37,11 @@ public class ChangePassword implements PasswordMatches { public String getEncodePassword() { return passwordEncoder.encode(newPassword); } + + @Override + public String toString() { + return "ChangePassword{" + + "email='" + email + '\'' + + '}'; + } } diff --git a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java index 4960dc9..f7b49e6 100644 --- a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java +++ b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java @@ -1,6 +1,7 @@ package com.ticketing.server.user.service.interfaces; import com.ticketing.server.user.domain.User; +import com.ticketing.server.user.service.dto.ChangePassword; import com.ticketing.server.user.service.dto.DeleteUser; import com.ticketing.server.user.service.dto.SignUp; import java.util.Optional; @@ -12,4 +13,6 @@ public interface UserService { Optional delete(@Valid DeleteUser deleteUser); + Optional modifyPassword(@Valid ChangePassword changePassword); + } diff --git a/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java b/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java index 8603c12..2ff5ff3 100644 --- a/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java +++ b/server/src/test/java/com/ticketing/server/user/service/UserServiceImplTest.java @@ -7,6 +7,7 @@ import static org.mockito.Mockito.when; import com.ticketing.server.user.domain.User; import com.ticketing.server.user.domain.UserGrade; import com.ticketing.server.user.domain.repository.UserRepository; +import com.ticketing.server.user.service.dto.ChangePassword; import com.ticketing.server.user.service.dto.DeleteUser; import com.ticketing.server.user.service.dto.DeleteUserTest; import com.ticketing.server.user.service.dto.SignUp; @@ -25,6 +26,7 @@ class UserServiceImplTest { User user; SignUp signUp; DeleteUser deleteUser; + ChangePassword changePassword; @Mock UserRepository userRepository; @@ -37,6 +39,7 @@ class UserServiceImplTest { signUp = new SignUp("유저", "ticketing@gmail.com", "123456", "010-1234-5678"); user = new User("유저", "ticketing@gmail.com", "123456", UserGrade.GUEST, "010-1234-5678"); deleteUser = new DeleteUser("ticketing@gmail.com", "123456", DeleteUserTest.CUSTOM_PASSWORD_ENCODER); + changePassword = new ChangePassword("ticketing@gmail.com", "123456", "ticketing1234", DeleteUserTest.CUSTOM_PASSWORD_ENCODER); } @Test @@ -92,4 +95,30 @@ class UserServiceImplTest { assertThat(user).isPresent(); } + @Test + @DisplayName("패스워드 변경 시 이메일이 존재하지 않을 경우") + void modifyPasswordFail() { + // given + when(userRepository.findByEmail("ticketing@gmail.com")).thenReturn(Optional.empty()); + + // when + Optional user = userService.modifyPassword(changePassword); + + // then + assertThat(user).isEmpty(); + } + + @Test + @DisplayName("패스워드 변경 성공했을 경우") + void modifyPasswordSuccess() { + // given + when(userRepository.findByEmail("ticketing@gmail.com")).thenReturn(Optional.of(user)); + + // when + Optional user = userService.modifyPassword(changePassword); + + // then + assertThat(user).isPresent(); + } + }