11package org .prebid .server .bidder .nextmillennium ;
22
33import com .fasterxml .jackson .core .JsonProcessingException ;
4+ import com .fasterxml .jackson .databind .node .ObjectNode ;
45import com .iab .openrtb .request .App ;
56import com .iab .openrtb .request .Banner ;
67import com .iab .openrtb .request .BidRequest ;
@@ -78,8 +79,8 @@ public void makeHttpRequestsShouldUseBidRequestIdForAllRequests() {
7879 // given
7980 final BidRequest bidRequest = givenBidRequest (
8081 request -> request .id ("id" ),
81- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )),
82- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )));
82+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )),
83+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )));
8384
8485 // when
8586 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -97,8 +98,8 @@ public void makeHttpRequestsShouldUseBidRequestTestForAllRequests() {
9798 // given
9899 final BidRequest bidRequest = givenBidRequest (
99100 request -> request .test (1 ),
100- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )),
101- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )));
101+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )),
102+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )));
102103
103104 // when
104105 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -116,8 +117,8 @@ public void makeHttpRequestsShouldUseImpExtBidderPlacementIdForStoredRequestId()
116117 // given
117118 final BidRequest bidRequest = givenBidRequest (
118119 identity (),
119- givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement1" , null )),
120- givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement2" , null )));
120+ givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement1" , null , null , null )),
121+ givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement2" , null , null , null )));
121122
122123 // when
123124 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -138,8 +139,8 @@ public void makeHttpRequestsShouldUseImpExtBidderGroupIdForStoredRequestId() {
138139 // given
139140 final BidRequest bidRequest = givenBidRequest (
140141 identity (),
141- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group1" )),
142- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group2" )));
142+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group1" , null , null )),
143+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group2" , null , null )));
143144
144145 // when
145146 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -168,10 +169,10 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
168169 .w (5 )
169170 .h (6 )
170171 .build ()),
171- ExtImpNextMillennium .of (null , "group1" )),
172+ ExtImpNextMillennium .of (null , "group1" , null , null )),
172173 givenImpWithExt (
173174 imp -> imp .banner (Banner .builder ().w (7 ).h (8 ).build ()),
174- ExtImpNextMillennium .of (null , "group2" )));
175+ ExtImpNextMillennium .of (null , "group2" , null , null )));
175176
176177 // when
177178 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -187,19 +188,53 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
187188 .containsExactly ("ggroup1;1x2;" , "ggroup2;1x2;" );
188189 }
189190
191+ @ Test
192+ public void makeHttpRequestsShouldIncludeAdSlotsAndAllowedAdsInRequestAndImpExt () {
193+ // given
194+ final List <String > adSlots = List .of ("slot1" , "slot2" );
195+ final List <String > allowedAds = List .of ("ad1" , "ad2" );
196+
197+ final ExtImpNextMillennium extImp = ExtImpNextMillennium .of ("placement123" , null , adSlots , allowedAds );
198+
199+ final BidRequest bidRequest = givenBidRequest (
200+ identity (),
201+ givenImpWithExt (identity (), extImp ));
202+
203+ // when
204+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
205+
206+ // then
207+ assertThat (result .getErrors ()).isEmpty ();
208+ assertThat (result .getValue ()).hasSize (1 );
209+
210+ final BidRequest actualRequest = result .getValue ().getFirst ().getPayload ();
211+
212+ final ObjectNode requestExtNode = mapper .valueToTree (actualRequest .getExt ());
213+ assertThat (requestExtNode .at ("/nextMillennium/adSlots/0" ).asText ()).isEqualTo ("slot1" );
214+ assertThat (requestExtNode .at ("/nextMillennium/adSlots/1" ).asText ()).isEqualTo ("slot2" );
215+ assertThat (requestExtNode .at ("/nextMillennium/allowedAds/0" ).asText ()).isEqualTo ("ad1" );
216+ assertThat (requestExtNode .at ("/nextMillennium/allowedAds/1" ).asText ()).isEqualTo ("ad2" );
217+
218+ final ObjectNode impExtNode = (ObjectNode ) actualRequest .getImp ().getFirst ().getExt ();
219+ assertThat (impExtNode .at ("/nextMillennium/adSlots/0" ).asText ()).isEqualTo ("slot1" );
220+ assertThat (impExtNode .at ("/nextMillennium/adSlots/1" ).asText ()).isEqualTo ("slot2" );
221+ assertThat (impExtNode .at ("/nextMillennium/allowedAds/0" ).asText ()).isEqualTo ("ad1" );
222+ assertThat (impExtNode .at ("/nextMillennium/allowedAds/1" ).asText ()).isEqualTo ("ad2" );
223+ }
224+
190225 @ Test
191226 public void makeHttpRequestsShouldUseFirstImpBannerSizeForStoredRequestIds () {
192227 // given
193228 final BidRequest bidRequest = givenBidRequest (
194229 identity (),
195230 givenImpWithExt (
196231 imp -> imp .banner (Banner .builder ().w (7 ).h (8 ).build ()),
197- ExtImpNextMillennium .of (null , "group1" )),
232+ ExtImpNextMillennium .of (null , "group1" , null , null )),
198233 givenImpWithExt (
199234 imp -> imp .banner (Banner .builder ()
200235 .format (singletonList (Format .builder ().w (1 ).h (2 ).build ()))
201236 .build ()),
202- ExtImpNextMillennium .of (null , "group2" )));
237+ ExtImpNextMillennium .of (null , "group2" , null , null )));
203238
204239 // when
205240 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -220,8 +255,8 @@ public void makeHttpRequestsShouldUseAppDomainForStoredRequestId() {
220255 // given
221256 final BidRequest bidRequest = givenBidRequest (
222257 request -> request .app (App .builder ().domain ("appDomain" ).build ()),
223- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group1" )),
224- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group2" )));
258+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group1" , null , null )),
259+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , "group2" , null , null )));
225260
226261 // when
227262 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -242,8 +277,8 @@ public void makeHttpRequestsShouldUseSiteDomainForStoredRequestId() {
242277 // given
243278 final BidRequest bidRequest = givenBidRequest (
244279 request -> request .site (Site .builder ().domain ("siteDomain" ).build ()),
245- givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement1" , "group1" )),
246- givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement2" , "group2" )));
280+ givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement1" , "group1" , null , null )),
281+ givenImpWithExt (identity (), ExtImpNextMillennium .of ("placement2" , "group2" , null , null )));
247282
248283 // when
249284 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -294,7 +329,7 @@ public void makeHttpRequestsImpExtComparison() {
294329 .h (90 )
295330 .build ()))
296331 .build ()),
297- ExtImpNextMillennium .of (placementId , null ));
332+ ExtImpNextMillennium .of (placementId , null , null , null ));
298333
299334 final ExtRequest extRequest = ExtRequest .of (ExtRequestPrebid .builder ()
300335 .schains (emptyList ())
@@ -346,7 +381,7 @@ public void makeHttpRequestsImpShouldBeIdenticalExceptExt() {
346381 .tagid ("custom_imp_tagid" )
347382 .secure (1 )
348383 .banner (banner ),
349- ExtImpNextMillennium .of (placementId , null ));
384+ ExtImpNextMillennium .of (placementId , null , null , null ));
350385
351386 final BidRequest bidRequest = givenBidRequest (b -> b
352387 .id ("c868fd0b-960c-4f49-a8d6-2b3e938b41f2" )
@@ -386,7 +421,7 @@ public void makeHttpRequestsBidRequestShouldBeIdenticalExceptImpExt() {
386421 .tagid ("custom_imp_tagid" )
387422 .secure (1 )
388423 .banner (banner ),
389- ExtImpNextMillennium .of (placementId , null ));
424+ ExtImpNextMillennium .of (placementId , null , null , null ));
390425
391426 final ExtRequest extRequest = ExtRequest .of (ExtRequestPrebid .builder ()
392427 .schains (emptyList ())
@@ -432,7 +467,7 @@ public void makeHttpRequestsShouldPreserveExtPrebidServer() {
432467 .id ("test-request" )
433468 .imp (singletonList (givenImpWithExt (
434469 imp -> imp .banner (Banner .builder ().w (300 ).h (250 ).build ()),
435- ExtImpNextMillennium .of ("placement_id" , null ))))
470+ ExtImpNextMillennium .of ("placement_id" , null , null , null ))))
436471 .ext (extRequest )
437472 .build ();
438473
0 commit comments