generated from pricelees/issue-pr-template
refactor: 새로 정의한 API 테스트 클래스를 바탕으로 MemberControllerTest 수정
This commit is contained in:
parent
6f87780344
commit
be9a6bc80e
@ -1,17 +1,21 @@
|
||||
package roomescape.member.controller
|
||||
|
||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||
import io.kotest.assertions.assertSoftly
|
||||
import io.kotest.matchers.collections.shouldContainAll
|
||||
import io.kotest.matchers.shouldBe
|
||||
import io.mockk.every
|
||||
import io.restassured.module.kotlin.extensions.Extract
|
||||
import org.hamcrest.Matchers.containsString
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
|
||||
import org.springframework.test.web.servlet.MockMvc
|
||||
import roomescape.member.web.MemberController
|
||||
import roomescape.member.web.MembersResponse
|
||||
import roomescape.util.MemberFixture
|
||||
import roomescape.util.RoomescapeApiTest
|
||||
import roomescape.member.web.MembersResponse
|
||||
|
||||
class MemberControllerTest : RoomescapeApiTest() {
|
||||
@WebMvcTest(controllers = [MemberController::class])
|
||||
class MemberControllerTest(
|
||||
@Autowired private val mockMvc: MockMvc
|
||||
) : RoomescapeApiTest() {
|
||||
|
||||
init {
|
||||
given("GET /members 요청을") {
|
||||
@ -24,16 +28,21 @@ class MemberControllerTest : RoomescapeApiTest() {
|
||||
)
|
||||
|
||||
`when`("관리자가 보내면") {
|
||||
setUpAdmin()
|
||||
loginAsAdmin()
|
||||
|
||||
then("성공한다.") {
|
||||
val result: Any = runGetTest(endpoint) {
|
||||
statusCode(200)
|
||||
} Extract {
|
||||
path("data")
|
||||
}
|
||||
val result: String = runGetTest(
|
||||
mockMvc = mockMvc,
|
||||
endpoint = endpoint,
|
||||
log = true
|
||||
) {
|
||||
status { isOk() }
|
||||
}.andReturn().response.contentAsString
|
||||
|
||||
val response: MembersResponse = jacksonObjectMapper().convertValue(result, MembersResponse::class.java)
|
||||
val response: MembersResponse = readValue(
|
||||
responseJson = result,
|
||||
valueType = MembersResponse::class.java
|
||||
)
|
||||
|
||||
assertSoftly(response.members) {
|
||||
it.size shouldBe 3
|
||||
@ -44,20 +53,32 @@ class MemberControllerTest : RoomescapeApiTest() {
|
||||
|
||||
`when`("관리자가 아니면 로그인 페이지로 이동한다.") {
|
||||
then("비회원") {
|
||||
setUpNotLoggedIn()
|
||||
doNotLogin()
|
||||
|
||||
runGetTest(endpoint) {
|
||||
statusCode(200)
|
||||
body(containsString("<title>Login</title>"))
|
||||
runGetTest(
|
||||
mockMvc = mockMvc,
|
||||
endpoint = endpoint,
|
||||
log = true
|
||||
) {
|
||||
status { is3xxRedirection() }
|
||||
header {
|
||||
string("Location", "/login")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
then("일반 회원") {
|
||||
setUpUser()
|
||||
loginAsUser()
|
||||
|
||||
runGetTest(endpoint) {
|
||||
statusCode(200)
|
||||
body(containsString("<title>Login</title>"))
|
||||
runGetTest(
|
||||
mockMvc = mockMvc,
|
||||
endpoint = endpoint,
|
||||
log = true
|
||||
) {
|
||||
status { is3xxRedirection() }
|
||||
header {
|
||||
string("Location", "/login")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user