Skip to content

Commit 5018a0a

Browse files
committed
Refactored unit tests.
1 parent 6823ce6 commit 5018a0a

File tree

4 files changed

+268
-254
lines changed

4 files changed

+268
-254
lines changed

src/main/java/org/prebid/server/auction/model/EidPermissionHolder.java renamed to src/main/java/org/prebid/server/auction/EidPermissionResolver.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.prebid.server.auction.model;
1+
package org.prebid.server.auction;
22

33
import com.iab.openrtb.request.Eid;
44
import org.apache.commons.collections4.CollectionUtils;
@@ -13,28 +13,28 @@
1313
import java.util.stream.Collectors;
1414
import java.util.stream.Stream;
1515

16-
public final class EidPermissionHolder {
16+
public class EidPermissionResolver {
1717

1818
private static final String WILDCARD_BIDDER = "*";
1919

2020
private static final ExtRequestPrebidDataEidPermissions DEFAULT_RULE = ExtRequestPrebidDataEidPermissions.builder()
2121
.bidders(Collections.singletonList(WILDCARD_BIDDER))
2222
.build();
2323

24-
private static final EidPermissionHolder EMPTY = new EidPermissionHolder(Collections.emptyList());
24+
private static final EidPermissionResolver EMPTY = new EidPermissionResolver(Collections.emptyList());
2525

2626
private final List<ExtRequestPrebidDataEidPermissions> eidPermissions;
2727

28-
private EidPermissionHolder(List<ExtRequestPrebidDataEidPermissions> eidPermissions) {
28+
private EidPermissionResolver(List<ExtRequestPrebidDataEidPermissions> eidPermissions) {
2929
this.eidPermissions = new ArrayList<>(eidPermissions);
3030
this.eidPermissions.add(DEFAULT_RULE);
3131
}
3232

33-
public static EidPermissionHolder of(List<ExtRequestPrebidDataEidPermissions> eidPermissions) {
34-
return new EidPermissionHolder(eidPermissions);
33+
public static EidPermissionResolver of(List<ExtRequestPrebidDataEidPermissions> eidPermissions) {
34+
return new EidPermissionResolver(eidPermissions);
3535
}
3636

37-
public static EidPermissionHolder empty() {
37+
public static EidPermissionResolver empty() {
3838
return EMPTY;
3939
}
4040

@@ -74,7 +74,7 @@ private boolean isRuleMatched(Eid eid, ExtRequestPrebidDataEidPermissions eidPer
7474
}
7575

7676
private boolean isBidderAllowed(String bidder, List<String> ruleBidders) {
77-
return CollectionUtils.emptyIfNull(ruleBidders).stream()
77+
return ruleBidders == null || ruleBidders.stream()
7878
.anyMatch(allowedBidder -> StringUtils.equalsIgnoreCase(allowedBidder, bidder)
7979
|| WILDCARD_BIDDER.equals(allowedBidder));
8080
}

src/main/java/org/prebid/server/auction/ExchangeService.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.prebid.server.auction.model.BidderPrivacyResult;
4343
import org.prebid.server.auction.model.BidderRequest;
4444
import org.prebid.server.auction.model.BidderResponse;
45-
import org.prebid.server.auction.model.EidPermissionHolder;
4645
import org.prebid.server.auction.model.MultiBidConfig;
4746
import org.prebid.server.auction.model.StoredResponseResult;
4847
import org.prebid.server.auction.model.TimeoutContext;
@@ -537,9 +536,9 @@ private Future<List<AuctionParticipation>> makeAuctionParticipation(
537536
final ExtRequest requestExt = bidRequest.getExt();
538537
final ExtRequestPrebid prebid = requestExt != null ? requestExt.getPrebid() : null;
539538
final Map<String, ExtBidderConfigOrtb> biddersToConfigs = getBiddersToConfigs(prebid);
540-
final EidPermissionHolder eidPermissionHolder = getEidPermissions(prebid);
539+
final EidPermissionResolver eidPermissionResolver = getEidPermissions(prebid);
541540
final Map<String, Pair<User, Device>> bidderToUserAndDevice =
542-
prepareUsersAndDevices(bidders, context, aliases, biddersToConfigs, eidPermissionHolder);
541+
prepareUsersAndDevices(bidders, context, aliases, biddersToConfigs, eidPermissionResolver);
543542

544543
return privacyEnforcementService.mask(context, bidderToUserAndDevice, aliases)
545544
.map(bidderToPrivacyResult -> getAuctionParticipation(
@@ -577,12 +576,12 @@ private Map<String, ExtBidderConfigOrtb> getBiddersToConfigs(ExtRequestPrebid pr
577576
return bidderToConfig;
578577
}
579578

580-
private EidPermissionHolder getEidPermissions(ExtRequestPrebid prebid) {
579+
private EidPermissionResolver getEidPermissions(ExtRequestPrebid prebid) {
581580
return Optional.ofNullable(prebid)
582581
.map(ExtRequestPrebid::getData)
583582
.map(ExtRequestPrebidData::getEidPermissions)
584-
.map(EidPermissionHolder::of)
585-
.orElse(EidPermissionHolder.empty());
583+
.map(EidPermissionResolver::of)
584+
.orElse(EidPermissionResolver.empty());
586585
}
587586

588587
private static List<String> firstPartyDataBidders(ExtRequest requestExt) {
@@ -596,7 +595,7 @@ private Map<String, Pair<User, Device>> prepareUsersAndDevices(
596595
AuctionContext context,
597596
BidderAliases aliases,
598597
Map<String, ExtBidderConfigOrtb> biddersToConfigs,
599-
EidPermissionHolder eidPermissionHolder) {
598+
EidPermissionResolver eidPermissionResolver) {
600599

601600
final BidRequest bidRequest = context.getBidRequest();
602601
final List<String> firstPartyDataBidders = firstPartyDataBidders(bidRequest.getExt());
@@ -608,7 +607,7 @@ private Map<String, Pair<User, Device>> prepareUsersAndDevices(
608607
final boolean useFirstPartyData = firstPartyDataBidders == null || firstPartyDataBidders.stream()
609608
.anyMatch(fpdBidder -> StringUtils.equalsIgnoreCase(fpdBidder, bidder));
610609
final User preparedUser = prepareUser(
611-
bidder, context, aliases, useFirstPartyData, fpdConfig, eidPermissionHolder);
610+
bidder, context, aliases, useFirstPartyData, fpdConfig, eidPermissionResolver);
612611
final Device preparedDevice = prepareDevice(
613612
bidRequest.getDevice(), fpdConfig, useFirstPartyData);
614613
bidderToUserAndDevice.put(bidder, Pair.of(preparedUser, preparedDevice));
@@ -621,13 +620,13 @@ private User prepareUser(String bidder,
621620
BidderAliases aliases,
622621
boolean useFirstPartyData,
623622
ExtBidderConfigOrtb fpdConfig,
624-
EidPermissionHolder eidPermissionHolder) {
623+
EidPermissionResolver eidPermissionResolver) {
625624

626625
final User user = context.getBidRequest().getUser();
627626
final ExtUser extUser = user != null ? user.getExt() : null;
628627
final UpdateResult<String> buyerUidUpdateResult = uidUpdater.updateUid(bidder, context, aliases);
629628
final List<Eid> userEids = extractUserEids(user);
630-
final List<Eid> allowedUserEids = eidPermissionHolder.resolveAllowedEids(userEids, bidder);
629+
final List<Eid> allowedUserEids = eidPermissionResolver.resolveAllowedEids(userEids, bidder);
631630
final boolean shouldUpdateUserEids = allowedUserEids.size() != CollectionUtils.emptyIfNull(userEids).size();
632631
final boolean shouldCleanExtPrebid = extUser != null && extUser.getPrebid() != null;
633632
final boolean shouldCleanExtData = extUser != null && extUser.getData() != null && !useFirstPartyData;
Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
package org.prebid.server.auction;
2+
3+
import com.iab.openrtb.request.Eid;
4+
import org.junit.jupiter.api.Test;
5+
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidDataEidPermissions;
6+
7+
import java.util.List;
8+
9+
import static java.util.Arrays.asList;
10+
import static java.util.Collections.singletonList;
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
public class EidPermissionResolverTest {
14+
15+
@Test
16+
public void resolveShouldFilterEidsWhenBidderIsNotAllowedForSourceIgnoringCase() {
17+
// given
18+
final List<Eid> userEids = asList(
19+
Eid.builder().source("source1").build(),
20+
Eid.builder().source("source2").build());
21+
22+
final EidPermissionResolver resolver = EidPermissionResolver.of(
23+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
24+
.source("source1")
25+
.bidders(singletonList("OtHeRbIdDeR"))
26+
.build()));
27+
28+
// when and then
29+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
30+
.containsExactly(Eid.builder().source("source2").build());
31+
}
32+
33+
@Test
34+
void resolveShouldFilterEidsWhenBidderIsNotAllowedForInserterIgnoringCase() {
35+
// given
36+
final List<Eid> userEids = asList(
37+
Eid.builder().inserter("inserter1").build(),
38+
Eid.builder().inserter("inserter2").build());
39+
40+
final EidPermissionResolver resolver = EidPermissionResolver.of(
41+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
42+
.inserter("inserter1")
43+
.bidders(singletonList("OtHeRbIdDeR"))
44+
.build()));
45+
46+
// when and then
47+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
48+
.containsExactly(Eid.builder().inserter("inserter2").build());
49+
}
50+
51+
@Test
52+
public void resolveShouldFilterEidsWhenBidderIsNotAllowedForMatcherIgnoringCase() {
53+
// given
54+
final List<Eid> userEids = asList(
55+
Eid.builder().matcher("matcher1").build(),
56+
Eid.builder().matcher("matcher2").build());
57+
58+
final EidPermissionResolver resolver = EidPermissionResolver.of(
59+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
60+
.matcher("matcher1")
61+
.bidders(singletonList("OtHeRbIdDeR"))
62+
.build()));
63+
64+
// when and then
65+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
66+
.containsExactly(Eid.builder().matcher("matcher2").build());
67+
}
68+
69+
@Test
70+
public void resolveShouldFilterEidsWhenBidderIsNotAllowedForMm() {
71+
// given
72+
final List<Eid> userEids = asList(Eid.builder().mm(1).build(), Eid.builder().mm(2).build());
73+
74+
final EidPermissionResolver resolver = EidPermissionResolver.of(
75+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
76+
.mm(1)
77+
.bidders(singletonList("OtHeRbIdDeR"))
78+
.build()));
79+
80+
// when and then
81+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
82+
.containsExactly(Eid.builder().mm(2).build());
83+
}
84+
85+
@Test
86+
public void resolveShouldFilterEidsWhenBidderIsNotAllowedUsingMultipleCriteria() {
87+
// given
88+
final List<Eid> userEids = asList(
89+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
90+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
91+
92+
final EidPermissionResolver resolver = EidPermissionResolver.of(
93+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
94+
.inserter("inserter1")
95+
.source("source1")
96+
.matcher("matcher1")
97+
.mm(1)
98+
.bidders(singletonList("OtHeRbIdDeR"))
99+
.build()));
100+
101+
// when and then
102+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder")).containsExactly(
103+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
104+
}
105+
106+
@Test
107+
public void resolveShouldFilterEidsWhenEveryCriteriaMatches() {
108+
// given
109+
final List<Eid> userEids = asList(
110+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
111+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
112+
113+
final EidPermissionResolver resolver = EidPermissionResolver.of(
114+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
115+
.inserter("inserter1")
116+
.source("source2")
117+
.matcher("matcher3")
118+
.mm(4)
119+
.bidders(singletonList("OtHeRbIdDeR"))
120+
.build()));
121+
122+
// when and then
123+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder")).containsExactly(
124+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
125+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
126+
}
127+
128+
@Test
129+
public void resolveShouldFilterEidsWhenBidderIsNotAllowedUsingTheMostSpecificRule() {
130+
// given
131+
final List<Eid> userEids = asList(
132+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
133+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
134+
135+
final EidPermissionResolver resolver = EidPermissionResolver.of(
136+
asList(ExtRequestPrebidDataEidPermissions.builder()
137+
.inserter("inserter1")
138+
.bidders(singletonList("someBidder"))
139+
.build(),
140+
ExtRequestPrebidDataEidPermissions.builder()
141+
.inserter("inserter1")
142+
.source("source1")
143+
.matcher("matcher1")
144+
.mm(1)
145+
.bidders(singletonList("OtHeRbIdDeR"))
146+
.build()));
147+
148+
// when and then
149+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder")).containsExactly(
150+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
151+
}
152+
153+
@Test
154+
public void resolveShouldNotFilterUserExtEidsWhenBidderIsAllowedUsingTheMostSpecificRule() {
155+
// given
156+
final List<Eid> userEids = asList(
157+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
158+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
159+
160+
final EidPermissionResolver resolver = EidPermissionResolver.of(
161+
asList(ExtRequestPrebidDataEidPermissions.builder()
162+
.inserter("inserter1")
163+
.bidders(singletonList("OtHeRbIdDeR"))
164+
.build(),
165+
ExtRequestPrebidDataEidPermissions.builder()
166+
.inserter("inserter1")
167+
.source("source1")
168+
.matcher("matcher1")
169+
.mm(1)
170+
.bidders(singletonList("someBidder"))
171+
.build()));
172+
173+
// when and then
174+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder")).containsExactly(
175+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
176+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
177+
}
178+
179+
@Test
180+
public void resolveShouldNotFilterUserExtEidsWhenBidderIsAllowedUsingMultipleSameSpecificityRules() {
181+
// given
182+
final List<Eid> userEids = asList(
183+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
184+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
185+
186+
final EidPermissionResolver resolver = EidPermissionResolver.of(
187+
asList(ExtRequestPrebidDataEidPermissions.builder()
188+
.inserter("inserter1")
189+
.source("source1")
190+
.bidders(singletonList("OtHeRbIdDeR"))
191+
.build(),
192+
ExtRequestPrebidDataEidPermissions.builder()
193+
.matcher("matcher1")
194+
.mm(1)
195+
.bidders(singletonList("someBidder"))
196+
.build()));
197+
198+
// when and then
199+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder")).containsExactly(
200+
Eid.builder().inserter("inserter1").source("source1").matcher("matcher1").mm(1).build(),
201+
Eid.builder().inserter("inserter2").source("source2").matcher("matcher2").mm(2).build());
202+
}
203+
204+
@Test
205+
public void resolveShouldNotFilterEidsWhenEidsPermissionDoesNotContainSourceIgnoringCase() {
206+
// given
207+
final List<Eid> userEids = singletonList(Eid.builder().source("source1").build());
208+
209+
final EidPermissionResolver resolver = EidPermissionResolver.of(
210+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
211+
.source("source2")
212+
.bidders(singletonList("OtHeRbIdDeR"))
213+
.build()));
214+
215+
// when and then
216+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
217+
.containsExactly(Eid.builder().source("source1").build());
218+
}
219+
220+
@Test
221+
public void resolveShouldNotFilterEidsWhenSourceAllowedForAllBiddersIgnoringCase() {
222+
// given
223+
final List<Eid> userEids = singletonList(Eid.builder().source("source1").build());
224+
225+
final EidPermissionResolver resolver = EidPermissionResolver.of(
226+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
227+
.source("source1")
228+
.bidders(singletonList("*"))
229+
.build()));
230+
231+
// when and then
232+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
233+
.containsExactly(Eid.builder().source("source1").build());
234+
}
235+
236+
@Test
237+
public void resolveShouldNotFilterEidsWhenSourceAllowedForBidderIgnoringCase() {
238+
// given
239+
final List<Eid> userEids = singletonList(Eid.builder().source("source1").build());
240+
241+
final EidPermissionResolver resolver = EidPermissionResolver.of(
242+
singletonList(ExtRequestPrebidDataEidPermissions.builder()
243+
.source("source1")
244+
.bidders(singletonList("SoMeBiDdEr"))
245+
.build()));
246+
247+
// when and then
248+
assertThat(resolver.resolveAllowedEids(userEids, "someBidder"))
249+
.containsExactly(Eid.builder().source("source1").build());
250+
}
251+
}

0 commit comments

Comments
 (0)