diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdminRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdminRole.java index b9191c0..a1daae8 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdminRole.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdminRole.java @@ -2,7 +2,6 @@ package com.bpgroup.poc.admin.domain.admin.entity; import com.bpgroup.poc.admin.domain.role.entity.Role; import jakarta.persistence.*; -import lombok.Builder; import lombok.Getter; @Getter @@ -13,7 +12,6 @@ public class AdminRole { @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Role role; - @Builder public static AdminRole of(Role role) { AdminRole adminRole = new AdminRole(); adminRole.role = role; diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/app/authentication/AuthenticationAppServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/app/authentication/AuthenticationAppServiceTest.java new file mode 100644 index 0000000..6f94318 --- /dev/null +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/app/authentication/AuthenticationAppServiceTest.java @@ -0,0 +1,88 @@ +package com.bpgroup.poc.admin.app.authentication; + +import com.bpgroup.poc.admin.app.authentication.exception.InvalidPasswordException; +import com.bpgroup.poc.admin.domain.admin.entity.Admin; +import com.bpgroup.poc.admin.domain.admin.entity.AdminRepository; +import com.bpgroup.poc.admin.domain.admin.entity.AdminRole; +import com.bpgroup.poc.admin.domain.role.entity.Role; +import com.bpgroup.poc.admin.domain.role.entity.RoleRepository; +import com.bpgroup.poc.admin.env.MariaDBTestEnv; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.transaction.annotation.Transactional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@DisplayName("AuthenticationAppService 테스트") +@Transactional +class AuthenticationAppServiceTest extends MariaDBTestEnv { + + @Autowired + private AuthenticationAppService authenticationAppService; + + @Autowired + private PasswordEncoder passwordEncoder; + + @Autowired + private RoleRepository roleRepository; + + @Autowired + private AdminRepository adminRepository; + + @BeforeEach + void setUp() { + roleRepository.deleteAll(); + adminRepository.deleteAll(); + } + + @Test + @DisplayName("정상 로그인 테스트") + void loginTest() throws Exception { + // given + createRoleAndAdmin(); + + // when + AuthenticationResult authenticationResult = authenticationAppService.login("test", "test"); + + // then + assertThat(authenticationResult).isNotNull(); + assertThat(authenticationResult.getId()).isNotNull(); + } + + @DisplayName("패스워드 불일치 테스트") + @Test + void loginTestInvalidPassword() { + // given + createRoleAndAdmin(); + + // when then + assertThatThrownBy(() -> authenticationAppService.login("test", "invalid")).isInstanceOf(InvalidPasswordException.class); + } + + private void createRoleAndAdmin() { + Role savedRole = roleRepository.save( + Role.createOf( + "test", + "test" + ) + ); + flushAndClear(); + + adminRepository.save( + Admin.createOf( + "test", + passwordEncoder.encode("test"), + "test", + "test", + AdminRole.of(savedRole) + ) + ); + flushAndClear(); + } + + +}