2323import org .prebid .server .bidder .model .HttpRequest ;
2424import org .prebid .server .bidder .model .HttpResponse ;
2525import org .prebid .server .bidder .model .Result ;
26+ import org .prebid .server .bidder .nextmillennium .proto .NextMillenniumExt ;
27+ import org .prebid .server .bidder .nextmillennium .proto .NextMillenniumExtBidder ;
2628import org .prebid .server .proto .openrtb .ext .ExtPrebid ;
2729import org .prebid .server .proto .openrtb .ext .request .ExtRequest ;
2830import org .prebid .server .proto .openrtb .ext .request .ExtRequestPrebid ;
@@ -78,8 +80,8 @@ public void makeHttpRequestsShouldUseBidRequestIdForAllRequests() {
7880 // given
7981 final BidRequest bidRequest = givenBidRequest (
8082 request -> request .id ("id" ),
81- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )),
82- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )));
83+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )),
84+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )));
8385
8486 // when
8587 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -97,8 +99,8 @@ public void makeHttpRequestsShouldUseBidRequestTestForAllRequests() {
9799 // given
98100 final BidRequest bidRequest = givenBidRequest (
99101 request -> request .test (1 ),
100- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )),
101- givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null )));
102+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )),
103+ givenImpWithExt (identity (), ExtImpNextMillennium .of (null , null , null , null )));
102104
103105 // when
104106 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -116,8 +118,8 @@ public void makeHttpRequestsShouldUseImpExtBidderPlacementIdForStoredRequestId()
116118 // given
117119 final BidRequest bidRequest = givenBidRequest (
118120 identity (),
119- givenImpWithExt (identity (), ExtImpNextMillennium . of ("placement1" , null )),
120- givenImpWithExt (identity (), ExtImpNextMillennium . of ("placement2" , null )));
121+ givenImpWithExt (identity (), givenExtImpWithPlacementId ("placement1" )),
122+ givenImpWithExt (identity (), givenExtImpWithPlacementId ("placement2" )));
121123
122124 // when
123125 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -138,8 +140,8 @@ public void makeHttpRequestsShouldUseImpExtBidderGroupIdForStoredRequestId() {
138140 // given
139141 final BidRequest bidRequest = givenBidRequest (
140142 identity (),
141- givenImpWithExt (identity (), ExtImpNextMillennium . of ( null , "group1" )),
142- givenImpWithExt (identity (), ExtImpNextMillennium . of ( null , "group2" )));
143+ givenImpWithExt (identity (), givenExtImpWithGroupId ( "group1" )),
144+ givenImpWithExt (identity (), givenExtImpWithGroupId ( "group2" )));
143145
144146 // when
145147 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -168,10 +170,10 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
168170 .w (5 )
169171 .h (6 )
170172 .build ()),
171- ExtImpNextMillennium . of ( null , "group1" )),
173+ givenExtImpWithGroupId ( "group1" )),
172174 givenImpWithExt (
173175 imp -> imp .banner (Banner .builder ().w (7 ).h (8 ).build ()),
174- ExtImpNextMillennium . of ( null , "group2" )));
176+ givenExtImpWithGroupId ( "group2" )));
175177
176178 // when
177179 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -187,19 +189,61 @@ public void makeHttpRequestsShouldUseFirstImpBannerFirstFormatForStoredRequestId
187189 .containsExactly ("ggroup1;1x2;" , "ggroup2;1x2;" );
188190 }
189191
192+ @ Test
193+ public void makeHttpRequestsShouldIncludeAdSlotsAndAllowedAdsOnlyInRequestExt () {
194+ // given
195+ final List <String > adSlots = List .of ("slot1" , "slot2" );
196+ final List <String > allowedAds = List .of ("ad1" , "ad2" );
197+
198+ final ExtImpNextMillennium extImp = ExtImpNextMillennium .of ("placement123" , null , adSlots , allowedAds );
199+
200+ final BidRequest bidRequest = givenBidRequest (
201+ identity (),
202+ givenImpWithExt (identity (), extImp ));
203+
204+ // when
205+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
206+
207+ // then
208+ assertThat (result .getErrors ()).isEmpty ();
209+ assertThat (result .getValue ()).hasSize (1 );
210+
211+ final BidRequest actualRequest = result .getValue ().getFirst ().getPayload ();
212+
213+ final NextMillenniumExtBidder requestExt = jacksonMapper .mapper ()
214+ .convertValue (
215+ jacksonMapper .mapper ().convertValue (actualRequest
216+ .getExt (), NextMillenniumExt .class ).getNextMillennium (),
217+ NextMillenniumExtBidder .class );
218+
219+ final NextMillenniumExtBidder impExt = jacksonMapper .mapper ()
220+ .convertValue (
221+ jacksonMapper .mapper ().convertValue (actualRequest
222+ .getImp ().getFirst ().getExt (), NextMillenniumExt .class ).getNextMillennium (),
223+ NextMillenniumExtBidder .class );
224+
225+ assertThat (requestExt )
226+ .extracting (NextMillenniumExtBidder ::getAdSlots , NextMillenniumExtBidder ::getAllowedAds )
227+ .containsExactly (adSlots , allowedAds );
228+
229+ assertThat (impExt .getAdSlots ()).isNull ();
230+ assertThat (impExt .getAllowedAds ()).isNull ();
231+ assertThat (impExt .getNmmFlags ()).containsExactly ("valueOne" , "valueTwo" );
232+ }
233+
190234 @ Test
191235 public void makeHttpRequestsShouldUseFirstImpBannerSizeForStoredRequestIds () {
192236 // given
193237 final BidRequest bidRequest = givenBidRequest (
194238 identity (),
195239 givenImpWithExt (
196240 imp -> imp .banner (Banner .builder ().w (7 ).h (8 ).build ()),
197- ExtImpNextMillennium . of ( null , "group1" )),
241+ givenExtImpWithGroupId ( "group1" )),
198242 givenImpWithExt (
199243 imp -> imp .banner (Banner .builder ()
200244 .format (singletonList (Format .builder ().w (1 ).h (2 ).build ()))
201245 .build ()),
202- ExtImpNextMillennium . of ( null , "group2" )));
246+ givenExtImpWithGroupId ( "group2" )));
203247
204248 // when
205249 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -220,8 +264,8 @@ public void makeHttpRequestsShouldUseAppDomainForStoredRequestId() {
220264 // given
221265 final BidRequest bidRequest = givenBidRequest (
222266 request -> request .app (App .builder ().domain ("appDomain" ).build ()),
223- givenImpWithExt (identity (), ExtImpNextMillennium . of ( null , "group1" )),
224- givenImpWithExt (identity (), ExtImpNextMillennium . of ( null , "group2" )));
267+ givenImpWithExt (identity (), givenExtImpWithGroupId ( "group1" )),
268+ givenImpWithExt (identity (), givenExtImpWithGroupId ( "group2" )));
225269
226270 // when
227271 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -242,8 +286,8 @@ public void makeHttpRequestsShouldUseSiteDomainForStoredRequestId() {
242286 // given
243287 final BidRequest bidRequest = givenBidRequest (
244288 request -> request .site (Site .builder ().domain ("siteDomain" ).build ()),
245- givenImpWithExt (identity (), ExtImpNextMillennium . of ("placement1" , "group1" )),
246- givenImpWithExt (identity (), ExtImpNextMillennium . of ("placement2" , "group2" )));
289+ givenImpWithExt (identity (), givenExtImpWithPlacementIdAndGroupId ("placement1" , "group1" )),
290+ givenImpWithExt (identity (), givenExtImpWithPlacementIdAndGroupId ("placement2" , "group2" )));
247291
248292 // when
249293 final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
@@ -294,7 +338,7 @@ public void makeHttpRequestsImpExtComparison() {
294338 .h (90 )
295339 .build ()))
296340 .build ()),
297- ExtImpNextMillennium .of (placementId , null ));
341+ ExtImpNextMillennium .of (placementId , null , null , null ));
298342
299343 final ExtRequest extRequest = ExtRequest .of (ExtRequestPrebid .builder ()
300344 .schains (emptyList ())
@@ -346,7 +390,7 @@ public void makeHttpRequestsImpShouldBeIdenticalExceptExt() {
346390 .tagid ("custom_imp_tagid" )
347391 .secure (1 )
348392 .banner (banner ),
349- ExtImpNextMillennium .of (placementId , null ));
393+ ExtImpNextMillennium .of (placementId , null , null , null ));
350394
351395 final BidRequest bidRequest = givenBidRequest (b -> b
352396 .id ("c868fd0b-960c-4f49-a8d6-2b3e938b41f2" )
@@ -386,7 +430,7 @@ public void makeHttpRequestsBidRequestShouldBeIdenticalExceptImpExt() {
386430 .tagid ("custom_imp_tagid" )
387431 .secure (1 )
388432 .banner (banner ),
389- ExtImpNextMillennium .of (placementId , null ));
433+ ExtImpNextMillennium .of (placementId , null , null , null ));
390434
391435 final ExtRequest extRequest = ExtRequest .of (ExtRequestPrebid .builder ()
392436 .schains (emptyList ())
@@ -432,7 +476,7 @@ public void makeHttpRequestsShouldPreserveExtPrebidServer() {
432476 .id ("test-request" )
433477 .imp (singletonList (givenImpWithExt (
434478 imp -> imp .banner (Banner .builder ().w (300 ).h (250 ).build ()),
435- ExtImpNextMillennium .of ("placement_id" , null ))))
479+ ExtImpNextMillennium .of ("placement_id" , null , null , null ))))
436480 .ext (extRequest )
437481 .build ();
438482
@@ -603,4 +647,16 @@ private static Imp givenImpWithExt(UnaryOperator<Imp.ImpBuilder> impCustomizer,
603647 return givenImp (impCustomizer .andThen (imp -> imp .ext (mapper .valueToTree (
604648 ExtPrebid .of (null , extImpNextMillennium ))))::apply );
605649 }
650+
651+ private static ExtImpNextMillennium givenExtImpWithGroupId (String groupId ) {
652+ return ExtImpNextMillennium .of (null , groupId , null , null );
653+ }
654+
655+ private static ExtImpNextMillennium givenExtImpWithPlacementId (String placementId ) {
656+ return ExtImpNextMillennium .of (placementId , null , null , null );
657+ }
658+
659+ private static ExtImpNextMillennium givenExtImpWithPlacementIdAndGroupId (String placementId , String groupId ) {
660+ return ExtImpNextMillennium .of (placementId , groupId , null , null );
661+ }
606662}
0 commit comments