From 41f50cea90a6c662f8e4a507ad1a743b35e718b9 Mon Sep 17 00:00:00 2001 From: JiwonDev Date: Fri, 10 Sep 2021 10:06:26 +0900 Subject: [PATCH] =?UTF-8?q?Refactor=20LoginAccountProcessor=20-=20?= =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EA=B2=80=EC=A6=9D=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/domain/LoginAccountProcessor.java | 5 ++- .../account/presentation/AccountQueryApi.java | 2 +- ...ssionUtils.java => LoginSessionUtils.java} | 4 +-- .../domain/LoginAccountProcessorTest.java | 33 ++++++++++++++----- 4 files changed, 31 insertions(+), 13 deletions(-) rename src/main/java/com/yam/app/account/presentation/{SessionUtils.java => LoginSessionUtils.java} (91%) 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