generated from pricelees/issue-pr-template
[#44] 매장 기능 도입 #45
@ -10,18 +10,20 @@ import io.restassured.response.ValidatableResponse
|
||||
import org.hamcrest.CoreMatchers.equalTo
|
||||
import org.springframework.http.HttpStatus
|
||||
import roomescape.admin.exception.AdminErrorCode
|
||||
import roomescape.auth.business.CLAIM_ADMIN_TYPE_KEY
|
||||
import roomescape.auth.business.CLAIM_PERMISSION_KEY
|
||||
import roomescape.auth.business.CLAIM_STORE_ID_KEY
|
||||
import roomescape.auth.exception.AuthErrorCode
|
||||
import roomescape.auth.infrastructure.jwt.JwtUtils
|
||||
import roomescape.auth.infrastructure.persistence.LoginHistoryRepository
|
||||
import roomescape.auth.web.LoginRequest
|
||||
import roomescape.common.dto.PrincipalType
|
||||
import roomescape.user.exception.UserErrorCode
|
||||
import roomescape.user.infrastructure.persistence.UserEntity
|
||||
import roomescape.supports.AdminFixture
|
||||
import roomescape.supports.FunSpecSpringbootTest
|
||||
import roomescape.supports.UserFixture
|
||||
import roomescape.supports.runTest
|
||||
import roomescape.user.exception.UserErrorCode
|
||||
import roomescape.user.infrastructure.persistence.UserEntity
|
||||
|
||||
class AuthApiTest(
|
||||
@SpykBean private val jwtUtils: JwtUtils,
|
||||
@ -31,8 +33,13 @@ class AuthApiTest(
|
||||
init {
|
||||
context("로그인을 시도한다.") {
|
||||
context("성공 응답") {
|
||||
test("관리자") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
listOf(
|
||||
AdminFixture.storeDefault,
|
||||
AdminFixture.hqDefault
|
||||
).forEach {
|
||||
test("${it.type} 타입 관리자") {
|
||||
val admin = authUtil.createAdmin(it)
|
||||
|
||||
runLoginSuccessTest(
|
||||
id = admin.id,
|
||||
account = admin.account,
|
||||
@ -41,9 +48,12 @@ class AuthApiTest(
|
||||
) {
|
||||
val token: String = it.extract().path("data.accessToken")
|
||||
jwtUtils.extractSubject(token) shouldBe admin.id.toString()
|
||||
jwtUtils.extractClaim(token, CLAIM_STORE_ID_KEY) shouldBe admin.storeId?.toString()
|
||||
jwtUtils.extractClaim(token, CLAIM_ADMIN_TYPE_KEY) shouldBe admin.type.name
|
||||
jwtUtils.extractClaim(token, CLAIM_PERMISSION_KEY) shouldBe admin.permissionLevel.name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test("회원") {
|
||||
val user: UserEntity = authUtil.signup(UserFixture.createRequest)
|
||||
@ -61,6 +71,7 @@ class AuthApiTest(
|
||||
}
|
||||
|
||||
context("실패 응답") {
|
||||
context("계정이 맞으면 로그인 실패 이력을 남긴다.") {
|
||||
test("비밀번호가 틀린 경우") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
val request = LoginRequest(admin.account, "wrong_password", PrincipalType.ADMIN)
|
||||
@ -110,6 +121,7 @@ class AuthApiTest(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context("계정이 일치하지 않으면 로그인 실패 이력을 남기지 않는다.") {
|
||||
test("회원") {
|
||||
@ -162,39 +174,6 @@ class AuthApiTest(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context("로그인 상태를 확인한다.") {
|
||||
test("성공 응답") {
|
||||
val token = authUtil.defaultUserLogin()
|
||||
|
||||
runTest(
|
||||
token = token,
|
||||
on = {
|
||||
get("/auth/login/check")
|
||||
},
|
||||
expect = {
|
||||
statusCode(HttpStatus.OK.value())
|
||||
}
|
||||
).also {
|
||||
val name: String = it.extract().path("data.name")
|
||||
val type: String = it.extract().path("data.type")
|
||||
|
||||
name.isBlank() shouldBe false
|
||||
type shouldBe PrincipalType.USER.name
|
||||
}
|
||||
}
|
||||
|
||||
test("로그인 상태가 아니면 실패한다.") {
|
||||
runTest(
|
||||
on = {
|
||||
get("/auth/login/check")
|
||||
},
|
||||
expect = {
|
||||
statusCode(HttpStatus.UNAUTHORIZED.value())
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun runLoginSuccessTest(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user