feat: 새로운 스키마에 맞춘 테스트 AuthUtil 기능 추가 및 FK 오류 방지를 위한 테스트에서의 region 테이블 삭제 방지

This commit is contained in:
이상진 2025-09-11 17:06:35 +09:00
parent 0b5d91d301
commit 1e9dbd87c3
2 changed files with 51 additions and 4 deletions

View File

@ -26,6 +26,9 @@ class DatabaseCleaner(
jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE") jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE")
tables.forEach { tables.forEach {
if (it == "region") {
return@forEach
}
jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY") jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY")
} }
jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY TRUE") jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY TRUE")

View File

@ -8,14 +8,18 @@ import io.restassured.response.Response
import io.restassured.response.ValidatableResponse import io.restassured.response.ValidatableResponse
import io.restassured.specification.RequestSpecification import io.restassured.specification.RequestSpecification
import org.springframework.http.MediaType import org.springframework.http.MediaType
import roomescape.admin.infrastructure.persistence.AdminEntity
import roomescape.admin.infrastructure.persistence.AdminRepository
import roomescape.auth.web.LoginRequest import roomescape.auth.web.LoginRequest
import roomescape.auth.web.LoginRequestV2
import roomescape.common.config.next import roomescape.common.config.next
import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.common.dto.PrincipalType
import roomescape.member.infrastructure.persistence.MemberRepository import roomescape.member.infrastructure.persistence.*
import roomescape.member.infrastructure.persistence.Role
class AuthUtil( class AuthUtil(
private val memberRepository: MemberRepository private val memberRepository: MemberRepository,
private val userRepository: UserRepository,
private val adminRepository: AdminRepository
) { ) {
fun login(email: String, password: String, role: Role = Role.MEMBER): String { fun login(email: String, password: String, role: Role = Role.MEMBER): String {
if (!memberRepository.existsByEmail(email)) { if (!memberRepository.existsByEmail(email)) {
@ -54,6 +58,46 @@ class AuthUtil(
MemberFixture.user.email, MemberFixture.user.email,
MemberFixture.user.password MemberFixture.user.password
) ?: throw AssertionError("Unexpected Exception Occurred.") ) ?: throw AssertionError("Unexpected Exception Occurred.")
fun adminLogin(admin: AdminEntity): String {
if (adminRepository.findByAccount(admin.account) == null) {
adminRepository.save(admin)
}
return Given {
contentType(MediaType.APPLICATION_JSON_VALUE)
body(LoginRequestV2(account = admin.account, password = admin.password, principalType = PrincipalType.ADMIN))
} When {
post("/auth/login")
} Then {
statusCode(200)
} Extract {
path("data.accessToken")
}
}
fun defaultAdminLogin(): String = adminLogin(AdminFixture.default)
fun userLogin(user: UserEntity): String {
if (userRepository.findByEmail(user.email) == null) {
userRepository.save(user)
}
return Given {
contentType(MediaType.APPLICATION_JSON_VALUE)
body(LoginRequestV2(account = user.email, password = user.password, principalType = PrincipalType.USER))
} When {
post("/auth/login")
} Then {
statusCode(200)
} Extract {
path("data.accessToken")
}
}
fun defaultUserLogin(): String = userLogin(UserFixture.default)
} }
fun runTest( fun runTest(