Skip to content

Commit

Permalink
Unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Net-burst committed Feb 8, 2024
1 parent 6cc4875 commit 760fbfc
Showing 1 changed file with 290 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.iab.openrtb.request.Dooh;
import com.iab.openrtb.request.Geo;
import com.iab.openrtb.request.Publisher;
import com.iab.openrtb.request.Regs;
import com.iab.openrtb.request.Site;
import io.vertx.core.Future;
import io.vertx.core.MultiMap;
Expand Down Expand Up @@ -59,15 +60,22 @@
import org.prebid.server.privacy.model.PrivacyContext;
import org.prebid.server.proto.openrtb.ext.request.ExtPublisher;
import org.prebid.server.proto.openrtb.ext.request.ExtPublisherPrebid;
import org.prebid.server.proto.openrtb.ext.request.ExtRegs;
import org.prebid.server.proto.openrtb.ext.request.ExtRegsDsa;
import org.prebid.server.proto.openrtb.ext.request.ExtRegsDsaTransparency;
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid;
import org.prebid.server.proto.openrtb.ext.request.ExtRequestTargeting;
import org.prebid.server.proto.openrtb.ext.request.TraceLevel;
import org.prebid.server.settings.ApplicationSettings;
import org.prebid.server.settings.model.Account;
import org.prebid.server.settings.model.AccountAuctionConfig;
import org.prebid.server.settings.model.AccountDsaConfig;
import org.prebid.server.settings.model.AccountPrivacyConfig;
import org.prebid.server.settings.model.AccountStatus;
import org.prebid.server.settings.model.AccountTargetingConfig;
import org.prebid.server.settings.model.DefaultDsa;
import org.prebid.server.settings.model.DsaTransparency;
import org.prebid.server.validation.RequestValidator;
import org.prebid.server.validation.model.ValidationResult;

Expand Down Expand Up @@ -1452,6 +1460,288 @@ public void updateTimeoutShouldReturnContextWithUpdatedTimeoutAndBidRequestTmax(
assertThat(result.getTimeout()).isEqualTo(updatedTimeout);
}

@Test
public void enrichBidRequestWithAccountAndPrivacyDataShouldAddDsaFromAccountWhenRequestLacksDsa() {
// given
final String accountId = "accId";
final BidRequest bidRequest = givenBidRequest(builder -> builder
.imp(emptyList())
.site(Site.builder()
.publisher(Publisher.builder().id(accountId).build())
.build()));

final PrivacyContext privacyContext = PrivacyContext.of(
Privacy.builder()
.gdpr("")
.consentString("")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build(),
TcfContext.empty(),
"");

final Account account = Account.builder()
.id(accountId)
.privacy(AccountPrivacyConfig.of(null,
null,
AccountDsaConfig.of(DefaultDsa.of(0,
1,
2,
List.of(DsaTransparency.of("",
List.of(0)))),
null),
null,
null))
.build();
given(applicationSettings.getAccountById(any(), any())).willReturn(Future.succeededFuture(account));

final AuctionContext auctionContext = AuctionContext.builder()
.bidRequest(bidRequest)
.account(account)
.privacyContext(privacyContext)
.build();

// when
final BidRequest result = target.enrichBidRequestWithAccountAndPrivacyData(auctionContext);

// then
assertThat(result)
.extracting(BidRequest::getRegs)
.extracting(Regs::getExt)
.extracting(ExtRegs::getDsa)
.satisfies(dsa -> {
assertThat(dsa.getRequired()).isEqualTo(0);
assertThat(dsa.getPubrender()).isEqualTo(1);
assertThat(dsa.getDatatopub()).isEqualTo(2);
assertThat(dsa.getTransparency()).satisfies(transparencies ->
assertThat(transparencies).isEqualTo(List.of(ExtRegsDsaTransparency.of("",
List.of(0)))));
});
}

@Test
public void enrichBidRequestWithAccountAndPrivacyDataShouldNotAddDsaFromAccountWhenAccountLacksDefaultDsa() {
// given
final String accountId = "accId";
final BidRequest bidRequest = givenBidRequest(builder -> builder
.imp(emptyList())
.site(Site.builder()
.publisher(Publisher.builder().id(accountId).build())
.build()));

final PrivacyContext privacyContext = PrivacyContext.of(
Privacy.builder()
.gdpr("")
.consentString("")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build(),
TcfContext.empty(),
"");

final Account account = Account.builder()
.id(accountId)
.privacy(AccountPrivacyConfig.of(null,
null,
AccountDsaConfig.of(null,
null),
null,
null))
.build();
given(applicationSettings.getAccountById(any(), any())).willReturn(Future.succeededFuture(account));

final AuctionContext auctionContext = AuctionContext.builder()
.bidRequest(bidRequest)
.account(account)
.privacyContext(privacyContext)
.build();

// when
final BidRequest result = target.enrichBidRequestWithAccountAndPrivacyData(auctionContext);

// then
assertThat(result)
.extracting(BidRequest::getRegs)
.isNull();
}

@Test
public void enrichBidRequestWithAccountAndPrivacyDataShouldNotAddDsaFromAccountWhenRequestContainsDsa() {
// given
final String accountId = "accId";
final BidRequest bidRequest = givenBidRequest(builder -> builder
.imp(emptyList())
.site(Site.builder()
.publisher(Publisher.builder().id(accountId).build())
.build())
.regs(Regs.builder().ext(ExtRegs.of(null,
null,
null,
ExtRegsDsa.of(0,
1,
2,
List.of(ExtRegsDsaTransparency.of("", List.of(0))))))
.build())
);

final PrivacyContext privacyContext = PrivacyContext.of(
Privacy.builder()
.gdpr("")
.consentString("")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build(),
TcfContext.empty(),
"");

final Account account = Account.builder()
.id(accountId)
.privacy(AccountPrivacyConfig.of(null,
null,
AccountDsaConfig.of(DefaultDsa.of(3,
4,
5,
List.of(DsaTransparency.of("domain",
List.of(1)))),
null),
null,
null))
.build();
given(applicationSettings.getAccountById(any(), any())).willReturn(Future.succeededFuture(account));

final AuctionContext auctionContext = AuctionContext.builder()
.bidRequest(bidRequest)
.account(account)
.privacyContext(privacyContext)
.build();

// when
final BidRequest result = target.enrichBidRequestWithAccountAndPrivacyData(auctionContext);

// then
assertThat(result)
.extracting(BidRequest::getRegs)
.extracting(Regs::getExt)
.extracting(ExtRegs::getDsa)
.satisfies(dsa -> {
assertThat(dsa.getRequired()).isEqualTo(0);
assertThat(dsa.getPubrender()).isEqualTo(1);
assertThat(dsa.getDatatopub()).isEqualTo(2);
assertThat(dsa.getTransparency()).satisfies(transparencies ->
assertThat(transparencies).isEqualTo(List.of(ExtRegsDsaTransparency.of("",
List.of(0)))));
});
}

@Test
public void enrichBidRequestWithAccountAndPrivacyDataShouldAddDsaFromAccountWhenGdprScopingEnabledAndMatches() {
// given
final String accountId = "accId";
final BidRequest bidRequest = givenBidRequest(builder -> builder
.imp(emptyList())
.site(Site.builder()
.publisher(Publisher.builder().id(accountId).build())
.build()));

final PrivacyContext privacyContext = PrivacyContext.of(
Privacy.builder()
.gdpr("")
.consentString("")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build(),
TcfContext.builder().inGdprScope(true).build(),
"");

final Account account = Account.builder()
.id(accountId)
.privacy(AccountPrivacyConfig.of(null,
null,
AccountDsaConfig.of(DefaultDsa.of(0,
1,
2,
List.of(DsaTransparency.of("",
List.of(0)))),
true),
null,
null))
.build();
given(applicationSettings.getAccountById(any(), any())).willReturn(Future.succeededFuture(account));

final AuctionContext auctionContext = AuctionContext.builder()
.bidRequest(bidRequest)
.account(account)
.privacyContext(privacyContext)
.build();

// when
final BidRequest result = target.enrichBidRequestWithAccountAndPrivacyData(auctionContext);

// then
assertThat(result)
.extracting(BidRequest::getRegs)
.extracting(Regs::getExt)
.extracting(ExtRegs::getDsa)
.satisfies(dsa -> {
assertThat(dsa.getRequired()).isEqualTo(0);
assertThat(dsa.getPubrender()).isEqualTo(1);
assertThat(dsa.getDatatopub()).isEqualTo(2);
assertThat(dsa.getTransparency()).satisfies(transparencies ->
assertThat(transparencies).isEqualTo(List.of(ExtRegsDsaTransparency.of("",
List.of(0)))));
});
}

@Test
public void enrichBidRequestWithAccountAndPrivacyDataShouldAddDsaFromAccountWhenGdprScopingEnabledAndDoesntMatch() {
// given
final String accountId = "accId";
final BidRequest bidRequest = givenBidRequest(builder -> builder
.imp(emptyList())
.site(Site.builder()
.publisher(Publisher.builder().id(accountId).build())
.build()));

final PrivacyContext privacyContext = PrivacyContext.of(
Privacy.builder()
.gdpr("")
.consentString("")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build(),
TcfContext.builder().inGdprScope(false).build(),
"");

final Account account = Account.builder()
.id(accountId)
.privacy(AccountPrivacyConfig.of(null,
null,
AccountDsaConfig.of(DefaultDsa.of(0,
1,
2,
List.of(DsaTransparency.of("",
List.of(0)))),
true),
null,
null))
.build();
given(applicationSettings.getAccountById(any(), any())).willReturn(Future.succeededFuture(account));

final AuctionContext auctionContext = AuctionContext.builder()
.bidRequest(bidRequest)
.account(account)
.privacyContext(privacyContext)
.build();

// when
final BidRequest result = target.enrichBidRequestWithAccountAndPrivacyData(auctionContext);

// then
assertThat(result)
.extracting(BidRequest::getRegs)
.isNull();
}

private static String bidRequestToString(BidRequest bidRequest) {
try {
return mapper.writeValueAsString(bidRequest);
Expand Down

0 comments on commit 760fbfc

Please sign in to comment.