generated from pricelees/issue-pr-template
refactor: 로그아웃 API 응답 코드 수정(ok -> noContent) 및 테스트 반영
This commit is contained in:
parent
ee21782ef9
commit
32ed640b6e
@ -39,6 +39,6 @@ class AuthController(
|
|||||||
override fun logout(@MemberId memberId: Long): ResponseEntity<CommonApiResponse<Unit>> {
|
override fun logout(@MemberId memberId: Long): ResponseEntity<CommonApiResponse<Unit>> {
|
||||||
authService.logout(memberId)
|
authService.logout(memberId)
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse())
|
return ResponseEntity.noContent().build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -125,17 +125,20 @@ class AuthControllerTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Given("로그아웃 요청을 보낼 때") {
|
Given("로그아웃 요청을 보낼 때") {
|
||||||
val endpoint = "/logout"
|
val endpoint = "/logout"
|
||||||
|
|
||||||
When("토큰의 유효성 & 회원 존재 여부와 무관하게") {
|
When("토큰으로 memberId 조회가 가능하면") {
|
||||||
|
every {
|
||||||
|
jwtHandler.getMemberIdFromToken(any())
|
||||||
|
} returns 1L
|
||||||
|
|
||||||
Then("정상 응답한다.") {
|
Then("정상 응답한다.") {
|
||||||
runPostTest(
|
runPostTest(
|
||||||
mockMvc = mockMvc,
|
mockMvc = mockMvc,
|
||||||
endpoint = endpoint,
|
endpoint = endpoint,
|
||||||
) {
|
) {
|
||||||
status { isOk() }
|
status { isNoContent() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,24 +42,24 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
val user: MemberEntity = MemberFixture.user()
|
val user: MemberEntity = MemberFixture.user()
|
||||||
|
|
||||||
fun runGetTest(
|
fun runGetTest(
|
||||||
mockMvc: MockMvc,
|
mockMvc: MockMvc,
|
||||||
endpoint: String,
|
endpoint: String,
|
||||||
log: Boolean = false,
|
log: Boolean = false,
|
||||||
assert: MockMvcResultMatchersDsl.() -> Unit
|
assert: MockMvcResultMatchersDsl.() -> Unit
|
||||||
): ResultActionsDsl = mockMvc.get(endpoint) {
|
): ResultActionsDsl = mockMvc.get(endpoint) {
|
||||||
header(HttpHeaders.COOKIE, "accessToken=token")
|
header(HttpHeaders.AUTHORIZATION, "Bearer token")
|
||||||
}.apply {
|
}.apply {
|
||||||
log.takeIf { it }?.let { this.andDo { print() } }
|
log.takeIf { it }?.let { this.andDo { print() } }
|
||||||
}.andExpect(assert)
|
}.andExpect(assert)
|
||||||
|
|
||||||
fun runPostTest(
|
fun runPostTest(
|
||||||
mockMvc: MockMvc,
|
mockMvc: MockMvc,
|
||||||
endpoint: String,
|
endpoint: String,
|
||||||
body: Any? = null,
|
body: Any? = null,
|
||||||
log: Boolean = false,
|
log: Boolean = false,
|
||||||
assert: MockMvcResultMatchersDsl.() -> Unit
|
assert: MockMvcResultMatchersDsl.() -> Unit
|
||||||
): ResultActionsDsl = mockMvc.post(endpoint) {
|
): ResultActionsDsl = mockMvc.post(endpoint) {
|
||||||
this.header(HttpHeaders.COOKIE, "accessToken=token")
|
this.header(HttpHeaders.AUTHORIZATION, "Bearer token")
|
||||||
body?.let {
|
body?.let {
|
||||||
this.contentType = MediaType.APPLICATION_JSON
|
this.contentType = MediaType.APPLICATION_JSON
|
||||||
this.content = objectMapper.writeValueAsString(it)
|
this.content = objectMapper.writeValueAsString(it)
|
||||||
@ -69,12 +69,12 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
}.andExpect(assert)
|
}.andExpect(assert)
|
||||||
|
|
||||||
fun runDeleteTest(
|
fun runDeleteTest(
|
||||||
mockMvc: MockMvc,
|
mockMvc: MockMvc,
|
||||||
endpoint: String,
|
endpoint: String,
|
||||||
log: Boolean = false,
|
log: Boolean = false,
|
||||||
assert: MockMvcResultMatchersDsl.() -> Unit
|
assert: MockMvcResultMatchersDsl.() -> Unit
|
||||||
): ResultActionsDsl = mockMvc.delete(endpoint) {
|
): ResultActionsDsl = mockMvc.delete(endpoint) {
|
||||||
header(HttpHeaders.COOKIE, "accessToken=token")
|
header(HttpHeaders.AUTHORIZATION, "Bearer token")
|
||||||
}.apply {
|
}.apply {
|
||||||
log.takeIf { it }?.let { this.andDo { print() } }
|
log.takeIf { it }?.let { this.andDo { print() } }
|
||||||
}.andExpect(assert)
|
}.andExpect(assert)
|
||||||
@ -107,16 +107,20 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun <T> MvcResult.readValue(valueType: Class<T>): T = this.response.contentAsString
|
fun <T> MvcResult.readValue(valueType: Class<T>): T = this.response.contentAsString
|
||||||
.takeIf { it.isNotBlank() }
|
.takeIf { it.isNotBlank() }
|
||||||
?.let { readValue(it, valueType) }
|
?.let { readValue(it, valueType) }
|
||||||
?: throw RuntimeException("""
|
?: throw RuntimeException(
|
||||||
|
"""
|
||||||
[Test] Exception occurred while reading response json: ${this.response.contentAsString} with value type: $valueType
|
[Test] Exception occurred while reading response json: ${this.response.contentAsString} with value type: $valueType
|
||||||
""".trimIndent())
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
fun <T> readValue(responseJson: String, valueType: Class<T>): T = objectMapper
|
fun <T> readValue(responseJson: String, valueType: Class<T>): T = objectMapper
|
||||||
.readTree(responseJson)["data"]
|
.readTree(responseJson)["data"]
|
||||||
?.let { objectMapper.convertValue(it, valueType) }
|
?.let { objectMapper.convertValue(it, valueType) }
|
||||||
?: throw RuntimeException("""
|
?: throw RuntimeException(
|
||||||
|
"""
|
||||||
[Test] Exception occurred while reading response json: $responseJson with value type: $valueType
|
[Test] Exception occurred while reading response json: $responseJson with value type: $valueType
|
||||||
""".trimIndent())
|
""".trimIndent()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user