diff --git a/src/main/kotlin/roomescape/auth/web/AuthController.kt b/src/main/kotlin/roomescape/auth/web/AuthController.kt index 62f0db38..6e28741a 100644 --- a/src/main/kotlin/roomescape/auth/web/AuthController.kt +++ b/src/main/kotlin/roomescape/auth/web/AuthController.kt @@ -39,6 +39,6 @@ class AuthController( override fun logout(@MemberId memberId: Long): ResponseEntity> { authService.logout(memberId) - return ResponseEntity.ok(CommonApiResponse()) + return ResponseEntity.noContent().build() } } diff --git a/src/test/kotlin/roomescape/auth/web/AuthControllerTest.kt b/src/test/kotlin/roomescape/auth/web/AuthControllerTest.kt index 021477d4..4861f4ba 100644 --- a/src/test/kotlin/roomescape/auth/web/AuthControllerTest.kt +++ b/src/test/kotlin/roomescape/auth/web/AuthControllerTest.kt @@ -125,17 +125,20 @@ class AuthControllerTest( } } } - Given("로그아웃 요청을 보낼 때") { val endpoint = "/logout" - When("토큰의 유효성 & 회원 존재 여부와 무관하게") { + When("토큰으로 memberId 조회가 가능하면") { + every { + jwtHandler.getMemberIdFromToken(any()) + } returns 1L + Then("정상 응답한다.") { runPostTest( mockMvc = mockMvc, endpoint = endpoint, ) { - status { isOk() } + status { isNoContent() } } } } diff --git a/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt b/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt index e1874a72..b393d50a 100644 --- a/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt +++ b/src/test/kotlin/roomescape/util/RoomescapeApiTest.kt @@ -42,24 +42,24 @@ abstract class RoomescapeApiTest : BehaviorSpec() { val user: MemberEntity = MemberFixture.user() fun runGetTest( - mockMvc: MockMvc, - endpoint: String, - log: Boolean = false, - assert: MockMvcResultMatchersDsl.() -> Unit + mockMvc: MockMvc, + endpoint: String, + log: Boolean = false, + assert: MockMvcResultMatchersDsl.() -> Unit ): ResultActionsDsl = mockMvc.get(endpoint) { - header(HttpHeaders.COOKIE, "accessToken=token") + header(HttpHeaders.AUTHORIZATION, "Bearer token") }.apply { log.takeIf { it }?.let { this.andDo { print() } } }.andExpect(assert) fun runPostTest( - mockMvc: MockMvc, - endpoint: String, - body: Any? = null, - log: Boolean = false, - assert: MockMvcResultMatchersDsl.() -> Unit + mockMvc: MockMvc, + endpoint: String, + body: Any? = null, + log: Boolean = false, + assert: MockMvcResultMatchersDsl.() -> Unit ): ResultActionsDsl = mockMvc.post(endpoint) { - this.header(HttpHeaders.COOKIE, "accessToken=token") + this.header(HttpHeaders.AUTHORIZATION, "Bearer token") body?.let { this.contentType = MediaType.APPLICATION_JSON this.content = objectMapper.writeValueAsString(it) @@ -69,12 +69,12 @@ abstract class RoomescapeApiTest : BehaviorSpec() { }.andExpect(assert) fun runDeleteTest( - mockMvc: MockMvc, - endpoint: String, - log: Boolean = false, - assert: MockMvcResultMatchersDsl.() -> Unit + mockMvc: MockMvc, + endpoint: String, + log: Boolean = false, + assert: MockMvcResultMatchersDsl.() -> Unit ): ResultActionsDsl = mockMvc.delete(endpoint) { - header(HttpHeaders.COOKIE, "accessToken=token") + header(HttpHeaders.AUTHORIZATION, "Bearer token") }.apply { log.takeIf { it }?.let { this.andDo { print() } } }.andExpect(assert) @@ -107,16 +107,20 @@ abstract class RoomescapeApiTest : BehaviorSpec() { } fun MvcResult.readValue(valueType: Class): T = this.response.contentAsString - .takeIf { it.isNotBlank() } - ?.let { readValue(it, valueType) } - ?: throw RuntimeException(""" + .takeIf { it.isNotBlank() } + ?.let { readValue(it, valueType) } + ?: throw RuntimeException( + """ [Test] Exception occurred while reading response json: ${this.response.contentAsString} with value type: $valueType - """.trimIndent()) + """.trimIndent() + ) fun readValue(responseJson: String, valueType: Class): T = objectMapper - .readTree(responseJson)["data"] - ?.let { objectMapper.convertValue(it, valueType) } - ?: throw RuntimeException(""" + .readTree(responseJson)["data"] + ?.let { objectMapper.convertValue(it, valueType) } + ?: throw RuntimeException( + """ [Test] Exception occurred while reading response json: $responseJson with value type: $valueType - """.trimIndent()) + """.trimIndent() + ) }