|
6 | 6 | import com.iab.openrtb.request.Banner; |
7 | 7 | import com.iab.openrtb.request.BidRequest; |
8 | 8 | import com.iab.openrtb.request.Imp; |
| 9 | +import com.iab.openrtb.request.Native; |
9 | 10 | import com.iab.openrtb.request.Site; |
10 | 11 | import com.iab.openrtb.request.Video; |
11 | 12 | import com.iab.openrtb.response.Bid; |
|
21 | 22 | import org.prebid.server.bidder.model.BidderBid; |
22 | 23 | import org.prebid.server.bidder.model.BidderCall; |
23 | 24 | import org.prebid.server.bidder.model.BidderError; |
| 25 | +import org.prebid.server.bidder.model.CompositeBidderResponse; |
24 | 26 | import org.prebid.server.bidder.model.HttpRequest; |
25 | 27 | import org.prebid.server.bidder.model.HttpResponse; |
26 | 28 | import org.prebid.server.bidder.model.Result; |
27 | 29 | import org.prebid.server.currency.CurrencyConversionService; |
28 | 30 | import org.prebid.server.proto.openrtb.ext.ExtPrebid; |
29 | 31 | import org.prebid.server.proto.openrtb.ext.request.epsilon.ExtImpEpsilon; |
| 32 | +import org.prebid.server.proto.openrtb.ext.response.BidType; |
| 33 | +import org.prebid.server.proto.openrtb.ext.response.ExtBidResponse; |
30 | 34 |
|
31 | 35 | import java.math.BigDecimal; |
32 | 36 | import java.util.Collections; |
@@ -712,6 +716,59 @@ public void makeHttpRequestsShouldReturnConvertedBidFloorCurrency() { |
712 | 716 | .containsOnly(AssertionsForClassTypes.tuple(BigDecimal.ONE, "USD")); |
713 | 717 | } |
714 | 718 |
|
| 719 | + @Test |
| 720 | + public void makeBidsShouldReturnResultForNativeBidsWithExpectedFields() throws JsonProcessingException { |
| 721 | + // given |
| 722 | + |
| 723 | + final String nativeRequestString = |
| 724 | + "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":80}}"; |
| 725 | + final String nativeResponseString = |
| 726 | + "\"native\"{\"assets\": [{\"id\": 1, \"title\": {\"text\": \"Native test (Title)\"}}], " |
| 727 | + + "\"link\": {\"url\": \"https://www.epsilon.com/\"}, " |
| 728 | + + "\"imptrackers\":[\"https://iad-usadmm.dotomi.com/event\"],\"jstracker\":\"\"}"; |
| 729 | + final BidRequest bidRequest = BidRequest.builder() |
| 730 | + .id("native-test") |
| 731 | + .imp(singletonList(Imp.builder() |
| 732 | + .id("impid-0") |
| 733 | + .xNative(Native.builder() |
| 734 | + .request(nativeRequestString) |
| 735 | + .ver("1.2") |
| 736 | + .build()) |
| 737 | + .build())) |
| 738 | + .build(); |
| 739 | + |
| 740 | + final BidderCall<BidRequest> httpCall = givenHttpCall(bidRequest, |
| 741 | + mapper.writeValueAsString(BidResponse.builder() |
| 742 | + .seatbid(singletonList(SeatBid.builder() |
| 743 | + .bid(singletonList(Bid.builder() |
| 744 | + .price(BigDecimal.ONE) |
| 745 | + .impid("impid-0") |
| 746 | + .adm(nativeResponseString) |
| 747 | + .mtype(4) |
| 748 | + .cat(singletonList("IAB3")) |
| 749 | + .build())) |
| 750 | + .build())) |
| 751 | + .cur("USD") |
| 752 | + .ext(ExtBidResponse.builder().build()) |
| 753 | + .build())); |
| 754 | + |
| 755 | + // when |
| 756 | + final CompositeBidderResponse result = target.makeBidderResponse(httpCall, bidRequest); |
| 757 | + |
| 758 | + // then |
| 759 | + assertThat(result.getErrors()).isEmpty(); |
| 760 | + assertThat(result.getBids()).hasSize(1) |
| 761 | + .containsOnly(BidderBid.of( |
| 762 | + Bid.builder() |
| 763 | + .impid("impid-0") |
| 764 | + .price(BigDecimal.ONE) |
| 765 | + .adm(nativeResponseString) |
| 766 | + .cat(singletonList("IAB3")) |
| 767 | + .mtype(4) |
| 768 | + .build(), |
| 769 | + BidType.xNative, "USD")); |
| 770 | + } |
| 771 | + |
715 | 772 | private static BidRequest givenBidRequest( |
716 | 773 | Function<BidRequest.BidRequestBuilder, BidRequest.BidRequestBuilder> bidRequestCustomizer, |
717 | 774 | Function<Imp.ImpBuilder, Imp.ImpBuilder> impCustomizer, |
|
0 commit comments