1010import org .prebid .server .auction .model .BidderRequest ;
1111import org .prebid .server .bidder .model .Result ;
1212import org .prebid .server .proto .openrtb .ext .request .ExtRequest ;
13+ import org .prebid .server .proto .openrtb .ext .request .ExtRequestBidAdjustmentFactors ;
1314import org .prebid .server .proto .openrtb .ext .request .ExtRequestPrebid ;
15+ import org .prebid .server .proto .openrtb .ext .request .ExtRequestPrebidAlternateBidderCodes ;
16+ import org .prebid .server .proto .openrtb .ext .request .ExtRequestPrebidAlternateBidderCodesBidder ;
17+ import org .prebid .server .proto .openrtb .ext .request .ExtRequestPrebidCache ;
18+ import org .prebid .server .proto .openrtb .ext .request .ImpMediaType ;
1419
20+ import java .math .BigDecimal ;
21+ import java .util .EnumMap ;
22+ import java .util .Map ;
23+ import java .util .function .UnaryOperator ;
24+
25+ import static java .util .Collections .emptyList ;
26+ import static java .util .Collections .emptyMap ;
27+ import static java .util .Collections .singleton ;
28+ import static java .util .function .UnaryOperator .identity ;
1529import static org .assertj .core .api .Assertions .assertThat ;
1630
1731@ ExtendWith (MockitoExtension .class )
@@ -29,7 +43,7 @@ public void setUp() {
2943 @ Test
3044 public void processShouldReturnSameRequest () {
3145 // given
32- final BidderRequest bidderRequest = givenBidderRequest (null );
46+ final BidderRequest bidderRequest = givenBidderRequest (identity () );
3347
3448 // when
3549 final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
@@ -40,9 +54,243 @@ public void processShouldReturnSameRequest() {
4054 }
4155
4256 @ Test
43- public void processShouldReturnCleanedRequest () {
57+ public void processShouldCleanBidAdjustmentFactors () {
58+ // given
59+ final EnumMap <ImpMediaType , Map <String , BigDecimal >> mediaTypes = new EnumMap <>(ImpMediaType .class );
60+ mediaTypes .put (ImpMediaType .banner , Map .of ("other" , BigDecimal .ONE ));
61+ mediaTypes .put (ImpMediaType .video , Map .of (
62+ "other" , BigDecimal .ONE ,
63+ "biddEr" , BigDecimal .ONE ));
64+ final ExtRequestBidAdjustmentFactors factors = ExtRequestBidAdjustmentFactors .builder ()
65+ .mediatypes (mediaTypes )
66+ .build ();
67+ factors .addFactor ("bIdder" , BigDecimal .ONE );
68+
69+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .bidadjustmentfactors (factors ));
70+
71+ // when
72+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
73+
74+ // then
75+ assertThat (result .getValue ())
76+ .extracting (BidderRequest ::getBidRequest )
77+ .extracting (BidRequest ::getExt )
78+ .extracting (ExtRequest ::getPrebid )
79+ .extracting (ExtRequestPrebid ::getBidadjustmentfactors )
80+ .satisfies (factorsResult -> {
81+ assertThat (factorsResult .getAdjustments ()).containsExactly (Map .entry ("bIdder" , BigDecimal .ONE ));
82+ assertThat (factorsResult .getMediatypes ()).containsExactly (
83+ Map .entry (ImpMediaType .video , Map .of ("biddEr" , BigDecimal .ONE )));
84+ });
85+ assertThat (result .getErrors ()).isEmpty ();
86+ }
87+
88+ @ Test
89+ public void processShouldRemoveBidAdjustmentFactors () {
90+ // given
91+ final EnumMap <ImpMediaType , Map <String , BigDecimal >> mediaTypes = new EnumMap <>(ImpMediaType .class );
92+ mediaTypes .put (ImpMediaType .banner , Map .of ("other" , BigDecimal .ONE ));
93+ final ExtRequestBidAdjustmentFactors factors = ExtRequestBidAdjustmentFactors .builder ()
94+ .mediatypes (mediaTypes )
95+ .build ();
96+ factors .addFactor ("other" , BigDecimal .ONE );
97+
98+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .bidadjustmentfactors (factors ));
99+
100+ // when
101+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
102+
103+ // then
104+ assertThat (result .getValue ())
105+ .extracting (BidderRequest ::getBidRequest )
106+ .extracting (BidRequest ::getExt )
107+ .extracting (ExtRequest ::getPrebid )
108+ .extracting (ExtRequestPrebid ::getBidadjustmentfactors )
109+ .isNull ();
110+ assertThat (result .getErrors ()).isEmpty ();
111+ }
112+
113+ @ Test
114+ public void processShouldCleanBidAdjustments () {
115+ // given
116+ final ObjectNode bidAdjustments = mapper .valueToTree (Map .of (
117+ "banner" , Map .of ("other" , 1 ),
118+ "video" , Map .of ("other" , 1 , "biddEr" , 1 )));
119+
120+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .bidadjustments (bidAdjustments ));
121+
122+ // when
123+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
124+
125+ // then
126+ assertThat (result .getValue ())
127+ .extracting (BidderRequest ::getBidRequest )
128+ .extracting (BidRequest ::getExt )
129+ .extracting (ExtRequest ::getPrebid )
130+ .extracting (ExtRequestPrebid ::getBidadjustments )
131+ .isEqualTo (mapper .valueToTree (Map .of ("video" , Map .of ("biddEr" , 1 ))));
132+ assertThat (result .getErrors ()).isEmpty ();
133+ }
134+
135+ @ Test
136+ public void processShouldRemoveBidAdjustments () {
137+ // given
138+ final ObjectNode bidAdjustments = mapper .valueToTree (Map .of ("banner" , Map .of ("other" , 1 )));
139+
140+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .bidadjustments (bidAdjustments ));
141+
142+ // when
143+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
144+
145+ // then
146+ assertThat (result .getValue ())
147+ .extracting (BidderRequest ::getBidRequest )
148+ .extracting (BidRequest ::getExt )
149+ .extracting (ExtRequest ::getPrebid )
150+ .extracting (ExtRequestPrebid ::getBidadjustments )
151+ .isNull ();
152+ assertThat (result .getErrors ()).isEmpty ();
153+ }
154+
155+ @ Test
156+ public void processShouldCleanAlternateBidderCodes () {
157+ // given
158+ final ExtRequestPrebidAlternateBidderCodes codes = ExtRequestPrebidAlternateBidderCodes .of (
159+ true , Map .of (
160+ "other" , ExtRequestPrebidAlternateBidderCodesBidder .of (true , singleton ("otherV" )),
161+ "biddEr" , ExtRequestPrebidAlternateBidderCodesBidder .of (true , singleton ("bidderV" ))));
162+
163+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .alternateBidderCodes (codes ));
164+
165+ // when
166+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
167+
168+ // then
169+ assertThat (result .getValue ())
170+ .extracting (BidderRequest ::getBidRequest )
171+ .extracting (BidRequest ::getExt )
172+ .extracting (ExtRequest ::getPrebid )
173+ .extracting (ExtRequestPrebid ::getAlternateBidderCodes )
174+ .isEqualTo (ExtRequestPrebidAlternateBidderCodes .of (true , Map .of (
175+ "biddEr" , ExtRequestPrebidAlternateBidderCodesBidder .of (true , singleton ("bidderV" )))));
176+ assertThat (result .getErrors ()).isEmpty ();
177+ }
178+
179+ @ Test
180+ public void processShouldRemoveReturnAllBidStatus () {
181+ // given
182+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .returnallbidstatus (true ));
183+
184+ // when
185+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
186+
187+ // then
188+ assertThat (result .getValue ())
189+ .extracting (BidderRequest ::getBidRequest )
190+ .extracting (BidRequest ::getExt )
191+ .extracting (ExtRequest ::getPrebid )
192+ .extracting (ExtRequestPrebid ::getReturnallbidstatus )
193+ .isNull ();
194+ assertThat (result .getErrors ()).isEmpty ();
195+ }
196+
197+ @ Test
198+ public void processShouldRemoveAliasGvlIds () {
199+ // given
200+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .aliasgvlids (emptyMap ()));
201+
202+ // when
203+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
204+
205+ // then
206+ assertThat (result .getValue ())
207+ .extracting (BidderRequest ::getBidRequest )
208+ .extracting (BidRequest ::getExt )
209+ .extracting (ExtRequest ::getPrebid )
210+ .extracting (ExtRequestPrebid ::getAliasgvlids )
211+ .isNull ();
212+ assertThat (result .getErrors ()).isEmpty ();
213+ }
214+
215+ @ Test
216+ public void processShouldRemoveAdServerTargeting () {
217+ // given
218+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .adservertargeting (emptyList ()));
219+
220+ // when
221+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
222+
223+ // then
224+ assertThat (result .getValue ())
225+ .extracting (BidderRequest ::getBidRequest )
226+ .extracting (BidRequest ::getExt )
227+ .extracting (ExtRequest ::getPrebid )
228+ .extracting (ExtRequestPrebid ::getAdservertargeting )
229+ .isNull ();
230+ assertThat (result .getErrors ()).isEmpty ();
231+ }
232+
233+ @ Test
234+ public void processShouldRemoveCache () {
235+ // given
236+ final BidderRequest bidderRequest = givenBidderRequest (
237+ extPrebid -> extPrebid .cache (ExtRequestPrebidCache .EMPTY ));
238+
239+ // when
240+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
241+
242+ // then
243+ assertThat (result .getValue ())
244+ .extracting (BidderRequest ::getBidRequest )
245+ .extracting (BidRequest ::getExt )
246+ .extracting (ExtRequest ::getPrebid )
247+ .extracting (ExtRequestPrebid ::getCache )
248+ .isNull ();
249+ assertThat (result .getErrors ()).isEmpty ();
250+ }
251+
252+ @ Test
253+ public void processShouldRemoveEvents () {
254+ // given
255+ final BidderRequest bidderRequest = givenBidderRequest (
256+ extPrebid -> extPrebid .events (mapper .createObjectNode ()));
257+
258+ // when
259+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
260+
261+ // then
262+ assertThat (result .getValue ())
263+ .extracting (BidderRequest ::getBidRequest )
264+ .extracting (BidRequest ::getExt )
265+ .extracting (ExtRequest ::getPrebid )
266+ .extracting (ExtRequestPrebid ::getEvents )
267+ .isNull ();
268+ assertThat (result .getErrors ()).isEmpty ();
269+ }
270+
271+ @ Test
272+ public void processShouldRemoveNoSale () {
273+ // given
274+ final BidderRequest bidderRequest = givenBidderRequest (extPrebid -> extPrebid .nosale (emptyList ()));
275+
276+ // when
277+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
278+
279+ // then
280+ assertThat (result .getValue ())
281+ .extracting (BidderRequest ::getBidRequest )
282+ .extracting (BidRequest ::getExt )
283+ .extracting (ExtRequest ::getPrebid )
284+ .extracting (ExtRequestPrebid ::getNosale )
285+ .isNull ();
286+ assertThat (result .getErrors ()).isEmpty ();
287+ }
288+
289+ @ Test
290+ public void processShouldRemoveBidderControls () {
44291 // given
45- final BidderRequest bidderRequest = givenBidderRequest (mapper .createObjectNode ());
292+ final BidderRequest bidderRequest = givenBidderRequest (
293+ extPrebid -> extPrebid .biddercontrols (mapper .createObjectNode ()));
46294
47295 // when
48296 final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
@@ -57,12 +305,69 @@ public void processShouldReturnCleanedRequest() {
57305 assertThat (result .getErrors ()).isEmpty ();
58306 }
59307
60- private static BidderRequest givenBidderRequest (ObjectNode bidderControls ) {
308+ @ Test
309+ public void processShouldRemoveAnalytics () {
310+ // given
311+ final BidderRequest bidderRequest = givenBidderRequest (
312+ extPrebid -> extPrebid .analytics (mapper .createObjectNode ()));
313+
314+ // when
315+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
316+
317+ // then
318+ assertThat (result .getValue ())
319+ .extracting (BidderRequest ::getBidRequest )
320+ .extracting (BidRequest ::getExt )
321+ .extracting (ExtRequest ::getPrebid )
322+ .extracting (ExtRequestPrebid ::getAnalytics )
323+ .isNull ();
324+ assertThat (result .getErrors ()).isEmpty ();
325+ }
326+
327+ @ Test
328+ public void processShouldRemovePassthrough () {
329+ // given
330+ final BidderRequest bidderRequest = givenBidderRequest (
331+ extPrebid -> extPrebid .passthrough (mapper .createObjectNode ()));
332+
333+ // when
334+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
335+
336+ // then
337+ assertThat (result .getValue ())
338+ .extracting (BidderRequest ::getBidRequest )
339+ .extracting (BidRequest ::getExt )
340+ .extracting (ExtRequest ::getPrebid )
341+ .extracting (ExtRequestPrebid ::getPassthrough )
342+ .isNull ();
343+ assertThat (result .getErrors ()).isEmpty ();
344+ }
345+
346+ @ Test
347+ public void processShouldRemoveKvps () {
348+ // given
349+ final BidderRequest bidderRequest = givenBidderRequest (
350+ extPrebid -> extPrebid .kvps (mapper .createObjectNode ()));
351+
352+ // when
353+ final Result <BidderRequest > result = target .process (bidderRequest , null , null ).result ();
354+
355+ // then
356+ assertThat (result .getValue ())
357+ .extracting (BidderRequest ::getBidRequest )
358+ .extracting (BidRequest ::getExt )
359+ .extracting (ExtRequest ::getPrebid )
360+ .extracting (ExtRequestPrebid ::getKvps )
361+ .isNull ();
362+ assertThat (result .getErrors ()).isEmpty ();
363+ }
364+
365+ private static BidderRequest givenBidderRequest (
366+ UnaryOperator <ExtRequestPrebid .ExtRequestPrebidBuilder > extPrebidCustomizer ) {
367+
61368 return BidderRequest .builder ()
62369 .bidRequest (BidRequest .builder ()
63- .ext (ExtRequest .of (ExtRequestPrebid .builder ()
64- .biddercontrols (bidderControls )
65- .build ()))
370+ .ext (ExtRequest .of (extPrebidCustomizer .apply (ExtRequestPrebid .builder ()).build ()))
66371 .build ())
67372 .bidder (BIDDER )
68373 .build ();
0 commit comments