Test #451
+8
@@ -157,6 +157,14 @@ class MemberContentPreferenceService(
|
|||||||
return getStoredPreference(member).isAdult
|
return getStoredPreference(member).isAdult
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isAdultVisibleForQuery(member: Member, isAdultContentVisible: Boolean): Boolean {
|
||||||
|
return calculateIsAdultForQuery(
|
||||||
|
member = member,
|
||||||
|
countryCode = resolveCountryCode(member),
|
||||||
|
isAdultContentVisible = isAdultContentVisible
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun resolveCountryCode(member: Member?): String {
|
fun resolveCountryCode(member: Member?): String {
|
||||||
if (member != null) requireMemberId(member)
|
if (member != null) requireMemberId(member)
|
||||||
return resolveCountryCodeWithForcedMapping(member, countryContext.countryCode)
|
return resolveCountryCodeWithForcedMapping(member, countryContext.countryCode)
|
||||||
|
|||||||
+54
-2
@@ -61,10 +61,10 @@ class MemberContentPreferenceServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
@DisplayName("회원 ID 강제 매핑(JP)이 헤더보다 우선 적용된다")
|
@DisplayName("회원 ID 강제 매핑(JP)이 헤더보다 우선 적용된다")
|
||||||
fun shouldResolveCountryCodeByForcedJapanMappingFirst() {
|
fun shouldResolveCountryCodeByForcedJapanMappingFirst() {
|
||||||
val member = createMember(id = 2L)
|
val member = createMember(id = 29721L)
|
||||||
val preference = createPreference(member)
|
val preference = createPreference(member)
|
||||||
countryContext.setCountryCode("US")
|
countryContext.setCountryCode("US")
|
||||||
Mockito.`when`(repository.findByMemberId(2L)).thenReturn(preference)
|
Mockito.`when`(repository.findByMemberId(29721L)).thenReturn(preference)
|
||||||
|
|
||||||
val result = service.getStoredPreference(member)
|
val result = service.getStoredPreference(member)
|
||||||
|
|
||||||
@@ -449,6 +449,58 @@ class MemberContentPreferenceServiceTest {
|
|||||||
assertTrue(service.calculateIsAdultForQuery(noAuthMember, "US", true))
|
assertTrue(service.calculateIsAdultForQuery(noAuthMember, "US", true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("로그인 회원의 접속 국가 코드는 공백과 소문자를 정규화하고 없으면 KR로 계산된다")
|
||||||
|
fun shouldNormalizeCountryCodeForLoggedInMember() {
|
||||||
|
val member = createMember(id = 2400L)
|
||||||
|
|
||||||
|
countryContext.setCountryCode(" us ")
|
||||||
|
assertEquals("US", service.resolveCountryCode(member))
|
||||||
|
|
||||||
|
countryContext.setCountryCode(" ")
|
||||||
|
assertEquals("KR", service.resolveCountryCode(member))
|
||||||
|
|
||||||
|
countryContext.setCountryCode(null)
|
||||||
|
assertEquals("KR", service.resolveCountryCode(member))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("조회용 성인 노출 여부는 접속 국가와 인증 여부로 계산된다")
|
||||||
|
fun shouldCalculateIsAdultVisibleForQueryByCountryAndAuth() {
|
||||||
|
val noAuthMember = createMember(id = 2300L, withAuth = false)
|
||||||
|
val authMember = createMember(id = 2301L, withAuth = true)
|
||||||
|
|
||||||
|
countryContext.setCountryCode("KR")
|
||||||
|
assertFalse(service.isAdultVisibleForQuery(noAuthMember, isAdultContentVisible = true))
|
||||||
|
assertTrue(service.isAdultVisibleForQuery(authMember, isAdultContentVisible = true))
|
||||||
|
|
||||||
|
countryContext.setCountryCode("US")
|
||||||
|
assertTrue(service.isAdultVisibleForQuery(noAuthMember, isAdultContentVisible = true))
|
||||||
|
assertFalse(service.isAdultVisibleForQuery(authMember, isAdultContentVisible = false))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("비KR 요청에서는 회원의 저장 국가와 무관하게 전달한 성인 노출값을 사용한다")
|
||||||
|
fun shouldIgnoreStoredCountryCodeWhenRequestCountryIsNotKr() {
|
||||||
|
val member = createMember(id = 2401L, withAuth = false).apply {
|
||||||
|
countryCode = "KR"
|
||||||
|
}
|
||||||
|
countryContext.setCountryCode("US")
|
||||||
|
|
||||||
|
assertEquals("US", service.resolveCountryCode(member))
|
||||||
|
assertTrue(service.isAdultVisibleForQuery(member, isAdultContentVisible = true))
|
||||||
|
assertFalse(service.isAdultVisibleForQuery(member, isAdultContentVisible = false))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("조회용 성인 노출 여부도 회원 ID 강제 매핑이 헤더보다 우선 적용된다")
|
||||||
|
fun shouldApplyForcedCountryMappingForIsAdultVisibleForQuery() {
|
||||||
|
val forcedKrMember = createMember(id = 16L, withAuth = false)
|
||||||
|
countryContext.setCountryCode("US")
|
||||||
|
|
||||||
|
assertFalse(service.isAdultVisibleForQuery(forcedKrMember, isAdultContentVisible = true))
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("성인 콘텐츠 조회 가능 여부는 저장 preference의 조회용 성인 정책 결과를 반환한다")
|
@DisplayName("성인 콘텐츠 조회 가능 여부는 저장 preference의 조회용 성인 정책 결과를 반환한다")
|
||||||
fun shouldReturnStoredPreferenceAdultPolicyForCanViewAdultContent() {
|
fun shouldReturnStoredPreferenceAdultPolicyForCanViewAdultContent() {
|
||||||
|
|||||||
Reference in New Issue
Block a user