feat(content-preference): 콘텐츠 조회 설정 서버 저장 전환을 반영한다
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
package kr.co.vividnext.sodalive.member.auth
|
||||
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
|
||||
import kr.co.vividnext.sodalive.useraction.ActionType
|
||||
import kr.co.vividnext.sodalive.useraction.UserActionService
|
||||
import org.junit.jupiter.api.Assertions.assertThrows
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mockito.Mockito
|
||||
|
||||
class AuthControllerTest {
|
||||
private lateinit var authService: AuthService
|
||||
private lateinit var memberContentPreferenceService: MemberContentPreferenceService
|
||||
private lateinit var userActionService: UserActionService
|
||||
private lateinit var controller: AuthController
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
authService = mock()
|
||||
memberContentPreferenceService = mock()
|
||||
userActionService = mock()
|
||||
|
||||
controller = AuthController(
|
||||
service = authService,
|
||||
memberContentPreferenceService = memberContentPreferenceService,
|
||||
userActionService = userActionService
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("authVerify 성공 시 성인노출 true 저장을 호출한다")
|
||||
fun shouldSaveAdultPreferenceWhenAuthVerifySucceeds() {
|
||||
val member = createMember(id = 10L)
|
||||
val request = AuthVerifyRequest(receiptId = "receipt-1", version = "v1")
|
||||
val certificate = AuthVerifyCertificate(
|
||||
name = "홍길동",
|
||||
birth = "19900101",
|
||||
unique = "unique-ci",
|
||||
di = "di-1",
|
||||
gender = 1
|
||||
)
|
||||
|
||||
Mockito.`when`(authService.certificate(request, memberId = 10L)).thenReturn(certificate)
|
||||
Mockito.`when`(authService.isBlockAuth(certificate)).thenReturn(false)
|
||||
Mockito.`when`(authService.authenticate(certificate, 10L)).thenReturn(AuthResponse(gender = 1))
|
||||
|
||||
controller.authVerify(request, member)
|
||||
|
||||
Mockito.verify(memberContentPreferenceService).markAdultVisibleAfterAuthVerify(10L)
|
||||
Mockito.verify(userActionService).recordAction(
|
||||
memberId = 10L,
|
||||
isAuth = true,
|
||||
actionType = ActionType.USER_AUTHENTICATION
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("차단 정책으로 authVerify가 실패하면 저장을 호출하지 않는다")
|
||||
fun shouldNotSaveAdultPreferenceWhenAuthIsBlocked() {
|
||||
val member = createMember(id = 20L)
|
||||
val request = AuthVerifyRequest(receiptId = "receipt-2", version = null)
|
||||
val certificate = AuthVerifyCertificate(
|
||||
name = "홍길동",
|
||||
birth = "19900101",
|
||||
unique = "unique-ci",
|
||||
di = "di-2",
|
||||
gender = 1
|
||||
)
|
||||
|
||||
Mockito.`when`(authService.certificate(request, memberId = 20L)).thenReturn(certificate)
|
||||
Mockito.`when`(authService.isBlockAuth(certificate)).thenReturn(true)
|
||||
|
||||
assertThrows(SodaException::class.java) {
|
||||
controller.authVerify(request, member)
|
||||
}
|
||||
|
||||
Mockito.verify(authService).signOut(20L)
|
||||
Mockito.verify(memberContentPreferenceService, Mockito.never()).markAdultVisibleAfterAuthVerify(Mockito.anyLong())
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("비로그인 사용자는 authVerify 요청 시 예외를 반환한다")
|
||||
fun shouldThrowWhenMemberIsNull() {
|
||||
val request = AuthVerifyRequest(receiptId = "receipt-3", version = null)
|
||||
|
||||
assertThrows(SodaException::class.java) {
|
||||
controller.authVerify(request, null)
|
||||
}
|
||||
|
||||
Mockito.verifyNoInteractions(memberContentPreferenceService)
|
||||
}
|
||||
|
||||
private fun createMember(id: Long): Member {
|
||||
val member = Member(
|
||||
email = "member$id@test.com",
|
||||
password = "password",
|
||||
nickname = "member$id"
|
||||
)
|
||||
member.id = id
|
||||
return member
|
||||
}
|
||||
|
||||
private inline fun <reified T> mock(): T {
|
||||
return Mockito.mock(T::class.java)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user