Skip to content

Commit b49ced1

Browse files
author
Samuel Alejandro Maldonado Garcia
committed
fixes
1 parent c395bcb commit b49ced1

File tree

2 files changed

+122
-66
lines changed

2 files changed

+122
-66
lines changed

src/main/java/org/prebid/server/bidder/alvads/AlvadsBidder.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.iab.openrtb.request.Video;
99
import com.iab.openrtb.response.Bid;
1010
import com.iab.openrtb.response.BidResponse;
11-
import com.iab.openrtb.response.SeatBid;
1211
import io.vertx.core.http.HttpMethod;
1312
import org.apache.commons.collections4.CollectionUtils;
1413
import org.prebid.server.bidder.Bidder;
@@ -30,7 +29,6 @@
3029

3130
import java.net.URI;
3231
import java.util.ArrayList;
33-
import java.util.Collection;
3432
import java.util.Collections;
3533
import java.util.HashMap;
3634
import java.util.List;
@@ -99,7 +97,6 @@ private HttpRequest<AlvadsRequestOrtb> makeHttpRequest(BidRequest request, Imp i
9997
.build();
10098
}
10199

102-
103100
private String makeUrl(AlvadsImpExt impExt) {
104101
final String resolvedUrl = impExt.getEndpointUrl() != null ? impExt.getEndpointUrl() : endpointUrl;
105102
try {

src/test/java/org/prebid/server/bidder/alvads/AlvadsBidderTest.java

Lines changed: 122 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.databind.node.ObjectNode;
55
import com.iab.openrtb.request.Banner;
66
import com.iab.openrtb.request.BidRequest;
7+
import com.iab.openrtb.request.Device;
78
import com.iab.openrtb.request.Imp;
89
import com.iab.openrtb.request.Site;
910
import com.iab.openrtb.response.Bid;
@@ -42,37 +43,109 @@ void creationShouldFailOnInvalidEndpointUrl() {
4243

4344
@Test
4445
void makeHttpRequestsShouldReturnErrorForInvalidImpExt() {
45-
46-
final ObjectNode extNode = new ObjectMapper().createObjectNode();
46+
// given
47+
final ObjectNode extNode = jacksonMapper.mapper().createObjectNode();
4748
extNode.put("bidder", "invalid");
4849

4950
final BidRequest bidRequest = BidRequest.builder()
5051
.imp(List.of(Imp.builder().id("1").ext(extNode).build()))
5152
.build();
5253

54+
// when
5355
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
5456

57+
// then
5558
assertThat(result.getErrors()).isNotEmpty();
5659
assertThat(result.getErrors().get(0).getMessage())
5760
.contains("Missing or invalid bidder ext");
5861
}
5962

6063
@Test
61-
void makeHttpRequestsShouldBuildValidHttpRequests() {
62-
final ObjectMapper mapper = new ObjectMapper();
64+
void makeHttpRequestsShouldBuildValidHttpRequestsUrl() {
65+
// given
66+
final BidRequest bidRequest = createBidRequestWithBannerAndVideo();
67+
68+
// when
69+
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
70+
71+
// then
72+
assertThat(result.getErrors()).isEmpty();
73+
result.getValue().forEach(req -> assertThat(req.getUri()).isEqualTo(ENDPOINT_URL));
74+
}
75+
76+
@Test
77+
void makeHttpRequestsShouldBuildValidHttpRequestsHeaders() {
78+
// given
79+
final BidRequest bidRequest = createBidRequestWithBannerAndVideo();
80+
81+
// when
82+
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
83+
84+
// then
85+
result.getValue().forEach(req -> assertThat(req.getHeaders()).isNotEmpty());
86+
}
87+
88+
@Test
89+
void makeHttpRequestsShouldBuildValidHttpRequestsImpIds() {
90+
// given
91+
final BidRequest bidRequest = createBidRequestWithBannerAndVideo();
92+
93+
// when
94+
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
95+
96+
// then
97+
assertThat(result.getValue().get(0).getImpIds()).contains("imp-1");
98+
assertThat(result.getValue().get(1).getImpIds()).contains("imp-2");
99+
}
100+
101+
@Test
102+
void makeHttpRequestsShouldBuildValidHttpRequestsImpContent() {
103+
// given
104+
final BidRequest bidRequest = createBidRequestWithBannerAndVideo();
105+
106+
// when
107+
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
108+
109+
// then
110+
final HttpRequest<AlvadsRequestOrtb> req1 = result.getValue().get(0);
111+
final HttpRequest<AlvadsRequestOrtb> req2 = result.getValue().get(1);
112+
113+
assertThat(req1.getPayload().getImp().get(0).getBanner()).isNotNull();
114+
assertThat(req1.getPayload().getImp().get(0).getVideo()).isNull();
115+
116+
assertThat(req2.getPayload().getImp().get(0).getVideo()).isNotNull();
117+
assertThat(req2.getPayload().getImp().get(0).getBanner()).isNull();
118+
}
119+
120+
@Test
121+
void makeHttpRequestsShouldBuildValidHttpRequestsSiteAndOtherFields() {
122+
// given
123+
final BidRequest bidRequest = createBidRequestWithBannerAndVideo();
124+
125+
// when
126+
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
127+
128+
// then
129+
assertThat(result.getValue().get(0).getPayload().getId()).isEqualTo("req-123");
130+
assertThat(result.getValue().get(1).getPayload().getId()).isEqualTo("req-123");
63131

64-
final ObjectNode bidderNode1 = mapper.createObjectNode();
132+
assertThat(result.getValue().get(0).getPayload().getSite()).isNotNull();
133+
assertThat(result.getValue().get(1).getPayload().getSite()).isNotNull();
134+
}
135+
136+
private static BidRequest createBidRequestWithBannerAndVideo() {
137+
final ObjectNode bidderNode1 = new ObjectMapper().createObjectNode();
65138
bidderNode1.put("publisherUniqueId", "pub-1");
66-
bidderNode1.put("endPointUrl", ENDPOINT_URL);
139+
bidderNode1.put("endpointUrl", ENDPOINT_URL);
67140

68-
final ObjectNode impExtNode1 = mapper.createObjectNode();
141+
final ObjectNode impExtNode1 = new ObjectMapper().createObjectNode();
69142
impExtNode1.set("bidder", bidderNode1);
70143

71-
final ObjectNode bidderNode2 = mapper.createObjectNode();
144+
final ObjectNode bidderNode2 = new ObjectMapper().createObjectNode();
72145
bidderNode2.put("publisherUniqueId", "pub-2");
73-
bidderNode2.put("endPointUrl", ENDPOINT_URL);
146+
bidderNode2.put("endpointUrl", ENDPOINT_URL);
74147

75-
final ObjectNode impExtNode2 = mapper.createObjectNode();
148+
final ObjectNode impExtNode2 = new ObjectMapper().createObjectNode();
76149
impExtNode2.set("bidder", bidderNode2);
77150

78151
final Imp imp1 = Imp.builder()
@@ -87,46 +160,20 @@ void makeHttpRequestsShouldBuildValidHttpRequests() {
87160
.ext(impExtNode2)
88161
.build();
89162

90-
final Site site = Site.builder()
91-
.page("https://example.com")
92-
.build();
163+
final Site site = Site.builder().page("https://example.com").build();
93164

94-
final BidRequest bidRequest = BidRequest.builder()
165+
return BidRequest.builder()
95166
.id("req-123")
96167
.imp(List.of(imp1, imp2))
97168
.site(site)
98-
.device(com.iab.openrtb.request.Device.builder().build())
169+
.device(Device.builder().build())
99170
.build();
100-
101-
final Result<List<HttpRequest<AlvadsRequestOrtb>>> result = target.makeHttpRequests(bidRequest);
102-
103-
assertThat(result.getErrors()).isEmpty();
104-
assertThat(result.getValue()).hasSize(2);
105-
106-
final HttpRequest<AlvadsRequestOrtb> request1 = result.getValue().get(0);
107-
final HttpRequest<AlvadsRequestOrtb> request2 = result.getValue().get(1);
108-
109-
assertThat(request1.getUri()).isEqualTo(ENDPOINT_URL);
110-
assertThat(request2.getUri()).isEqualTo(ENDPOINT_URL);
111-
112-
assertThat(request1.getHeaders()).isNotEmpty();
113-
assertThat(request2.getHeaders()).isNotEmpty();
114-
115-
assertThat(request1.getImpIds()).contains("imp-1");
116-
assertThat(request2.getImpIds()).contains("imp-2");
117-
118-
assertThat(request1.getPayload().getImp().get(0).getBanner()).isNotNull();
119-
assertThat(request1.getPayload().getImp().get(0).getVideo()).isNull();
120-
121-
assertThat(request2.getPayload().getImp().get(0).getVideo()).isNotNull();
122-
assertThat(request2.getPayload().getImp().get(0).getBanner()).isNull();
123-
124-
assertThat(request1.getPayload().getId()).isEqualTo("req-123");
125-
assertThat(request2.getPayload().getId()).isEqualTo("req-123");
126171
}
127172

173+
// ---- makeBids tests ----
128174
@Test
129175
void makeBidsShouldReturnEmptyListForEmptyResponse() {
176+
// given
130177
final BidResponse bidResponse = BidResponse.builder().build();
131178
final HttpResponse response = HttpResponse.of(
132179
200,
@@ -140,43 +187,54 @@ void makeBidsShouldReturnEmptyListForEmptyResponse() {
140187
null
141188
);
142189

190+
// when
143191
final Result<List<BidderBid>> result = target.makeBids(call, BidRequest.builder().build());
144192

193+
// then
145194
assertThat(result.getValue()).isEmpty();
146195
}
147196

148197
@Test
149-
void makeBidsShouldReturnBidderBids() {
150-
// GIVEN
151-
final String impId = "AE_AD_1748977459403";
152-
final String publisherId = "D7DACCE3-C23D-4AB9-8FE6-9FF41BF32F8F";
198+
void makeBidsShouldReturnBidderBidsWithFullFields() {
199+
// given
200+
final Imp bannerImp = createImp("imp-banner", "pub-1", 300, 250);
201+
final Imp videoImp = createImp("imp-video", "pub-2", 640, 480);
202+
203+
final BidRequest bidRequest = createBidRequest(List.of(bannerImp, videoImp));
153204

154-
final Bid bid = createBid("bid1", impId, 1);
155-
final SeatBid seatBid = createSeatBid(bid);
205+
final Bid bannerBid = createBid("bid-banner", "imp-banner", 1.5);
206+
final Bid videoBid = createBid("bid-video", "imp-video", 2.5);
207+
208+
final SeatBid seatBid = createSeatBid(bannerBid, videoBid);
156209
final BidResponse bidResponse = createBidResponse(List.of(seatBid), "USD");
157210

158-
final HttpResponse response = HttpResponse.of(
211+
final HttpResponse httpResponse = HttpResponse.of(
159212
200,
160213
MultiMap.caseInsensitiveMultiMap(),
161214
jacksonMapper.encodeToString(bidResponse)
162215
);
163216

164-
final Imp imp = createImp(impId, publisherId, 320, 100);
165-
final BidRequest bidRequest = createBidRequest(List.of(imp));
166-
167-
final AlvadsRequestOrtb alvadsRequest = createAlvadsRequest(impId, 320, 100);
168-
final HttpRequest<AlvadsRequestOrtb> httpRequest = HttpRequest.<AlvadsRequestOrtb>builder()
169-
.payload(alvadsRequest)
217+
final HttpRequest<AlvadsRequestOrtb> request = HttpRequest.<AlvadsRequestOrtb>builder()
218+
.payload(createAlvadsRequest("imp-banner", 300, 250))
170219
.build();
171220

172-
final BidderCall<AlvadsRequestOrtb> call = BidderCall.succeededHttp(httpRequest, response, null);
173-
174-
// WHEN
175-
final Result<List<BidderBid>> result = target.makeBids(call, bidRequest);
221+
// when
222+
final Result<List<BidderBid>> result = target.makeBids(
223+
BidderCall.succeededHttp(request, httpResponse, null),
224+
bidRequest
225+
);
176226

177-
// THEN
178-
assertThat(result.getValue()).hasSize(1);
179-
assertThat(result.getValue().get(0).getBid().getId()).isEqualTo("bid1");
227+
// then - banner bid
228+
final BidderBid bannerBidderBid = result.getValue().stream()
229+
.filter(b -> b.getBid().getImpid().equals("imp-banner"))
230+
.findFirst()
231+
.orElseThrow();
232+
233+
// then - video bid
234+
final BidderBid videoBidderBid = result.getValue().stream()
235+
.filter(b -> b.getBid().getImpid().equals("imp-video"))
236+
.findFirst()
237+
.orElseThrow();
180238
}
181239

182240
private static Bid createBid(String id, String impId, double price) {
@@ -208,6 +266,7 @@ private static Imp createImp(String id, String publisherId, int width, int heigh
208266
return Imp.builder()
209267
.id(id)
210268
.banner(Banner.builder().w(width).h(height).build())
269+
.video(height > 250 ? com.iab.openrtb.request.Video.builder().w(width).h(height).build() : null)
211270
.ext(extNode)
212271
.build();
213272
}
@@ -222,12 +281,12 @@ private static BidRequest createBidRequest(List<Imp> imps) {
222281
private static AlvadsRequestOrtb createAlvadsRequest(String impId, int width, int height) {
223282
final AlvaAdsImp alvaImp = AlvaAdsImp.builder()
224283
.id(impId)
225-
.banner(Map.of("w", width, "h", height))
284+
.banner(height <= 250 ? Map.of("w", width, "h", height) : null)
285+
.video(height > 250 ? Map.of("w", width, "h", height) : null)
226286
.build();
227287

228288
return AlvadsRequestOrtb.builder()
229289
.imp(List.of(alvaImp))
230290
.build();
231291
}
232-
233292
}

0 commit comments

Comments
 (0)