Skip to content

Commit 1681182

Browse files
committed
ONB-240 chore: Group Delete 검증 제거
1 parent 19206f8 commit 1681182

File tree

6 files changed

+37
-23
lines changed

6 files changed

+37
-23
lines changed

adapter-in/web/src/main/kotlin/com/yapp/bol/group/GroupController.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import com.yapp.bol.group.dto.toCreateGroupResponse
1717
import com.yapp.bol.group.dto.toDto
1818
import com.yapp.bol.group.dto.toListResponse
1919
import com.yapp.bol.group.dto.toResponse
20+
import com.yapp.bol.group.member.MemberValidator
2021
import com.yapp.bol.pagination.offset.PaginationOffsetResponse
2122
import org.springframework.security.access.prepost.PreAuthorize
2223
import org.springframework.web.bind.annotation.DeleteMapping
@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController
3334
class GroupController(
3435
private val groupService: GroupService,
3536
private val fileService: FileService,
37+
private val memberValidator: MemberValidator,
3638
) {
3739
@GetMapping("/default-image")
3840
fun getDefaultImage(): FileResponse {
@@ -99,8 +101,8 @@ class GroupController(
99101
): EmptyResponse {
100102
val userId = getSecurityUserIdOrThrow()
101103

102-
groupService.deleteGroup(userId, groupId)
103-
104+
memberValidator.requiredGroupOwner(groupId, userId)
105+
groupService.deleteGroup(groupId)
104106
return EmptyResponse
105107
}
106108
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.yapp.bol.group.member
2+
3+
import com.yapp.bol.NoPermissionException
4+
import com.yapp.bol.auth.UserId
5+
import com.yapp.bol.group.GroupId
6+
import org.springframework.stereotype.Component
7+
8+
@Component
9+
class MemberValidator(
10+
private val memberService: MemberService,
11+
) {
12+
fun requiredGroupOwner(groupId: GroupId, userId: UserId) {
13+
val member = memberService.findMemberByGroupIdAndUserId(groupId, userId)
14+
15+
if (member == null || member.isOwner().not()) throw NoPermissionException
16+
}
17+
}

adapter-in/web/src/test/kotlin/com/yapp/bol/group/GroupControllerTest.kt

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.yapp.bol.group
22

3-
import com.yapp.bol.NoPermissionDeleteGroupException
3+
import com.yapp.bol.NoPermissionException
44
import com.yapp.bol.auth.UserId
55
import com.yapp.bol.auth.authorizationHeader
66
import com.yapp.bol.base.ARRAY
@@ -22,15 +22,20 @@ import com.yapp.bol.group.member.HostMember
2222
import com.yapp.bol.group.member.MemberId
2323
import com.yapp.bol.group.member.MemberList
2424
import com.yapp.bol.group.member.MemberRole
25+
import com.yapp.bol.group.member.MemberValidator
2526
import com.yapp.bol.group.member.OwnerMember
2627
import com.yapp.bol.pagination.offset.PaginationOffsetResponse
2728
import io.mockk.every
2829
import io.mockk.mockk
30+
import io.mockk.spyk
31+
import org.springframework.boot.test.context.SpringBootTest
2932

33+
@SpringBootTest
3034
class GroupControllerTest : WebControllerTest() {
3135
private val groupService: GroupService = mockk()
3236
private val fileService: FileService = mockk()
33-
override val controller = GroupController(groupService, fileService)
37+
private val memberValidator: MemberValidator = mockk()
38+
override val controller = spyk(GroupController(groupService, fileService, memberValidator))
3439

3540
init {
3641
test("그룹 기본 이미지 가져오기") {
@@ -269,12 +274,12 @@ class GroupControllerTest : WebControllerTest() {
269274
}
270275

271276
context("그룹 삭제") {
277+
val groupId = GroupId(123L)
278+
val userId = UserId(321L)
272279

273280
test("성공") {
274-
val groupId = GroupId(123L)
275-
val userId = UserId(321L)
276-
277-
every { groupService.deleteGroup(userId, groupId) } returns Unit
281+
every { memberValidator.requiredGroupOwner(groupId, userId) } returns Unit
282+
every { groupService.deleteGroup(groupId) } returns Unit
278283

279284
delete("/api/v1/group/{groupId}", arrayOf(groupId.value)) {
280285
authorizationHeader(userId)
@@ -293,15 +298,12 @@ class GroupControllerTest : WebControllerTest() {
293298
}
294299

295300
test("오너가 아닌 사람") {
296-
val groupId = GroupId(123L)
297-
val userId = UserId(321L)
298-
299-
every { groupService.deleteGroup(userId, groupId) } throws NoPermissionDeleteGroupException
301+
every { memberValidator.requiredGroupOwner(groupId, userId) } throws NoPermissionException
300302

301303
delete("/api/v1/group/{groupId}", arrayOf(groupId.value)) {
302304
authorizationHeader(userId)
303305
}
304-
.isStatus(400)
306+
.isStatus(403)
305307
.makeDocument(
306308
DocumentInfo(
307309
identifier = "group/{method-name}",

core/src/main/kotlin/com/yapp/bol/group/GroupServiceImpl.kt

+1-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.yapp.bol.group
33
import com.yapp.bol.AccessCodeNotMatchException
44
import com.yapp.bol.AlreadyExistMemberException
55
import com.yapp.bol.InvalidRequestException
6-
import com.yapp.bol.NoPermissionDeleteGroupException
76
import com.yapp.bol.NotFoundFileException
87
import com.yapp.bol.NotFoundGroupException
98
import com.yapp.bol.NotFoundMemberException
@@ -166,13 +165,7 @@ internal class GroupServiceImpl(
166165
}
167166

168167
@MyTransactional
169-
override fun deleteGroup(userId: UserId, groupId: GroupId) {
170-
val member = memberQueryRepository.findByGroupIdAndUserId(groupId, userId) ?: throw NoPermissionDeleteGroupException
171-
172-
if (member.isOwner().not()) {
173-
throw NoPermissionDeleteGroupException
174-
}
175-
168+
override fun deleteGroup(groupId: GroupId) {
176169
memberCommandRepository.deleteAllMember(groupId)
177170
groupCommandRepository.deleteGroup(groupId)
178171
}

domain/src/main/kotlin/com/yapp/bol/Exception.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ object InvalidGroupOrganizationException :
4545
object NotFoundGroupException : GroupException("Group004", "그룹을 찾을 수 없습니다.")
4646
object AccessCodeNotMatchException : GroupException("Group005", "참여 코드가 올바르지 않습니다.")
4747
object InvalidGuestIdException : GroupException("Group006", "게스트 ID가 올바르지 않습니다.")
48-
object NoPermissionDeleteGroupException : GroupException("Group007", "그룹을 삭제 할 수 있는 권한이 없습니다.")
4948

5049
sealed class MemberException(code: String, status: Int, message: String, cause: Throwable? = null) :
5150
BolRatingException(code = code, status = status, message = message, cause = cause)
@@ -72,3 +71,4 @@ object UnknownException : BolRatingException("BOL000", 500, "알 수 없는 에
7271
class InvalidRequestException(msg: String = "유효하지 않은 요청입니다.") : BolRatingException("BOL001", 400, msg)
7372
class InvalidNicknameException(val nickname: String?) : BolRatingException("BOL002", 400, "$nickname 닉네임이 잘못되었습니다.")
7473
object InvalidDateTimeException : BolRatingException("BOL003", 400, "날짜 값이 잘못됐습니다.")
74+
object NoPermissionException : BolRatingException("BOL003", 403, "권한이 없습니다.")

port-in/src/main/kotlin/com/yapp/bol/group/GroupService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ interface GroupService {
3838

3939
fun isRegisterGroup(userId: UserId, groupId: GroupId): Boolean
4040

41-
fun deleteGroup(userId: UserId, groupId: GroupId)
41+
fun deleteGroup(groupId: GroupId)
4242
fun getGroupWithMemberInfo(userId: UserId): List<GroupWithMemberDto>
4343
}

0 commit comments

Comments
 (0)