-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'add-usnat-privacy-module' into tests-gpp-full-support
- Loading branch information
Showing
6 changed files
with
273 additions
and
39 deletions.
There are no files selected for viewing
24 changes: 24 additions & 0 deletions
24
...rg/prebid/server/activity/infrastructure/creator/privacy/usnat/USNatGppReaderFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package org.prebid.server.activity.infrastructure.creator.privacy.usnat; | ||
|
||
import com.iab.gpp.encoder.GppModel; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.USNatGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USCaliforniaGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USColoradoGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USConnecticutGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USNationalGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USUtahGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USVirginiaGppReader; | ||
|
||
public class USNatGppReaderFactory { | ||
|
||
public USNatGppReader forSection(Integer sectionId, GppModel gppModel) { | ||
return switch (USNatSection.from(sectionId)) { | ||
case NATIONAL -> new USNationalGppReader(gppModel); | ||
case CALIFORNIA -> new USCaliforniaGppReader(gppModel); | ||
case VIRGINIA -> new USVirginiaGppReader(gppModel); | ||
case COLORADO -> new USColoradoGppReader(gppModel); | ||
case UTAH -> new USUtahGppReader(gppModel); | ||
case CONNECTICUT -> new USConnecticutGppReader(gppModel); | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
...in/java/org/prebid/server/activity/infrastructure/creator/privacy/usnat/USNatSection.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.prebid.server.activity.infrastructure.creator.privacy.usnat; | ||
|
||
public enum USNatSection { | ||
|
||
NATIONAL, | ||
CALIFORNIA, | ||
VIRGINIA, | ||
COLORADO, | ||
UTAH, | ||
CONNECTICUT; | ||
|
||
private static final int SHIFT = 7; | ||
|
||
public Integer sectionId() { | ||
return ordinal() + SHIFT; | ||
} | ||
|
||
public static USNatSection from(Integer sectionId) { | ||
final USNatSection[] values = USNatSection.values(); | ||
if (sectionId < SHIFT || sectionId >= values.length + SHIFT) { | ||
throw new IllegalArgumentException("US sectionId must be in [%s, %s]." | ||
.formatted(SHIFT, values.length + SHIFT - 1)); | ||
} | ||
|
||
return values[sectionId - SHIFT]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
...rebid/server/activity/infrastructure/creator/privacy/usnat/USNatGppReaderFactoryTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package org.prebid.server.activity.infrastructure.creator.privacy.usnat; | ||
|
||
import org.junit.Test; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USCaliforniaGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USColoradoGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USConnecticutGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USNationalGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USUtahGppReader; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USVirginiaGppReader; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
public class USNatGppReaderFactoryTest { | ||
|
||
private final USNatGppReaderFactory target = new USNatGppReaderFactory(); | ||
|
||
@Test | ||
public void fromShouldReturnNationalGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.NATIONAL.sectionId(), null)) | ||
.isInstanceOf(USNationalGppReader.class); | ||
} | ||
|
||
@Test | ||
public void fromShouldReturnCaliforniaGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.CALIFORNIA.sectionId(), null)) | ||
.isInstanceOf(USCaliforniaGppReader.class); | ||
} | ||
|
||
@Test | ||
public void fromShouldReturnVirginiaGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.VIRGINIA.sectionId(), null)) | ||
.isInstanceOf(USVirginiaGppReader.class); | ||
} | ||
|
||
@Test | ||
public void fromShouldReturnColoradoGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.COLORADO.sectionId(), null)) | ||
.isInstanceOf(USColoradoGppReader.class); | ||
} | ||
|
||
@Test | ||
public void fromShouldReturnUtahGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.UTAH.sectionId(), null)) | ||
.isInstanceOf(USUtahGppReader.class); | ||
} | ||
|
||
@Test | ||
public void fromShouldReturnConnecticutGppReader() { | ||
// when and then | ||
assertThat(target.forSection(USNatSection.CONNECTICUT.sectionId(), null)) | ||
.isInstanceOf(USConnecticutGppReader.class); | ||
} | ||
} |
133 changes: 133 additions & 0 deletions
133
...g/prebid/server/activity/infrastructure/creator/privacy/usnat/USNatModuleCreatorTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
package org.prebid.server.activity.infrastructure.creator.privacy.usnat; | ||
|
||
import org.junit.Before; | ||
import org.junit.Test; | ||
import org.mockito.Mock; | ||
import org.mockito.junit.MockitoJUnit; | ||
import org.mockito.junit.MockitoRule; | ||
import org.prebid.server.activity.Activity; | ||
import org.prebid.server.activity.infrastructure.creator.PrivacyModuleCreationContext; | ||
import org.prebid.server.activity.infrastructure.privacy.PrivacyModule; | ||
import org.prebid.server.activity.infrastructure.privacy.PrivacyModuleQualifier; | ||
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USNationalGppReader; | ||
import org.prebid.server.activity.infrastructure.rule.Rule; | ||
import org.prebid.server.auction.gpp.model.GppContextCreator; | ||
import org.prebid.server.settings.model.activity.privacy.AccountUSNatModuleConfig; | ||
|
||
import java.util.List; | ||
|
||
import static java.util.Arrays.asList; | ||
import static java.util.Collections.emptyList; | ||
import static java.util.Collections.singletonList; | ||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.mockito.ArgumentMatchers.any; | ||
import static org.mockito.ArgumentMatchers.eq; | ||
import static org.mockito.BDDMockito.given; | ||
import static org.mockito.Mockito.times; | ||
import static org.mockito.Mockito.verify; | ||
import static org.mockito.Mockito.verifyNoInteractions; | ||
import static org.mockito.Mockito.verifyNoMoreInteractions; | ||
|
||
public class USNatModuleCreatorTest { | ||
|
||
@org.junit.Rule | ||
public final MockitoRule mockitoRule = MockitoJUnit.rule(); | ||
|
||
@Mock | ||
private USNatGppReaderFactory gppReaderFactory; | ||
|
||
private USNatModuleCreator target; | ||
|
||
@Before | ||
public void setUp() { | ||
given(gppReaderFactory.forSection(any(), any())).willReturn(new USNationalGppReader(null)); | ||
|
||
target = new USNatModuleCreator(gppReaderFactory); | ||
} | ||
|
||
@Test | ||
public void qualifierShouldReturnExpectedResult() { | ||
// when and then | ||
assertThat(target.qualifier()).isEqualTo(PrivacyModuleQualifier.US_NAT); | ||
} | ||
|
||
@Test | ||
public void fromShouldCreateProperPrivacyModuleIfSectionsIdsIsNull() { | ||
// given | ||
final PrivacyModuleCreationContext creationContext = givenCreationContext(null, null); | ||
|
||
// when | ||
final PrivacyModule privacyModule = target.from(creationContext); | ||
|
||
// then | ||
assertThat(privacyModule.proceed(null)).isEqualTo(Rule.Result.ABSTAIN); | ||
verifyNoInteractions(gppReaderFactory); | ||
} | ||
|
||
@Test | ||
public void fromShouldCreateProperPrivacyModuleIfSectionsIdsIsEmpty() { | ||
// given | ||
final PrivacyModuleCreationContext creationContext = givenCreationContext(emptyList(), null); | ||
|
||
// when | ||
final PrivacyModule privacyModule = target.from(creationContext); | ||
|
||
// then | ||
assertThat(privacyModule.proceed(null)).isEqualTo(Rule.Result.ABSTAIN); | ||
verifyNoInteractions(gppReaderFactory); | ||
} | ||
|
||
@Test | ||
public void fromShouldCreateProperPrivacyModuleIfAllSectionsIdsSkipped() { | ||
// given | ||
final PrivacyModuleCreationContext creationContext = givenCreationContext(singletonList(1), null); | ||
|
||
// when | ||
final PrivacyModule privacyModule = target.from(creationContext); | ||
|
||
// then | ||
assertThat(privacyModule.proceed(null)).isEqualTo(Rule.Result.ABSTAIN); | ||
verifyNoInteractions(gppReaderFactory); | ||
} | ||
|
||
@Test | ||
public void fromShouldShouldSkipNotSupportedSectionsIds() { | ||
// given | ||
final PrivacyModuleCreationContext creationContext = givenCreationContext( | ||
asList(6, 7, 8, 9, 10, 11, 12, 13), null); | ||
|
||
// when | ||
target.from(creationContext); | ||
|
||
// then | ||
verify(gppReaderFactory, times(1)).forSection(eq(7), any()); | ||
verify(gppReaderFactory, times(1)).forSection(eq(8), any()); | ||
verify(gppReaderFactory, times(1)).forSection(eq(9), any()); | ||
verify(gppReaderFactory, times(1)).forSection(eq(10), any()); | ||
verify(gppReaderFactory, times(1)).forSection(eq(11), any()); | ||
verify(gppReaderFactory, times(1)).forSection(eq(12), any()); | ||
verifyNoMoreInteractions(gppReaderFactory); | ||
} | ||
|
||
@Test | ||
public void fromShouldShouldSkipConfiguredSectionsIds() { | ||
// given | ||
final PrivacyModuleCreationContext creationContext = givenCreationContext(asList(7, 8, 9), asList(8, 9)); | ||
|
||
// when | ||
target.from(creationContext); | ||
|
||
// then | ||
verify(gppReaderFactory, times(1)).forSection(eq(7), any()); | ||
verifyNoMoreInteractions(gppReaderFactory); | ||
} | ||
|
||
private static PrivacyModuleCreationContext givenCreationContext(List<Integer> sectionsIds, | ||
List<Integer> skipSectionsIds) { | ||
|
||
return PrivacyModuleCreationContext.of( | ||
Activity.CALL_BIDDER, | ||
AccountUSNatModuleConfig.of(true, AccountUSNatModuleConfig.Config.of(skipSectionsIds)), | ||
GppContextCreator.from(null, sectionsIds).build().getGppContext()); | ||
} | ||
} |