refactor(content-preference): Deprecated 노출 정책을 제거한다
This commit is contained in:
-21
@@ -1,21 +0,0 @@
|
||||
package kr.co.vividnext.sodalive.member.contentpreference
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import org.springframework.web.context.request.RequestContextHolder
|
||||
import org.springframework.web.context.request.ServletRequestAttributes
|
||||
|
||||
@Deprecated("Use MemberContentPreferenceService.canViewAdultContent(member)")
|
||||
fun resolveCountryCodeByPolicy(member: Member): String {
|
||||
val requestAttributes = RequestContextHolder.getRequestAttributes() as? ServletRequestAttributes
|
||||
val requestCountryCode = requestAttributes?.request?.getHeader("CloudFront-Viewer-Country")
|
||||
return resolveCountryCodeWithForcedMapping(member, requestCountryCode)
|
||||
}
|
||||
|
||||
@Deprecated("Use MemberContentPreferenceService.canViewAdultContent(member)")
|
||||
fun isAdultVisibleByPolicy(member: Member, isAdultContentVisible: Boolean): Boolean {
|
||||
return if (resolveCountryCodeByPolicy(member) == "KR") {
|
||||
member.auth != null && isAdultContentVisible
|
||||
} else {
|
||||
isAdultContentVisible
|
||||
}
|
||||
}
|
||||
-89
@@ -1,89 +0,0 @@
|
||||
package kr.co.vividnext.sodalive.member.contentpreference
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.mock.web.MockHttpServletRequest
|
||||
import org.springframework.web.context.request.RequestContextHolder
|
||||
import org.springframework.web.context.request.ServletRequestAttributes
|
||||
|
||||
class MemberContentPreferencePolicyTest {
|
||||
@AfterEach
|
||||
fun cleanup() {
|
||||
RequestContextHolder.resetRequestAttributes()
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("요청 국가 헤더를 기준으로 국가 코드를 계산한다")
|
||||
fun shouldResolveCountryCodeByRequestHeader() {
|
||||
setRequestCountry(" us ")
|
||||
val member = createMember(id = 200L, countryCode = "KR")
|
||||
|
||||
assertEquals("US", resolveCountryCodeByPolicy(member))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("강제 매핑 대상 회원 ID는 요청 국가 헤더보다 우선한다")
|
||||
fun shouldPrioritizeForcedCountryMapping() {
|
||||
setRequestCountry("US")
|
||||
|
||||
val forcedJpMember = createMember(id = 2L, countryCode = "KR")
|
||||
val forcedJpMemberNew = createMember(id = 37543L, countryCode = "KR")
|
||||
val forcedKrMember = createMember(id = 16L, countryCode = "US")
|
||||
|
||||
assertEquals("JP", resolveCountryCodeByPolicy(forcedJpMember))
|
||||
assertEquals("JP", resolveCountryCodeByPolicy(forcedJpMemberNew))
|
||||
assertEquals("KR", resolveCountryCodeByPolicy(forcedKrMember))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("요청 국가가 KR이면 인증 미완료 사용자는 성인 노출이 false다")
|
||||
fun shouldHideAdultContentForKrWithoutAuth() {
|
||||
setRequestCountry("KR")
|
||||
val member = createMember(id = 1L, countryCode = "US")
|
||||
|
||||
assertFalse(isAdultVisibleByPolicy(member, isAdultContentVisible = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("요청 국가가 KR이 아니면 멤버 countryCode와 무관하게 전달값을 사용한다")
|
||||
fun shouldIgnoreStoredCountryCodeWhenRequestCountryIsNotKr() {
|
||||
setRequestCountry("US")
|
||||
val member = createMember(id = 201L, countryCode = "KR")
|
||||
|
||||
assertTrue(isAdultVisibleByPolicy(member, isAdultContentVisible = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("요청 컨텍스트가 없으면 KR fallback 정책을 사용한다")
|
||||
fun shouldFallbackToKrWhenRequestContextIsMissing() {
|
||||
RequestContextHolder.resetRequestAttributes()
|
||||
val member = createMember(id = 202L, countryCode = "US")
|
||||
|
||||
assertEquals("KR", resolveCountryCodeByPolicy(member))
|
||||
assertFalse(isAdultVisibleByPolicy(member, isAdultContentVisible = true))
|
||||
}
|
||||
|
||||
private fun setRequestCountry(countryCode: String?) {
|
||||
val request = MockHttpServletRequest()
|
||||
if (countryCode != null) {
|
||||
request.addHeader("CloudFront-Viewer-Country", countryCode)
|
||||
}
|
||||
RequestContextHolder.setRequestAttributes(ServletRequestAttributes(request))
|
||||
}
|
||||
|
||||
private fun createMember(id: Long, countryCode: String?): Member {
|
||||
return Member(
|
||||
email = "member$id@test.com",
|
||||
password = "password",
|
||||
nickname = "member$id"
|
||||
).apply {
|
||||
this.id = id
|
||||
this.countryCode = countryCode
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user