feat: 패스워드 변경 서비스 구현

This commit is contained in:
dongHyo
2022-05-22 22:05:28 +09:00
parent 83e8dcc9d6
commit e4fddc359c
5 changed files with 54 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
package com.ticketing.server.user.application.request;public class UserPasswordModifyRequset {
}

View File

@@ -2,6 +2,7 @@ package com.ticketing.server.user.service;
import com.ticketing.server.user.domain.User; import com.ticketing.server.user.domain.User;
import com.ticketing.server.user.domain.repository.UserRepository; 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.DeleteUser;
import com.ticketing.server.user.service.dto.SignUp; import com.ticketing.server.user.service.dto.SignUp;
import com.ticketing.server.user.service.interfaces.UserService; import com.ticketing.server.user.service.interfaces.UserService;
@@ -48,4 +49,16 @@ public class UserServiceImpl implements UserService {
return Optional.of(user.delete(deleteUser)); return Optional.of(user.delete(deleteUser));
} }
@Override
public Optional<User> modifyPassword(@Valid ChangePassword changePassword) {
Optional<User> optionalUser = userRepository.findByEmail(changePassword.getEmail());
if (optionalUser.isEmpty()) {
log.error("존재하지 않는 이메일 입니다. :: {}", changePassword);
return Optional.empty();
}
User user = optionalUser.get();
return Optional.of(user.modifyPassword(changePassword));
}
} }

View File

@@ -37,4 +37,11 @@ public class ChangePassword implements PasswordMatches {
public String getEncodePassword() { public String getEncodePassword() {
return passwordEncoder.encode(newPassword); return passwordEncoder.encode(newPassword);
} }
@Override
public String toString() {
return "ChangePassword{" +
"email='" + email + '\'' +
'}';
}
} }

View File

@@ -1,6 +1,7 @@
package com.ticketing.server.user.service.interfaces; package com.ticketing.server.user.service.interfaces;
import com.ticketing.server.user.domain.User; 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.DeleteUser;
import com.ticketing.server.user.service.dto.SignUp; import com.ticketing.server.user.service.dto.SignUp;
import java.util.Optional; import java.util.Optional;
@@ -12,4 +13,6 @@ public interface UserService {
Optional<User> delete(@Valid DeleteUser deleteUser); Optional<User> delete(@Valid DeleteUser deleteUser);
Optional<User> modifyPassword(@Valid ChangePassword changePassword);
} }

View File

@@ -7,6 +7,7 @@ import static org.mockito.Mockito.when;
import com.ticketing.server.user.domain.User; import com.ticketing.server.user.domain.User;
import com.ticketing.server.user.domain.UserGrade; import com.ticketing.server.user.domain.UserGrade;
import com.ticketing.server.user.domain.repository.UserRepository; 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.DeleteUser;
import com.ticketing.server.user.service.dto.DeleteUserTest; import com.ticketing.server.user.service.dto.DeleteUserTest;
import com.ticketing.server.user.service.dto.SignUp; import com.ticketing.server.user.service.dto.SignUp;
@@ -25,6 +26,7 @@ class UserServiceImplTest {
User user; User user;
SignUp signUp; SignUp signUp;
DeleteUser deleteUser; DeleteUser deleteUser;
ChangePassword changePassword;
@Mock @Mock
UserRepository userRepository; UserRepository userRepository;
@@ -37,6 +39,7 @@ class UserServiceImplTest {
signUp = new SignUp("유저", "ticketing@gmail.com", "123456", "010-1234-5678"); signUp = new SignUp("유저", "ticketing@gmail.com", "123456", "010-1234-5678");
user = new User("유저", "ticketing@gmail.com", "123456", UserGrade.GUEST, "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); deleteUser = new DeleteUser("ticketing@gmail.com", "123456", DeleteUserTest.CUSTOM_PASSWORD_ENCODER);
changePassword = new ChangePassword("ticketing@gmail.com", "123456", "ticketing1234", DeleteUserTest.CUSTOM_PASSWORD_ENCODER);
} }
@Test @Test
@@ -92,4 +95,30 @@ class UserServiceImplTest {
assertThat(user).isPresent(); assertThat(user).isPresent();
} }
@Test
@DisplayName("패스워드 변경 시 이메일이 존재하지 않을 경우")
void modifyPasswordFail() {
// given
when(userRepository.findByEmail("ticketing@gmail.com")).thenReturn(Optional.empty());
// when
Optional<User> 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> user = userService.modifyPassword(changePassword);
// then
assertThat(user).isPresent();
}
} }