@@ -49,6 +49,8 @@ public void creationShouldFailOnInvalidEndpointUrl() {
4949 assertThatIllegalArgumentException ().isThrownBy (() -> new YandexBidder ("invalid_url" , jacksonMapper ));
5050 }
5151
52+ // ========== makeHttpRequest* tests ==========
53+
5254 @ Test
5355 public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed () {
5456 // given
@@ -263,6 +265,159 @@ public void makeHttpRequestsShouldModifyVideoParameters() {
263265 .containsOnly (tuple (1 , 120 , singletonList (3 )));
264266 }
265267
268+ @ Test
269+ public void makeHttpRequestsShouldSetExpectedHeaders () {
270+ // given
271+ final BidRequest bidRequest = givenBidRequest (identity (),
272+ requestBuilder -> requestBuilder .site (Site .builder ().id ("1" ).page ("https://example.com/path?query=value" ).build ())
273+ .device (Device .builder ().ua ("UA" ).language ("EN" ).ip ("127.0.0.1" ).build ()));
274+
275+ // when
276+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
277+
278+ // then
279+ assertThat (result .getErrors ()).isEmpty ();
280+ assertThat (result .getValue ().getFirst ().getHeaders ())
281+ .extracting (Map .Entry ::getKey , Map .Entry ::getValue )
282+ .containsOnly (tuple ("Accept-Language" , "EN" ),
283+ tuple ("User-Agent" , "UA" ),
284+ tuple ("X-Forwarded-For" , "127.0.0.1" ),
285+ tuple ("X-Real-Ip" , "127.0.0.1" ),
286+ tuple ("Content-Type" , "application/json;charset=utf-8" ),
287+ tuple ("Accept" , "application/json" ),
288+ tuple ("x-openrtb-version" , "2.5" ),
289+ tuple ("Referer" , "https://example.com/path?query=value" ));
290+ }
291+
292+ @ Test
293+ public void makeHttpRequestsShouldCreateCorrectURL () {
294+ // given
295+ final BidRequest bidRequest = BidRequest .builder ()
296+ .imp (singletonList (givenImp (impBuilder -> impBuilder .id ("blockA" ).ext (givenImpExt (1 )))))
297+ .site (Site .builder ().id ("1" ).page ("https://example.com/path?query=value" ).build ())
298+ .cur (asList ("EUR" , "USD" ))
299+ .build ();
300+ // when
301+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
302+
303+ // then
304+ assertThat (result .getErrors ()).isEmpty ();
305+ assertThat (result .getValue ()).extracting (HttpRequest ::getUri )
306+ .containsExactly ("https://test.endpoint.com/?"
307+ + "target-ref=https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue&ssp-cur=EUR" );
308+ }
309+
310+ @ Test
311+ public void makeHttpRequestsShouldSupportMultiFormatImpression () {
312+ // given
313+ final BidRequest bidRequest = BidRequest .builder ()
314+ .site (Site .builder ().id ("1" ).build ())
315+ .imp (singletonList (
316+ Imp .builder ().id ("multiFormatImp" )
317+ .banner (Banner .builder ().w (300 ).h (600 ).build ())
318+ .video (Video .builder ().w (300 ).h (600 ).build ())
319+ .xNative (Native .builder ().build ())
320+ .ext (givenImpExt (1 ))
321+ .build ()))
322+ .build ();
323+
324+ // when
325+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
326+
327+ // then
328+ assertThat (result .getErrors ()).isEmpty ();
329+ assertThat (result .getValue ()).hasSize (1 );
330+
331+ final Imp modifiedImp = result .getValue ().getFirst ().getPayload ().getImp ().getFirst ();
332+ assertThat (modifiedImp .getBanner ()).isNotNull ();
333+ assertThat (modifiedImp .getVideo ()).isNotNull ();
334+ assertThat (modifiedImp .getXNative ()).isNotNull ();
335+ assertThat (modifiedImp .getDisplaymanager ()).isEqualTo ("prebid.java" );
336+ assertThat (modifiedImp .getDisplaymanagerver ()).isEqualTo ("1.1" );
337+ }
338+
339+ @ Test
340+ public void makeHttpRequestsShouldSupportMultiFormatImpressionWithPartialErrors () {
341+ // given
342+ final BidRequest bidRequest = BidRequest .builder ()
343+ .site (Site .builder ().id ("1" ).build ())
344+ .imp (singletonList (
345+ Imp .builder ().id ("multiFormatImpWithErrors" )
346+ .banner (Banner .builder ().w (0 ).h (0 ).build ()) // Invalid banner
347+ .video (Video .builder ().w (300 ).h (600 ).build ()) // Valid video
348+ .xNative (Native .builder ().build ()) // Valid native
349+ .ext (givenImpExt (1 ))
350+ .build ()))
351+ .build ();
352+
353+ // when
354+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
355+
356+ // then
357+ assertThat (result .getErrors ()).containsExactly (
358+ BidderError .badInput ("Invalid sizes provided for Banner 0x0" ));
359+ assertThat (result .getValue ()).isEmpty ();
360+ }
361+
362+ @ Test
363+ public void makeHttpRequestsShouldReturnErrorWhenNoValidFormats () {
364+ // given
365+ final BidRequest bidRequest = BidRequest .builder ()
366+ .site (Site .builder ().id ("1" ).build ())
367+ .imp (singletonList (
368+ Imp .builder ().id ("noValidFormats" )
369+ .banner (Banner .builder ().w (0 ).h (0 ).build ()) // Invalid banner
370+ .video (Video .builder ().w (0 ).h (0 ).build ()) // Invalid video
371+ .ext (givenImpExt (1 ))
372+ .build ()))
373+ .build ();
374+
375+ // when
376+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
377+
378+ // then
379+ assertThat (result .getErrors ())
380+ .containsExactly (BidderError .badInput ("Invalid sizes provided for Banner 0x0" ));
381+ assertThat (result .getValue ()).isEmpty ();
382+ }
383+
384+ @ Test
385+ public void makeHttpRequestsShouldSetDisplayManagerAndVersionForAllImpTypes () {
386+ // given
387+ final BidRequest bidRequest = BidRequest .builder ()
388+ .site (Site .builder ().id ("1" ).build ())
389+ .imp (asList (
390+ Imp .builder ().id ("bannerImp" )
391+ .banner (Banner .builder ().w (300 ).h (600 ).build ())
392+ .ext (givenImpExt (1 ))
393+ .build (),
394+ Imp .builder ().id ("videoImp" )
395+ .video (Video .builder ().w (300 ).h (600 ).build ())
396+ .ext (givenImpExt (2 ))
397+ .build (),
398+ Imp .builder ().id ("nativeImp" )
399+ .xNative (Native .builder ().build ())
400+ .ext (givenImpExt (3 ))
401+ .build ()))
402+ .build ();
403+
404+ // when
405+ final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
406+
407+ // then
408+ assertThat (result .getErrors ()).isEmpty ();
409+ assertThat (result .getValue ()).hasSize (3 )
410+ .extracting (HttpRequest ::getPayload )
411+ .flatExtracting (BidRequest ::getImp )
412+ .extracting (Imp ::getDisplaymanager , Imp ::getDisplaymanagerver )
413+ .containsOnly (
414+ tuple ("prebid.java" , "1.1" ),
415+ tuple ("prebid.java" , "1.1" ),
416+ tuple ("prebid.java" , "1.1" ));
417+ }
418+
419+ // ========== makeBids* tests ==========
420+
266421 @ Test
267422 public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed () {
268423 // given
@@ -458,156 +613,7 @@ public void makeBidsShouldReturnCorrectBidTypeForMultiFormatImpression() throws
458613 assertThat (result .getValue ().getFirst ().getType ()).isEqualTo (video ); // Video has highest priority
459614 }
460615
461- @ Test
462- public void makeHttpRequestsShouldSetExpectedHeaders () {
463- // given
464- final BidRequest bidRequest = givenBidRequest (identity (),
465- requestBuilder -> requestBuilder .site (Site .builder ().id ("1" ).page ("https://example.com/path?query=value" ).build ())
466- .device (Device .builder ().ua ("UA" ).language ("EN" ).ip ("127.0.0.1" ).build ()));
467-
468- // when
469- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
470-
471- // then
472- assertThat (result .getErrors ()).isEmpty ();
473- assertThat (result .getValue ().getFirst ().getHeaders ())
474- .extracting (Map .Entry ::getKey , Map .Entry ::getValue )
475- .containsOnly (tuple ("Accept-Language" , "EN" ),
476- tuple ("User-Agent" , "UA" ),
477- tuple ("X-Forwarded-For" , "127.0.0.1" ),
478- tuple ("X-Real-Ip" , "127.0.0.1" ),
479- tuple ("Content-Type" , "application/json;charset=utf-8" ),
480- tuple ("Accept" , "application/json" ),
481- tuple ("x-openrtb-version" , "2.5" ),
482- tuple ("Referer" , "https://example.com/path?query=value" ));
483- }
484-
485- @ Test
486- public void makeHttpRequestsShouldCreateCorrectURL () {
487- // given
488- final BidRequest bidRequest = BidRequest .builder ()
489- .imp (singletonList (givenImp (impBuilder -> impBuilder .id ("blockA" ).ext (givenImpExt (1 )))))
490- .site (Site .builder ().id ("1" ).page ("https://example.com/path?query=value" ).build ())
491- .cur (asList ("EUR" , "USD" ))
492- .build ();
493- // when
494- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
495-
496- // then
497- assertThat (result .getErrors ()).isEmpty ();
498- assertThat (result .getValue ()).extracting (HttpRequest ::getUri )
499- .containsExactly ("https://test.endpoint.com/?"
500- + "target-ref=https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue&ssp-cur=EUR" );
501- }
502-
503- @ Test
504- public void makeHttpRequestsShouldSupportMultiFormatImpression () {
505- // given
506- final BidRequest bidRequest = BidRequest .builder ()
507- .site (Site .builder ().id ("1" ).build ())
508- .imp (singletonList (
509- Imp .builder ().id ("multiFormatImp" )
510- .banner (Banner .builder ().w (300 ).h (600 ).build ())
511- .video (Video .builder ().w (300 ).h (600 ).build ())
512- .xNative (Native .builder ().build ())
513- .ext (givenImpExt (1 ))
514- .build ()))
515- .build ();
516-
517- // when
518- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
519-
520- // then
521- assertThat (result .getErrors ()).isEmpty ();
522- assertThat (result .getValue ()).hasSize (1 );
523-
524- final Imp modifiedImp = result .getValue ().getFirst ().getPayload ().getImp ().getFirst ();
525- assertThat (modifiedImp .getBanner ()).isNotNull ();
526- assertThat (modifiedImp .getVideo ()).isNotNull ();
527- assertThat (modifiedImp .getXNative ()).isNotNull ();
528- assertThat (modifiedImp .getDisplaymanager ()).isEqualTo ("prebid.java" );
529- assertThat (modifiedImp .getDisplaymanagerver ()).isEqualTo ("1.1" );
530- }
531-
532- @ Test
533- public void makeHttpRequestsShouldSupportMultiFormatImpressionWithPartialErrors () {
534- // given
535- final BidRequest bidRequest = BidRequest .builder ()
536- .site (Site .builder ().id ("1" ).build ())
537- .imp (singletonList (
538- Imp .builder ().id ("multiFormatImpWithErrors" )
539- .banner (Banner .builder ().w (0 ).h (0 ).build ()) // Invalid banner
540- .video (Video .builder ().w (300 ).h (600 ).build ()) // Valid video
541- .xNative (Native .builder ().build ()) // Valid native
542- .ext (givenImpExt (1 ))
543- .build ()))
544- .build ();
545-
546- // when
547- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
548-
549- // then
550- assertThat (result .getErrors ()).containsExactly (
551- BidderError .badInput ("Invalid sizes provided for Banner 0x0" ));
552- assertThat (result .getValue ()).isEmpty ();
553- }
554-
555- @ Test
556- public void makeHttpRequestsShouldReturnErrorWhenNoValidFormats () {
557- // given
558- final BidRequest bidRequest = BidRequest .builder ()
559- .site (Site .builder ().id ("1" ).build ())
560- .imp (singletonList (
561- Imp .builder ().id ("noValidFormats" )
562- .banner (Banner .builder ().w (0 ).h (0 ).build ()) // Invalid banner
563- .video (Video .builder ().w (0 ).h (0 ).build ()) // Invalid video
564- .ext (givenImpExt (1 ))
565- .build ()))
566- .build ();
567-
568- // when
569- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
570-
571- // then
572- assertThat (result .getErrors ())
573- .containsExactly (BidderError .badInput ("Invalid sizes provided for Banner 0x0" ));
574- assertThat (result .getValue ()).isEmpty ();
575- }
576-
577- @ Test
578- public void makeHttpRequestsShouldSetDisplayManagerAndVersionForAllImpTypes () {
579- // given
580- final BidRequest bidRequest = BidRequest .builder ()
581- .site (Site .builder ().id ("1" ).build ())
582- .imp (asList (
583- Imp .builder ().id ("bannerImp" )
584- .banner (Banner .builder ().w (300 ).h (600 ).build ())
585- .ext (givenImpExt (1 ))
586- .build (),
587- Imp .builder ().id ("videoImp" )
588- .video (Video .builder ().w (300 ).h (600 ).build ())
589- .ext (givenImpExt (2 ))
590- .build (),
591- Imp .builder ().id ("nativeImp" )
592- .xNative (Native .builder ().build ())
593- .ext (givenImpExt (3 ))
594- .build ()))
595- .build ();
596-
597- // when
598- final Result <List <HttpRequest <BidRequest >>> result = target .makeHttpRequests (bidRequest );
599-
600- // then
601- assertThat (result .getErrors ()).isEmpty ();
602- assertThat (result .getValue ()).hasSize (3 )
603- .extracting (HttpRequest ::getPayload )
604- .flatExtracting (BidRequest ::getImp )
605- .extracting (Imp ::getDisplaymanager , Imp ::getDisplaymanagerver )
606- .containsOnly (
607- tuple ("prebid.java" , "1.1" ),
608- tuple ("prebid.java" , "1.1" ),
609- tuple ("prebid.java" , "1.1" ));
610- }
616+ // ========== Helper methods ==========
611617
612618 private static BidRequest givenBidRequest (
613619 Function <Imp .ImpBuilder , Imp .ImpBuilder > impCustomizer ,
@@ -644,4 +650,4 @@ private static BidderCall<BidRequest> givenBidderCall(BidRequest bidRequest, Str
644650 HttpResponse .of (200 , null , body ),
645651 null );
646652 }
647- }
653+ }
0 commit comments