diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicy.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicy.kt deleted file mode 100644 index 221d38e3..00000000 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicy.kt +++ /dev/null @@ -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 - } -} diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicyTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicyTest.kt deleted file mode 100644 index 2af0aa4e..00000000 --- a/src/test/kotlin/kr/co/vividnext/sodalive/member/contentpreference/MemberContentPreferencePolicyTest.kt +++ /dev/null @@ -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 - } - } -}