generated from pricelees/issue-pr-template
refactor: AuthUtil -> TestAuthUtil 네이밍 수정 및 클래스 분리
This commit is contained in:
parent
5b4df7bef6
commit
228ea32db1
@ -38,7 +38,7 @@ class AuthApiTest(
|
||||
AdminFixture.hqDefault
|
||||
).forEach {
|
||||
test("${it.type} 타입 관리자") {
|
||||
val admin = authUtil.createAdmin(it)
|
||||
val admin = testAuthUtil.createAdmin(it)
|
||||
|
||||
runLoginSuccessTest(
|
||||
id = admin.id,
|
||||
@ -56,7 +56,7 @@ class AuthApiTest(
|
||||
}
|
||||
|
||||
test("회원") {
|
||||
val user: UserEntity = authUtil.signup(UserFixture.createRequest)
|
||||
val user: UserEntity = testAuthUtil.signup(UserFixture.createRequest)
|
||||
|
||||
runLoginSuccessTest(
|
||||
id = user.id,
|
||||
@ -73,7 +73,7 @@ class AuthApiTest(
|
||||
context("실패 응답") {
|
||||
context("계정이 맞으면 로그인 실패 이력을 남긴다.") {
|
||||
test("비밀번호가 틀린 경우") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
val admin = testAuthUtil.createAdmin(AdminFixture.default)
|
||||
val request = LoginRequest(admin.account, "wrong_password", PrincipalType.ADMIN)
|
||||
|
||||
runTest(
|
||||
@ -96,7 +96,7 @@ class AuthApiTest(
|
||||
}
|
||||
|
||||
test("토큰 생성 과정에서 오류가 발생하는 경우") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
val admin = testAuthUtil.createAdmin(AdminFixture.default)
|
||||
val request = LoginRequest(admin.account, admin.password, PrincipalType.ADMIN)
|
||||
|
||||
every {
|
||||
@ -125,7 +125,7 @@ class AuthApiTest(
|
||||
|
||||
context("계정이 일치하지 않으면 로그인 실패 이력을 남기지 않는다.") {
|
||||
test("회원") {
|
||||
val user = authUtil.signup(UserFixture.createRequest)
|
||||
val user = testAuthUtil.signup(UserFixture.createRequest)
|
||||
val invalidEmail = "test@email.com".also {
|
||||
it shouldNotBe user.email
|
||||
}
|
||||
@ -149,7 +149,7 @@ class AuthApiTest(
|
||||
}
|
||||
|
||||
test("관리자") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
val admin = testAuthUtil.createAdmin(AdminFixture.default)
|
||||
val invalidAccount = "invalid".also {
|
||||
it shouldNotBe admin.account
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ class FailOnSaveLoginHistoryTest(
|
||||
}
|
||||
|
||||
test("회원") {
|
||||
val user = authUtil.signup(UserFixture.createRequest)
|
||||
val user = testAuthUtil.signup(UserFixture.createRequest)
|
||||
val request = LoginRequest(user.email, user.password, PrincipalType.USER)
|
||||
|
||||
runTest(
|
||||
@ -44,7 +44,7 @@ class FailOnSaveLoginHistoryTest(
|
||||
}
|
||||
|
||||
test("관리자") {
|
||||
val admin = authUtil.createAdmin(AdminFixture.default)
|
||||
val admin = testAuthUtil.createAdmin(AdminFixture.default)
|
||||
val request = LoginRequest(admin.account, admin.password, PrincipalType.ADMIN)
|
||||
|
||||
runTest(
|
||||
|
||||
@ -43,7 +43,7 @@ class PaymentAPITest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -165,8 +165,8 @@ class PaymentAPITest(
|
||||
PaymentMethod.entries.filter { it !in supportedMethod }.forEach {
|
||||
test("결제 수단: ${it.koreanName}") {
|
||||
val reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin()
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin()
|
||||
)
|
||||
|
||||
val request = PaymentFixture.confirmRequest
|
||||
@ -183,7 +183,7 @@ class PaymentAPITest(
|
||||
)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = "/payments?reservationId=${reservation.id}",
|
||||
requestBody = PaymentFixture.confirmRequest,
|
||||
@ -209,7 +209,7 @@ class PaymentAPITest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
requestBody = PaymentFixture.cancelRequest,
|
||||
@ -219,10 +219,10 @@ class PaymentAPITest(
|
||||
}
|
||||
|
||||
test("정상 취소") {
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
val confirmRequest = PaymentFixture.confirmRequest
|
||||
val reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = userToken
|
||||
)
|
||||
|
||||
@ -266,9 +266,9 @@ class PaymentAPITest(
|
||||
}
|
||||
|
||||
test("예약에 대한 결제 정보가 없으면 실패한다.") {
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
val reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = userToken,
|
||||
)
|
||||
|
||||
@ -312,8 +312,8 @@ class PaymentAPITest(
|
||||
val request = PaymentFixture.confirmRequest.copy(paymentKey = paymentKey, amount = amount)
|
||||
|
||||
val reservation: ReservationEntity = dummyInitializer.createPendingReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin(),
|
||||
)
|
||||
|
||||
val method = if (easyPayDetail != null) {
|
||||
@ -335,7 +335,7 @@ class PaymentAPITest(
|
||||
} returns clientResponse
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
using = {
|
||||
body(request)
|
||||
},
|
||||
|
||||
@ -55,7 +55,7 @@ class ReservationApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -66,13 +66,13 @@ class ReservationApiTest(
|
||||
|
||||
test("정상 생성") {
|
||||
val schedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
request = ScheduleFixture.createRequest,
|
||||
status = ScheduleStatus.HOLD
|
||||
)
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
using = {
|
||||
body(commonRequest.copy(scheduleId = schedule.id))
|
||||
},
|
||||
@ -95,13 +95,13 @@ class ReservationApiTest(
|
||||
|
||||
test("예약을 생성할 때 해당 일정이 ${ScheduleStatus.HOLD} 상태가 아니면 실패한다.") {
|
||||
val schedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
request = ScheduleFixture.createRequest,
|
||||
status = ScheduleStatus.AVAILABLE
|
||||
)
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
using = {
|
||||
body(commonRequest.copy(scheduleId = schedule.id))
|
||||
},
|
||||
@ -116,7 +116,7 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
test("예약 인원이 테마의 최소 인원보다 작거나 최대 인원보다 많으면 실패한다.") {
|
||||
val adminToken = authUtil.defaultStoreAdminLogin()
|
||||
val adminToken = testAuthUtil.defaultStoreAdminLogin()
|
||||
val theme: ThemeEntity = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = ThemeFixture.createRequest
|
||||
@ -128,7 +128,7 @@ class ReservationApiTest(
|
||||
status = ScheduleStatus.HOLD
|
||||
)
|
||||
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
|
||||
runExceptionTest(
|
||||
token = userToken,
|
||||
@ -156,7 +156,7 @@ class ReservationApiTest(
|
||||
context("필수 입력값이 입력되지 않으면 실패한다.") {
|
||||
test("예약자명") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
requestBody = commonRequest.copy(reserverName = ""),
|
||||
@ -166,7 +166,7 @@ class ReservationApiTest(
|
||||
|
||||
test("예약자 연락처") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
requestBody = commonRequest.copy(reserverContact = ""),
|
||||
@ -190,7 +190,7 @@ class ReservationApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -199,10 +199,10 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
|
||||
val reservation: ReservationEntity = dummyInitializer.createPendingReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = userToken,
|
||||
)
|
||||
|
||||
@ -228,7 +228,7 @@ class ReservationApiTest(
|
||||
|
||||
test("예약이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = "/reservations/$INVALID_PK/confirm",
|
||||
expectedErrorCode = ReservationErrorCode.RESERVATION_NOT_FOUND
|
||||
@ -250,7 +250,7 @@ class ReservationApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -259,10 +259,10 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
|
||||
val reservation: ReservationEntity = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = userToken,
|
||||
)
|
||||
|
||||
@ -291,7 +291,7 @@ class ReservationApiTest(
|
||||
|
||||
test("예약이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = "/reservations/$INVALID_PK/cancel",
|
||||
requestBody = ReservationCancelRequest(cancelReason = "test"),
|
||||
@ -301,12 +301,12 @@ class ReservationApiTest(
|
||||
|
||||
test("다른 회원의 예약을 취소할 수 없다.") {
|
||||
val reservation: ReservationEntity = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin(),
|
||||
)
|
||||
|
||||
val otherUserToken =
|
||||
authUtil.userLogin(UserFixture.createUser(email = "test@test.com", phone = "01011111111"))
|
||||
testAuthUtil.userLogin(UserFixture.createUser(email = "test@test.com", phone = "01011111111"))
|
||||
|
||||
runExceptionTest(
|
||||
token = otherUserToken,
|
||||
@ -332,7 +332,7 @@ class ReservationApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -341,8 +341,8 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val userToken = authUtil.defaultUserLogin()
|
||||
val adminToken = authUtil.defaultStoreAdminLogin()
|
||||
val userToken = testAuthUtil.defaultUserLogin()
|
||||
val adminToken = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
for (i in 1..3) {
|
||||
dummyInitializer.createConfirmReservation(
|
||||
@ -398,7 +398,7 @@ class ReservationApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.POST,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -413,8 +413,8 @@ class ReservationApiTest(
|
||||
|
||||
beforeTest {
|
||||
reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin(),
|
||||
)
|
||||
}
|
||||
|
||||
@ -480,7 +480,7 @@ class ReservationApiTest(
|
||||
|
||||
val cancelReason = "테스트입니다."
|
||||
|
||||
val user = authUtil.defaultUser()
|
||||
val user = testAuthUtil.defaultUser()
|
||||
|
||||
dummyInitializer.cancelPayment(
|
||||
userId = user.id,
|
||||
@ -547,7 +547,7 @@ class ReservationApiTest(
|
||||
|
||||
test("예약이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = "/reservations/$INVALID_PK/detail",
|
||||
expectedErrorCode = ReservationErrorCode.RESERVATION_NOT_FOUND
|
||||
@ -556,12 +556,12 @@ class ReservationApiTest(
|
||||
|
||||
test("예약은 있지만, 결제 정보를 찾을 수 없으면 null로 지정한다.") {
|
||||
val reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin(),
|
||||
)
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
get("/reservations/${reservation.id}/detail")
|
||||
},
|
||||
@ -574,8 +574,8 @@ class ReservationApiTest(
|
||||
|
||||
test("예약과 결제는 있지만, 결제 세부 내역이 없으면 세부 내역만 null로 지정한다..") {
|
||||
val reservation = dummyInitializer.createConfirmReservation(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = authUtil.defaultUserLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
reserverToken = testAuthUtil.defaultUserLogin(),
|
||||
)
|
||||
|
||||
dummyInitializer.createPayment(
|
||||
@ -586,7 +586,7 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
get("/reservations/${reservation.id}/detail")
|
||||
},
|
||||
@ -621,7 +621,7 @@ class ReservationApiTest(
|
||||
reservation: ReservationEntity
|
||||
): LinkedHashMap<String, Any> {
|
||||
return runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
get("/reservations/${reservation.id}/detail")
|
||||
},
|
||||
@ -636,7 +636,7 @@ class ReservationApiTest(
|
||||
}
|
||||
|
||||
private fun initializeForPopularThemeTest(): MostReservedThemeIdListResponse {
|
||||
val user: UserEntity = authUtil.defaultUser()
|
||||
val user: UserEntity = testAuthUtil.defaultUser()
|
||||
|
||||
val themeIds: List<Long> = (1..5).map {
|
||||
themeRepository.save(
|
||||
|
||||
@ -32,7 +32,7 @@ class ScheduleApiTest(
|
||||
val endpoint = "/schedules/themes?date=$date"
|
||||
|
||||
test("정상 응답") {
|
||||
val adminToken = authUtil.defaultStoreAdminLogin()
|
||||
val adminToken = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
for (i in 1..10) {
|
||||
dummyInitializer.createSchedule(
|
||||
@ -45,7 +45,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
get(endpoint)
|
||||
},
|
||||
@ -61,7 +61,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("정상 응답") {
|
||||
val date = LocalDate.now().plusDays(1)
|
||||
val adminToken = authUtil.defaultStoreAdminLogin()
|
||||
val adminToken = testAuthUtil.defaultStoreAdminLogin()
|
||||
val createdSchedule = dummyInitializer.createSchedule(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(date = date, time = LocalTime.now())
|
||||
@ -79,7 +79,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
get("/schedules?date=$date&themeId=${createdSchedule.themeId}")
|
||||
},
|
||||
@ -109,7 +109,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -120,7 +120,7 @@ class ScheduleApiTest(
|
||||
val admin = AdminFixture.create(permissionLevel = AdminPermissionLevel.READ_SUMMARY)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -129,7 +129,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
val createdSchedule = dummyInitializer.createSchedule(
|
||||
adminToken = token,
|
||||
@ -161,7 +161,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("일정이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = "/schedules/$INVALID_PK",
|
||||
expectedErrorCode = ScheduleErrorCode.SCHEDULE_NOT_FOUND
|
||||
@ -184,7 +184,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -197,7 +197,7 @@ class ScheduleApiTest(
|
||||
val admin = AdminFixture.create(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -208,7 +208,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("정상 생성 및 감사 정보 확인") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
val themeId: Long = dummyInitializer.createTheme(
|
||||
adminToken = token,
|
||||
@ -246,7 +246,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("이미 동일한 날짜, 시간, 테마인 일정이 있으면 실패한다.") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
val date = LocalDate.now().plusDays(1)
|
||||
val time = LocalTime.of(10, 0)
|
||||
|
||||
@ -267,7 +267,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("입력된 날짜 + 시간이 현재 시간 이전이면 실패한다.") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
val body = createRequest.copy(LocalDate.now(), LocalTime.now().minusMinutes(1))
|
||||
|
||||
runExceptionTest(
|
||||
@ -294,7 +294,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -304,12 +304,12 @@ class ScheduleApiTest(
|
||||
|
||||
test("해당 일정이 ${ScheduleStatus.AVAILABLE} 상태이면 정상 응답") {
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
request = createRequest
|
||||
)
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
on = {
|
||||
patch("/schedules/${createdSchedule.id}/hold")
|
||||
},
|
||||
@ -326,7 +326,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("예약이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = "/schedules/$INVALID_PK/hold",
|
||||
expectedErrorCode = ScheduleErrorCode.SCHEDULE_NOT_FOUND
|
||||
@ -334,7 +334,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("해당 일정이 ${ScheduleStatus.AVAILABLE} 상태가 아니면 실패한다.") {
|
||||
val adminToken = authUtil.defaultStoreAdminLogin()
|
||||
val adminToken = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = adminToken,
|
||||
@ -361,7 +361,7 @@ class ScheduleApiTest(
|
||||
)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = "/schedules/${createdSchedule.id}/hold",
|
||||
expectedErrorCode = ScheduleErrorCode.SCHEDULE_NOT_AVAILABLE
|
||||
@ -389,7 +389,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
requestBody = updateRequest,
|
||||
endpoint = endpoint,
|
||||
@ -402,7 +402,7 @@ class ScheduleApiTest(
|
||||
val admin = AdminFixture.create(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.PATCH,
|
||||
requestBody = updateRequest,
|
||||
endpoint = endpoint,
|
||||
@ -414,14 +414,14 @@ class ScheduleApiTest(
|
||||
|
||||
test("정상 수정 및 감사 정보 변경 확인") {
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = authUtil.defaultStoreAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultStoreAdminLogin(),
|
||||
request = createRequest.copy(
|
||||
date = LocalDate.now().plusDays(1),
|
||||
time = LocalTime.now().plusMinutes(1),
|
||||
)
|
||||
)
|
||||
|
||||
val otherAdminToken = authUtil.adminLogin(
|
||||
val otherAdminToken = testAuthUtil.adminLogin(
|
||||
AdminFixture.create(account = "otherAdmin", phone = "01099999999")
|
||||
)
|
||||
|
||||
@ -449,7 +449,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("입력값이 없으면 수정하지 않는다.") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = token,
|
||||
@ -477,7 +477,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("일정이 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
requestBody = updateRequest,
|
||||
endpoint = "/schedules/${INVALID_PK}",
|
||||
@ -486,7 +486,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("입력된 날짜 + 시간이 현재 시간 이전이면 실패한다.") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = token,
|
||||
request =
|
||||
@ -518,7 +518,7 @@ class ScheduleApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -530,7 +530,7 @@ class ScheduleApiTest(
|
||||
val admin = AdminFixture.create(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -540,7 +540,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("정상 삭제") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = token,
|
||||
request = createRequest
|
||||
@ -560,7 +560,7 @@ class ScheduleApiTest(
|
||||
}
|
||||
|
||||
test("예약 중이거나 예약이 완료된 일정이면 실패한다.") {
|
||||
val token = authUtil.defaultStoreAdminLogin()
|
||||
val token = testAuthUtil.defaultStoreAdminLogin()
|
||||
|
||||
val createdSchedule: ScheduleEntity = dummyInitializer.createSchedule(
|
||||
adminToken = token,
|
||||
|
||||
@ -47,11 +47,11 @@ abstract class FunSpecSpringbootTest : FunSpec({
|
||||
@LocalServerPort
|
||||
var port: Int = 0
|
||||
|
||||
lateinit var authUtil: AuthUtil
|
||||
lateinit var testAuthUtil: TestAuthUtil
|
||||
|
||||
override suspend fun beforeSpec(spec: Spec) {
|
||||
RestAssured.port = port
|
||||
authUtil = AuthUtil(userRepository, adminRepository, storeRepository)
|
||||
testAuthUtil = TestAuthUtil(userRepository, adminRepository, storeRepository)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
94
src/test/kotlin/roomescape/supports/TestAuthUtil.kt
Normal file
94
src/test/kotlin/roomescape/supports/TestAuthUtil.kt
Normal file
@ -0,0 +1,94 @@
|
||||
package roomescape.supports
|
||||
|
||||
import io.restassured.module.kotlin.extensions.Extract
|
||||
import io.restassured.module.kotlin.extensions.Given
|
||||
import io.restassured.module.kotlin.extensions.Then
|
||||
import io.restassured.module.kotlin.extensions.When
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.http.HttpStatus
|
||||
import org.springframework.http.MediaType
|
||||
import roomescape.admin.infrastructure.persistence.AdminEntity
|
||||
import roomescape.admin.infrastructure.persistence.AdminRepository
|
||||
import roomescape.auth.web.LoginRequest
|
||||
import roomescape.common.dto.PrincipalType
|
||||
import roomescape.store.infrastructure.persistence.StoreRepository
|
||||
import roomescape.user.infrastructure.persistence.UserEntity
|
||||
import roomescape.user.infrastructure.persistence.UserRepository
|
||||
import roomescape.user.web.UserCreateRequest
|
||||
|
||||
class TestAuthUtil(
|
||||
private val userRepository: UserRepository,
|
||||
private val adminRepository: AdminRepository,
|
||||
private val storeRepository: StoreRepository,
|
||||
) {
|
||||
fun createAdmin(admin: AdminEntity): AdminEntity {
|
||||
val storeId = admin.storeId
|
||||
if (storeId != null && storeRepository.findByIdOrNull(storeId) == null) {
|
||||
storeRepository.save(
|
||||
StoreFixture.create(
|
||||
id = storeId,
|
||||
businessRegNum = randomBusinessRegNum(),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
return adminRepository.save(admin)
|
||||
}
|
||||
|
||||
fun signup(request: UserCreateRequest): UserEntity {
|
||||
val userId: Long = Given {
|
||||
contentType(MediaType.APPLICATION_JSON_VALUE)
|
||||
body(request)
|
||||
} When {
|
||||
post("/users")
|
||||
} Then {
|
||||
statusCode(HttpStatus.OK.value())
|
||||
} Extract {
|
||||
path("data.id")
|
||||
}
|
||||
|
||||
return userRepository.findByIdOrNull(userId)
|
||||
?: throw AssertionError("Unexpected Exception Occurred.")
|
||||
}
|
||||
|
||||
fun adminLogin(admin: AdminEntity): String {
|
||||
val saved = createAdmin(admin)
|
||||
val requestBody = LoginRequest(saved.account, saved.password, PrincipalType.ADMIN)
|
||||
|
||||
return Given {
|
||||
contentType(MediaType.APPLICATION_JSON_VALUE)
|
||||
body(requestBody)
|
||||
} When {
|
||||
post("/auth/login")
|
||||
} Then {
|
||||
statusCode(200)
|
||||
} Extract {
|
||||
path("data.accessToken")
|
||||
}
|
||||
}
|
||||
|
||||
fun defaultStoreAdminLogin(): String = adminLogin(AdminFixture.storeDefault)
|
||||
fun defaultHqAdminLogin(): String = adminLogin(AdminFixture.hqDefault)
|
||||
|
||||
fun userLogin(user: UserEntity): String {
|
||||
if (userRepository.findByEmail(user.email) == null) {
|
||||
userRepository.save(user)
|
||||
}
|
||||
|
||||
return Given {
|
||||
contentType(MediaType.APPLICATION_JSON_VALUE)
|
||||
body(LoginRequest(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 defaultUser(): UserEntity = userRepository.findByEmail(UserFixture.default.email)
|
||||
?: userRepository.save(UserFixture.default)
|
||||
}
|
||||
@ -19,13 +19,12 @@ import roomescape.theme.business.MIN_PRICE
|
||||
import roomescape.theme.exception.ThemeErrorCode
|
||||
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
||||
import roomescape.theme.infrastructure.persistence.ThemeRepository
|
||||
import roomescape.theme.web.ThemeIdListRequest
|
||||
import roomescape.theme.web.ThemeUpdateRequest
|
||||
import roomescape.supports.*
|
||||
import roomescape.supports.ThemeFixture.createRequest
|
||||
import kotlin.random.Random
|
||||
|
||||
class ThemeApiTest(
|
||||
class HQAdminThemeApiTest(
|
||||
private val themeRepository: ThemeRepository
|
||||
) : FunSpecSpringbootTest() {
|
||||
|
||||
@ -45,7 +44,7 @@ class ThemeApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -58,7 +57,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createStoreAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -71,7 +70,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createHqAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -84,7 +83,7 @@ class ThemeApiTest(
|
||||
|
||||
|
||||
test("정상 생성 및 감사 정보 확인") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
|
||||
runTest(
|
||||
token = token,
|
||||
@ -112,7 +111,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("이미 동일한 이름의 테마가 있으면 실패한다.") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
val commonName = "test123"
|
||||
dummyInitializer.createTheme(
|
||||
adminToken = token,
|
||||
@ -135,7 +134,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("금액이 ${MIN_PRICE}원 미만이면 실패한다.") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -158,7 +157,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("field: availableMinutes") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -172,7 +171,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("field: expectedMinutesFrom") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -186,7 +185,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("field: expectedMinutesTo") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -202,7 +201,7 @@ class ThemeApiTest(
|
||||
|
||||
context("시간 범위가 잘못 지정되면 실패한다.") {
|
||||
test("최소 예상 시간 > 최대 예상 시간") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -219,7 +218,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("최대 예상 시간 > 이용 가능 시간") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -249,7 +248,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("field: minParticipants") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -263,7 +262,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("field: maxParticipants") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -279,7 +278,7 @@ class ThemeApiTest(
|
||||
|
||||
context("인원 범위가 잘못 지정되면 실패한다.") {
|
||||
test("최소 인원 > 최대 인원") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
runTest(
|
||||
token = token,
|
||||
using = {
|
||||
@ -297,59 +296,6 @@ class ThemeApiTest(
|
||||
}
|
||||
}
|
||||
|
||||
context("입력된 모든 ID에 대한 테마를 조회한다.") {
|
||||
test("정상 응답") {
|
||||
val adminToken = authUtil.defaultHqAdminLogin()
|
||||
val themeSize = 3
|
||||
val themeIds = mutableListOf<Long>()
|
||||
|
||||
for (i in 1..themeSize) {
|
||||
dummyInitializer.createTheme(adminToken, createRequest.copy(name = "test$i"))
|
||||
.also { themeIds.add(it.id) }
|
||||
}
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
using = {
|
||||
body(ThemeIdListRequest(themeIds))
|
||||
},
|
||||
on = {
|
||||
post("/themes/batch")
|
||||
},
|
||||
expect = {
|
||||
statusCode(HttpStatus.OK.value())
|
||||
body("data.themes.size()", equalTo(themeSize))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
test("없는 테마가 있으면 생략한다.") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val themeSize = 3
|
||||
val themeIds = mutableListOf<Long>()
|
||||
|
||||
for (i in 1..themeSize) {
|
||||
dummyInitializer.createTheme(token, createRequest.copy(name = "test$i"))
|
||||
.also { themeIds.add(it.id) }
|
||||
}
|
||||
|
||||
themeIds.add(INVALID_PK)
|
||||
runTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
using = {
|
||||
body(ThemeIdListRequest(themeIds))
|
||||
},
|
||||
on = {
|
||||
post("/themes/batch")
|
||||
},
|
||||
expect = {
|
||||
statusCode(HttpStatus.OK.value())
|
||||
body("data.themes.size()", equalTo(themeSize))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
context("관리자가 모든 테마를 조회한다.") {
|
||||
val endpoint = "/admin/themes"
|
||||
val requests = listOf(
|
||||
@ -368,7 +314,7 @@ class ThemeApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -380,7 +326,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createStoreAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.POST,
|
||||
requestBody = createRequest,
|
||||
endpoint = endpoint,
|
||||
@ -392,7 +338,7 @@ class ThemeApiTest(
|
||||
|
||||
|
||||
test("비공개 테마까지 포함하여 간단한 정보만 조회된다.") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
requests.forEach { dummyInitializer.createTheme(token, it) }
|
||||
|
||||
runTest(
|
||||
@ -411,40 +357,6 @@ class ThemeApiTest(
|
||||
}
|
||||
}
|
||||
|
||||
context("ID로 테마 정보를 조회한다.") {
|
||||
test("성공 응답") {
|
||||
val createdTheme: ThemeEntity = dummyInitializer.createTheme(
|
||||
adminToken = authUtil.defaultHqAdminLogin(),
|
||||
request = createRequest
|
||||
)
|
||||
|
||||
runTest(
|
||||
on = {
|
||||
get("/themes/${createdTheme.id}")
|
||||
},
|
||||
expect = {
|
||||
body("data.id", equalTo(createdTheme.id))
|
||||
body("data.name", equalTo(createdTheme.name))
|
||||
assertProperties(
|
||||
props = setOf(
|
||||
"id", "name", "thumbnailUrl", "description", "difficulty", "price",
|
||||
"minParticipants", "maxParticipants",
|
||||
"availableMinutes", "expectedMinutesFrom", "expectedMinutesTo"
|
||||
),
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
test("테마가 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
method = HttpMethod.GET,
|
||||
endpoint = "/themes/$INVALID_PK",
|
||||
expectedErrorCode = ThemeErrorCode.THEME_NOT_FOUND
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
context("관리자 페이지에서 특정 테마의 상세 정보를 조회한다.") {
|
||||
context("권한이 없으면 접근할 수 없다.") {
|
||||
val endpoint = "/admin/themes/$INVALID_PK"
|
||||
@ -459,7 +371,7 @@ class ThemeApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -471,7 +383,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createStoreAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -483,7 +395,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createHqAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -494,7 +406,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
val createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = token,
|
||||
request = createRequest
|
||||
@ -522,7 +434,7 @@ class ThemeApiTest(
|
||||
|
||||
test("테마가 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultHqAdminLogin(),
|
||||
token = testAuthUtil.defaultHqAdminLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = "/admin/themes/$INVALID_PK",
|
||||
expectedErrorCode = ThemeErrorCode.THEME_NOT_FOUND
|
||||
@ -531,7 +443,6 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
context("테마를 삭제한다.") {
|
||||
|
||||
context("권한이 없으면 접근할 수 없다.") {
|
||||
val endpoint = "/admin/themes/${INVALID_PK}"
|
||||
|
||||
@ -545,7 +456,7 @@ class ThemeApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -557,7 +468,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createStoreAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -569,7 +480,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createHqAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -580,7 +491,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("정상 삭제") {
|
||||
val token = authUtil.defaultHqAdminLogin()
|
||||
val token = testAuthUtil.defaultHqAdminLogin()
|
||||
val createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = token,
|
||||
request = createRequest
|
||||
@ -601,7 +512,7 @@ class ThemeApiTest(
|
||||
|
||||
test("테마가 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultHqAdminLogin(),
|
||||
token = testAuthUtil.defaultHqAdminLogin(),
|
||||
method = HttpMethod.DELETE,
|
||||
endpoint = "/admin/themes/$INVALID_PK",
|
||||
expectedErrorCode = ThemeErrorCode.THEME_NOT_FOUND
|
||||
@ -625,7 +536,7 @@ class ThemeApiTest(
|
||||
|
||||
test("회원") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultUserLogin(),
|
||||
token = testAuthUtil.defaultUserLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = endpoint,
|
||||
requestBody = request,
|
||||
@ -638,7 +549,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createStoreAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = endpoint,
|
||||
requestBody = request,
|
||||
@ -651,7 +562,7 @@ class ThemeApiTest(
|
||||
val admin = AdminFixture.createHqAdmin(permissionLevel = it)
|
||||
|
||||
runExceptionTest(
|
||||
token = authUtil.adminLogin(admin),
|
||||
token = testAuthUtil.adminLogin(admin),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = endpoint,
|
||||
requestBody = request,
|
||||
@ -666,10 +577,10 @@ class ThemeApiTest(
|
||||
|
||||
test("정상 수정 및 감사 정보 변경 확인") {
|
||||
val createdTheme: ThemeEntity = dummyInitializer.createTheme(
|
||||
adminToken = authUtil.defaultHqAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin(),
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
)
|
||||
val otherAdminToken: String = authUtil.adminLogin(
|
||||
val otherAdminToken: String = testAuthUtil.adminLogin(
|
||||
AdminFixture.createHqAdmin(permissionLevel = AdminPermissionLevel.WRITABLE)
|
||||
)
|
||||
|
||||
@ -696,12 +607,12 @@ class ThemeApiTest(
|
||||
|
||||
test("입력값이 없으면 수정하지 않는다.") {
|
||||
val createdTheme: ThemeEntity = dummyInitializer.createTheme(
|
||||
adminToken = authUtil.defaultHqAdminLogin(),
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin(),
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
)
|
||||
|
||||
runTest(
|
||||
token = authUtil.defaultHqAdminLogin(),
|
||||
token = testAuthUtil.defaultHqAdminLogin(),
|
||||
using = {
|
||||
body(ThemeUpdateRequest())
|
||||
},
|
||||
@ -721,7 +632,7 @@ class ThemeApiTest(
|
||||
|
||||
test("테마가 없으면 실패한다.") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultHqAdminLogin(),
|
||||
token = testAuthUtil.defaultHqAdminLogin(),
|
||||
method = HttpMethod.PATCH,
|
||||
endpoint = "/admin/themes/$INVALID_PK",
|
||||
requestBody = updateRequest,
|
||||
@ -730,7 +641,7 @@ class ThemeApiTest(
|
||||
}
|
||||
|
||||
test("금액이 ${MIN_PRICE}원 미만이면 실패한다.") {
|
||||
val adminToken = authUtil.defaultHqAdminLogin()
|
||||
val adminToken = testAuthUtil.defaultHqAdminLogin()
|
||||
val createdTheme: ThemeEntity = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
@ -750,7 +661,7 @@ class ThemeApiTest(
|
||||
lateinit var createdTheme: ThemeEntity
|
||||
|
||||
beforeTest {
|
||||
adminToken = authUtil.defaultHqAdminLogin()
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin()
|
||||
createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
@ -793,7 +704,7 @@ class ThemeApiTest(
|
||||
lateinit var createdTheme: ThemeEntity
|
||||
|
||||
beforeTest {
|
||||
adminToken = authUtil.defaultHqAdminLogin()
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin()
|
||||
createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
@ -834,7 +745,7 @@ class ThemeApiTest(
|
||||
lateinit var createdTheme: ThemeEntity
|
||||
|
||||
beforeTest {
|
||||
adminToken = authUtil.defaultHqAdminLogin()
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin()
|
||||
createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
@ -867,7 +778,7 @@ class ThemeApiTest(
|
||||
lateinit var createdTheme: ThemeEntity
|
||||
|
||||
beforeTest {
|
||||
adminToken = authUtil.defaultHqAdminLogin()
|
||||
adminToken = testAuthUtil.defaultHqAdminLogin()
|
||||
createdTheme = dummyInitializer.createTheme(
|
||||
adminToken = adminToken,
|
||||
request = createRequest.copy(name = "theme-${Random.nextInt()}")
|
||||
@ -145,7 +145,7 @@ class UserApiTest(
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultStoreAdminLogin(),
|
||||
token = testAuthUtil.defaultStoreAdminLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
@ -154,8 +154,8 @@ class UserApiTest(
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val user = authUtil.defaultUser()
|
||||
val token = authUtil.userLogin(user)
|
||||
val user = testAuthUtil.defaultUser()
|
||||
val token = testAuthUtil.userLogin(user)
|
||||
|
||||
runTest(
|
||||
token = token,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user