diff --git a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt b/src/test/kotlin/roomescape/util/DatabaseCleaner.kt index 12ac477d..b2b6ce43 100644 --- a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt +++ b/src/test/kotlin/roomescape/util/DatabaseCleaner.kt @@ -26,6 +26,9 @@ class DatabaseCleaner( jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE") tables.forEach { + if (it == "region") { + return@forEach + } jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY") } jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY TRUE") diff --git a/src/test/kotlin/roomescape/util/RestAssuredUtils.kt b/src/test/kotlin/roomescape/util/RestAssuredUtils.kt index 752680d1..de99b716 100644 --- a/src/test/kotlin/roomescape/util/RestAssuredUtils.kt +++ b/src/test/kotlin/roomescape/util/RestAssuredUtils.kt @@ -8,14 +8,18 @@ import io.restassured.response.Response import io.restassured.response.ValidatableResponse import io.restassured.specification.RequestSpecification 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.LoginRequestV2 import roomescape.common.config.next -import roomescape.member.infrastructure.persistence.MemberEntity -import roomescape.member.infrastructure.persistence.MemberRepository -import roomescape.member.infrastructure.persistence.Role +import roomescape.common.dto.PrincipalType +import roomescape.member.infrastructure.persistence.* 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 { if (!memberRepository.existsByEmail(email)) { @@ -54,6 +58,46 @@ class AuthUtil( MemberFixture.user.email, MemberFixture.user.password ) ?: 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(