generated from pricelees/issue-pr-template
65 lines
2.0 KiB
Kotlin
65 lines
2.0 KiB
Kotlin
package roomescape.common
|
|
|
|
import com.ninjasquad.springmockk.MockkBean
|
|
import io.kotest.core.spec.style.BehaviorSpec
|
|
import io.mockk.every
|
|
import io.restassured.module.kotlin.extensions.Given
|
|
import io.restassured.module.kotlin.extensions.Then
|
|
import io.restassured.module.kotlin.extensions.When
|
|
import io.restassured.response.ValidatableResponse
|
|
import org.springframework.boot.test.context.SpringBootTest
|
|
import org.springframework.boot.test.web.server.LocalServerPort
|
|
import org.springframework.data.repository.findByIdOrNull
|
|
import roomescape.member.infrastructure.entity.Member
|
|
import roomescape.member.infrastructure.entity.MemberRepository
|
|
import roomescape.system.auth.jwt.JwtHandler
|
|
|
|
const val NOT_LOGGED_IN_USERID: Long = 0;
|
|
|
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
|
class RoomescapeApiTest(
|
|
@LocalServerPort val port: Int? = 9090,
|
|
) : BehaviorSpec() {
|
|
|
|
@MockkBean
|
|
lateinit var memberRepository: MemberRepository
|
|
|
|
@MockkBean
|
|
lateinit var jwtHandler: JwtHandler
|
|
|
|
val admin: Member = MemberFixture.admin()
|
|
val user: Member = MemberFixture.user()
|
|
|
|
fun runTest(endpoint: String, assert: ValidatableResponse.() -> Unit): ValidatableResponse {
|
|
return Given {
|
|
port(port!!)
|
|
header("Cookie", "accessToken=token")
|
|
} When {
|
|
get(endpoint)
|
|
} Then assert
|
|
}
|
|
|
|
fun setUpAdmin() {
|
|
every {
|
|
jwtHandler.getMemberIdFromToken(any())
|
|
} returns admin.id
|
|
|
|
every { memberRepository.findByIdOrNull(admin.id!!) } returns admin
|
|
}
|
|
|
|
fun setUpUser() {
|
|
every {
|
|
jwtHandler.getMemberIdFromToken(any())
|
|
} returns user.id
|
|
|
|
every { memberRepository.findByIdOrNull(user.id!!) } returns user
|
|
}
|
|
|
|
fun setUpNotLoggedIn() {
|
|
every {
|
|
jwtHandler.getMemberIdFromToken(any())
|
|
} returns NOT_LOGGED_IN_USERID
|
|
|
|
every { memberRepository.findByIdOrNull(NOT_LOGGED_IN_USERID) } returns null
|
|
}
|
|
} |