diff --git a/src/main/java/com/yam/app/account/domain/LoginAccountProcessor.java b/src/main/java/com/yam/app/account/domain/LoginAccountProcessor.java index 0c43e85..e4013a2 100644 --- a/src/main/java/com/yam/app/account/domain/LoginAccountProcessor.java +++ b/src/main/java/com/yam/app/account/domain/LoginAccountProcessor.java @@ -13,9 +13,12 @@ public final class LoginAccountProcessor { public void login(String email, String password) { var account = accountReader.findByEmail(email) - .filter(Account::isEmailVerified) .orElseThrow(IllegalStateException::new); + if (!account.isEmailVerified()) { + throw new IllegalStateException(); + } + if (!passwordEncrypter.matches(password, account.getPassword())) { throw new IllegalStateException(); } diff --git a/src/main/java/com/yam/app/account/presentation/AccountQueryApi.java b/src/main/java/com/yam/app/account/presentation/AccountQueryApi.java index fecb27e..5c052d6 100644 --- a/src/main/java/com/yam/app/account/presentation/AccountQueryApi.java +++ b/src/main/java/com/yam/app/account/presentation/AccountQueryApi.java @@ -32,7 +32,7 @@ public final class AccountQueryApi { return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); } - SessionUtils.setLoginAccountEmail(request.getEmail()); + LoginSessionUtils.setLoginAccountEmail(request.getEmail()); return ResponseEntity.ok().build(); } } diff --git a/src/main/java/com/yam/app/account/presentation/SessionUtils.java b/src/main/java/com/yam/app/account/presentation/LoginSessionUtils.java similarity index 91% rename from src/main/java/com/yam/app/account/presentation/SessionUtils.java rename to src/main/java/com/yam/app/account/presentation/LoginSessionUtils.java index c14b9b4..c5f7dd2 100644 --- a/src/main/java/com/yam/app/account/presentation/SessionUtils.java +++ b/src/main/java/com/yam/app/account/presentation/LoginSessionUtils.java @@ -4,11 +4,11 @@ import javax.servlet.http.HttpSession; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -public final class SessionUtils { +public final class LoginSessionUtils { public static final String LOGIN_ACCOUNT_EMAIL = "LOGIN_ACCOUNT_EMAIL"; - private SessionUtils() { + private LoginSessionUtils() { } public static String getLoginAccountEmail() { diff --git a/src/test/java/com/yam/app/account/domain/LoginAccountProcessorTest.java b/src/test/java/com/yam/app/account/domain/LoginAccountProcessorTest.java index 7841e09..d77e447 100644 --- a/src/test/java/com/yam/app/account/domain/LoginAccountProcessorTest.java +++ b/src/test/java/com/yam/app/account/domain/LoginAccountProcessorTest.java @@ -19,19 +19,23 @@ class LoginAccountProcessorTest { Collection login_success() throws Exception { //Arrange var accountRepository = new FakeAccountRepository(); - var accountReader = accountRepository; - var passwordEncrypter = new PasswordEncrypterStub(); - var loginAccountProcessor = new LoginAccountProcessor(accountReader, passwordEncrypter); + var accountNotConfirm = Account.of("hello1@naver.com", "hello1", + "password!"); + var accountCompleted = Account.of("hello@naver.com", "hello", + "password!"); + accountCompleted.completeRegister(); + accountRepository.save(accountCompleted); + accountRepository.save(accountNotConfirm); - var account = Account.of("hello@naver.com", "hello", "password!"); - account.completeRegister(); - accountRepository.save(account); + var passwordEncryptor = new PasswordEncrypterStub(); + var loginAccountProcessor = new LoginAccountProcessor(accountRepository, passwordEncryptor); return Arrays.asList( dynamicTest("회원 로그인에 성공한다.", () -> { // Act var throwable = catchThrowable( - () -> loginAccountProcessor.login(account.getEmail(), account.getPassword()) + () -> loginAccountProcessor.login(accountCompleted.getEmail(), + accountCompleted.getPassword()) ); // Assert @@ -40,7 +44,18 @@ class LoginAccountProcessorTest { dynamicTest("이메일이 유효하지 않은 경우 예외를 리턴한다.", () -> { // Act var throwable = catchThrowable( - () -> loginAccountProcessor.login("dwqko@naver.com", account.getPassword()) + () -> loginAccountProcessor.login("dwqko@naver.com", + accountCompleted.getPassword()) + ); + + // Assert + assertThat(throwable).isInstanceOf(IllegalStateException.class); + }), + dynamicTest("이메일은 유효하나 검증을 완료하지 않은 경우 예외를 리턴한다.", () -> { + // Act + var throwable = catchThrowable( + () -> loginAccountProcessor.login(accountNotConfirm.getEmail(), + accountNotConfirm.getPassword()) ); // Assert @@ -49,7 +64,7 @@ class LoginAccountProcessorTest { dynamicTest("비밀번호가 유효하지 않은 경우 예외를 리턴한다.", () -> { // Act var throwable = catchThrowable( - () -> loginAccountProcessor.login(account.getEmail(), "11111111!") + () -> loginAccountProcessor.login(accountCompleted.getEmail(), "11111111!") ); // Assert