Test #451
-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