From 3a3974f3446d18ac7f8316347740226230c3505d Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 23 Jul 2025 14:02:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20AuthInterceptor=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=B4=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EB=90=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...AuthInterceptors.kt => AuthInterceptor.kt} | 0 .../web/ReservationControllerTest.kt | 51 +++++++------------ .../theme/web/ThemeControllerTest.kt | 5 +- .../roomescape/util/RoomescapeApiTest.kt | 8 +-- 4 files changed, 24 insertions(+), 40 deletions(-) rename src/main/kotlin/roomescape/auth/web/support/{AuthInterceptors.kt => AuthInterceptor.kt} (100%) diff --git a/src/main/kotlin/roomescape/auth/web/support/AuthInterceptors.kt b/src/main/kotlin/roomescape/auth/web/support/AuthInterceptor.kt similarity index 100% rename from src/main/kotlin/roomescape/auth/web/support/AuthInterceptors.kt rename to src/main/kotlin/roomescape/auth/web/support/AuthInterceptor.kt diff --git a/src/test/kotlin/roomescape/reservation/web/ReservationControllerTest.kt b/src/test/kotlin/roomescape/reservation/web/ReservationControllerTest.kt index cf9afdef..01f5d2a7 100644 --- a/src/test/kotlin/roomescape/reservation/web/ReservationControllerTest.kt +++ b/src/test/kotlin/roomescape/reservation/web/ReservationControllerTest.kt @@ -17,11 +17,11 @@ import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus import org.springframework.http.MediaType import org.springframework.transaction.support.TransactionTemplate -import roomescape.auth.web.support.AdminInterceptor -import roomescape.auth.web.support.LoginInterceptor +import roomescape.auth.infrastructure.jwt.JwtHandler import roomescape.auth.web.support.MemberIdResolver import roomescape.common.exception.ErrorType import roomescape.common.exception.RoomescapeException +import roomescape.member.business.MemberService import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.member.infrastructure.persistence.Role import roomescape.payment.infrastructure.client.TossPaymentClient @@ -45,15 +45,15 @@ class ReservationControllerTest( @MockkBean lateinit var paymentClient: TossPaymentClient - @SpykBean - lateinit var loginInterceptor: LoginInterceptor - - @SpykBean - lateinit var adminInterceptor: AdminInterceptor - @SpykBean lateinit var memberIdResolver: MemberIdResolver + @SpykBean + lateinit var memberService: MemberService + + @MockkBean + lateinit var jwtHandler: JwtHandler + init { context("POST /reservations") { lateinit var member: MemberEntity @@ -737,31 +737,18 @@ class ReservationControllerTest( } } - if (member.isAdmin()) { - loginAsAdmin() - } else { - loginAsUser() - } - resolveMemberId(member.id!!) + every { + jwtHandler.getMemberIdFromToken(any()) + } returns member.id!! + + every { + memberService.findById(member.id!!) + } returns member + + every { + memberIdResolver.resolveArgument(any(), any(), any(), any()) + } returns member.id!! return member } - - private fun loginAsUser() { - every { - loginInterceptor.preHandle(any(), any(), any()) - } returns true - } - - private fun loginAsAdmin() { - every { - adminInterceptor.preHandle(any(), any(), any()) - } returns true - } - - private fun resolveMemberId(memberId: Long) { - every { - memberIdResolver.resolveArgument(any(), any(), any(), any()) - } returns memberId - } } diff --git a/src/test/kotlin/roomescape/theme/web/ThemeControllerTest.kt b/src/test/kotlin/roomescape/theme/web/ThemeControllerTest.kt index 817f5077..f4963788 100644 --- a/src/test/kotlin/roomescape/theme/web/ThemeControllerTest.kt +++ b/src/test/kotlin/roomescape/theme/web/ThemeControllerTest.kt @@ -11,6 +11,7 @@ import io.mockk.runs import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest import org.springframework.http.MediaType import org.springframework.test.web.servlet.MockMvc +import roomescape.auth.exception.AuthErrorCode import roomescape.theme.business.ThemeService import roomescape.theme.infrastructure.persistence.ThemeRepository import roomescape.util.RoomescapeApiTest @@ -108,7 +109,7 @@ class ThemeControllerTest(mockMvc: MockMvc) : RoomescapeApiTest() { body = request, ) { status { is3xxRedirection() } - jsonPath("$.errorType") { value("PERMISSION_DOES_NOT_EXIST") } + jsonPath("$.code") { value(AuthErrorCode.ACCESS_DENIED.errorCode) } } } } @@ -249,7 +250,7 @@ class ThemeControllerTest(mockMvc: MockMvc) : RoomescapeApiTest() { endpoint = endpoint, ) { status { is3xxRedirection() } - jsonPath("$.errorType") { value("PERMISSION_DOES_NOT_EXIST") } + jsonPath("$.code") { value(AuthErrorCode.ACCESS_DENIED.errorCode) } } } } diff --git a/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt b/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt index e8a0088d..a35cdf23 100644 --- a/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt +++ b/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt @@ -11,8 +11,7 @@ import org.springframework.http.HttpStatus import org.springframework.http.MediaType import org.springframework.test.web.servlet.* import roomescape.auth.infrastructure.jwt.JwtHandler -import roomescape.auth.web.support.AdminInterceptor -import roomescape.auth.web.support.LoginInterceptor +import roomescape.auth.web.support.AuthInterceptor import roomescape.auth.web.support.MemberIdResolver import roomescape.common.config.JacksonConfig import roomescape.common.exception.ErrorType @@ -25,10 +24,7 @@ import roomescape.util.MemberFixture.NOT_LOGGED_IN_USERID abstract class RoomescapeApiTest : BehaviorSpec() { @SpykBean - private lateinit var AdminInterceptor: AdminInterceptor - - @SpykBean - private lateinit var loginInterceptor: LoginInterceptor + private lateinit var authInterceptor: AuthInterceptor @SpykBean private lateinit var memberIdResolver: MemberIdResolver