fix(member): 회원 차단을 요청 ID 단건만 적용한다

This commit is contained in:
2026-03-25 20:42:24 +09:00
parent 447735cad5
commit 1ba3cb8a40
3 changed files with 104 additions and 20 deletions

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
import kr.co.vividnext.sodalive.common.CountryContext
import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
import kr.co.vividnext.sodalive.member.auth.Auth
import kr.co.vividnext.sodalive.member.auth.AuthRepository
import kr.co.vividnext.sodalive.member.block.BlockMember
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
@@ -92,6 +93,59 @@ class MemberServiceCacheEvictionTest {
Mockito.verifyNoInteractions(authRepository)
}
@Test
fun shouldBlockOnlyRequestedMemberEvenWhenTargetHasAuth() {
// 차단 대상에게 본인인증 정보가 연결된 상황을 준비한다.
val memberId = 500L
val blockedMemberId = 600L
val linkedMemberId = 601L
val member = createMember(id = memberId, nickname = "requester2")
val blockedMember = createMember(id = blockedMemberId, nickname = "target2")
val auth = Auth(
name = "홍길동",
birth = "19900101",
uniqueCi = "unique-ci",
di = "di-value",
gender = 1
)
auth.member = blockedMember
// 요청자와 요청 대상만 조회 가능하도록 목 동작을 설정한다.
Mockito.`when`(memberRepository.findById(memberId)).thenReturn(Optional.of(member))
Mockito.`when`(memberRepository.findById(blockedMemberId)).thenReturn(Optional.of(blockedMember))
Mockito.`when`(
blockMemberRepository.getBlockAccount(
blockedMemberId = blockedMemberId,
memberId = memberId
)
).thenReturn(null)
Mockito.`when`(
authRepository.getMemberIdsByNameAndBirthAndDiAndGender(
name = auth.name,
birth = auth.birth,
di = auth.di,
gender = auth.gender
)
).thenReturn(listOf(blockedMemberId, linkedMemberId))
// 차단 API를 실행한다.
service.memberBlock(MemberBlockRequest(blockMemberId = blockedMemberId), memberId)
// 요청한 blockMemberId 한 건만 차단 처리 및 캐시 무효화되는지 검증한다.
Mockito.verify(blockMemberRepository).getBlockAccount(
blockedMemberId = blockedMemberId,
memberId = memberId
)
Mockito.verify(blockMemberRepository, Mockito.never()).getBlockAccount(
blockedMemberId = linkedMemberId,
memberId = memberId
)
Mockito.verify(cache).evict("getRecommendLive:$memberId")
Mockito.verify(cache).evict("getRecommendLive:$blockedMemberId")
Mockito.verify(cache, Mockito.never()).evict("getRecommendLive:$linkedMemberId")
Mockito.verifyNoInteractions(authRepository)
}
@Test
fun shouldEvictRecommendLiveCacheForRequesterAndTargetOnUnblock() {
val memberId = 300L