diff --git a/src/test/kotlin/roomescape/user/UserApiTest.kt b/src/test/kotlin/roomescape/user/UserApiTest.kt index 922ecf96..31d16b55 100644 --- a/src/test/kotlin/roomescape/user/UserApiTest.kt +++ b/src/test/kotlin/roomescape/user/UserApiTest.kt @@ -1,7 +1,9 @@ package roomescape.user +import com.ninjasquad.springmockk.SpykBean import io.kotest.assertions.assertSoftly import io.kotest.matchers.shouldBe +import io.mockk.every import io.restassured.module.kotlin.extensions.Extract import io.restassured.module.kotlin.extensions.Given import io.restassured.module.kotlin.extensions.Then @@ -12,6 +14,7 @@ import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus import org.springframework.http.MediaType import roomescape.auth.exception.AuthErrorCode +import roomescape.auth.infrastructure.jwt.JwtUtils import roomescape.common.exception.CommonErrorCode import roomescape.user.business.SIGNUP import roomescape.user.exception.UserErrorCode @@ -28,6 +31,9 @@ class UserApiTest( private val userStatusHistoryRepository: UserStatusHistoryRepository ) : FunSpecSpringbootTest() { + @SpykBean + private lateinit var jwtUtils: JwtUtils + init { context("회원가입 및 상태 이력을 저장한다.") { val request = UserFixture.createRequest @@ -169,6 +175,21 @@ class UserApiTest( } ) } + + test("토큰이 조회되지 않으면 실패한다.") { + val (user, token) = testAuthUtil.defaultUserLogin() + + every { + jwtUtils.extractSubject(token) + } throws RuntimeException("Intended") + + runExceptionTest( + token = token, + method = HttpMethod.GET, + endpoint = endpoint, + expectedErrorCode = AuthErrorCode.MEMBER_NOT_FOUND + ) + } } }