Skip to content

Commit c8b100d

Browse files
authored
Tests: Fix Bidder Aliases Validation (#3706)
* Tests: Fix Bidder Aliases Validation
1 parent d188ada commit c8b100d

File tree

1 file changed

+67
-2
lines changed

1 file changed

+67
-2
lines changed

src/test/groovy/org/prebid/server/functional/tests/AliasSpec.groovy

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,42 @@
11
package org.prebid.server.functional.tests
22

3+
import org.prebid.server.functional.model.bidder.AppNexus
34
import org.prebid.server.functional.model.bidder.Generic
45
import org.prebid.server.functional.model.bidder.Openx
56
import org.prebid.server.functional.model.request.auction.BidRequest
67
import org.prebid.server.functional.service.PrebidServerException
7-
import org.prebid.server.functional.testcontainers.Dependencies
88
import org.prebid.server.functional.util.PBSUtils
9+
import spock.lang.Shared
910

1011
import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST
1112
import static org.prebid.server.functional.model.bidder.BidderName.ALIAS
13+
import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS
1214
import static org.prebid.server.functional.model.bidder.BidderName.BOGUS
1315
import static org.prebid.server.functional.model.bidder.BidderName.GENERIC
1416
import static org.prebid.server.functional.model.bidder.BidderName.GENER_X
1517
import static org.prebid.server.functional.model.bidder.BidderName.OPENX
1618
import static org.prebid.server.functional.model.bidder.CompressionType.GZIP
19+
import static org.prebid.server.functional.model.response.auction.ErrorType.PREBID
1720
import static org.prebid.server.functional.testcontainers.Dependencies.networkServiceContainer
1821
import static org.prebid.server.functional.util.HttpUtil.CONTENT_ENCODING_HEADER
1922

2023
class AliasSpec extends BaseSpec {
2124

25+
private static final Map<String, String> ADDITIONAL_BIDDERS_CONFIG = ["adapters.${OPENX.value}.enabled" : "true",
26+
"adapters.${OPENX.value}.endpoint" : "$networkServiceContainer.rootUri/${OPENX.value}/auction".toString(),
27+
"adapters.${APPNEXUS.value}.enabled" : "true",
28+
"adapters.${APPNEXUS.value}.endpoint": "$networkServiceContainer.rootUri/${APPNEXUS.value}/auction".toString()]
29+
@Shared
30+
private static pbsServiceWithAdditionalBidders
31+
32+
def setupSpec() {
33+
pbsServiceWithAdditionalBidders = pbsServiceFactory.getService(ADDITIONAL_BIDDERS_CONFIG + GENERIC_ALIAS_CONFIG)
34+
}
35+
36+
def cleanupSpec() {
37+
pbsServiceFactory.removeContainer(ADDITIONAL_BIDDERS_CONFIG + GENERIC_ALIAS_CONFIG)
38+
}
39+
2240
def "PBS should be able to take alias from request"() {
2341
given: "Default bid request with alias"
2442
def bidRequest = BidRequest.defaultBidRequest.tap {
@@ -142,7 +160,7 @@ class AliasSpec extends BaseSpec {
142160
}
143161

144162
when: "PBS processes auction request"
145-
prebidServerService.sendAuctionRequest(bidRequest)
163+
pbsServiceWithAdditionalBidders.sendAuctionRequest(bidRequest)
146164

147165
then: "Bidder request should contain request per-alies"
148166
def bidderRequests = bidder.getBidderRequests(bidRequest.id)
@@ -209,6 +227,53 @@ class AliasSpec extends BaseSpec {
209227
pbsServiceFactory.removeContainer(pbsConfig)
210228
}
211229

230+
def "PBS should validate request as alias request and without any warnings when required properties in place"() {
231+
given: "Default bid request with openx and alias bidder"
232+
def bidRequest = BidRequest.defaultBidRequest.tap {
233+
imp[0].ext.prebid.bidder.appNexus = AppNexus.default
234+
imp[0].ext.prebid.bidder.generic = null
235+
ext.prebid.aliases = [(APPNEXUS.value): OPENX]
236+
}
237+
238+
when: "PBS processes auction request"
239+
def bidResponse = pbsServiceWithAdditionalBidders.sendAuctionRequest(bidRequest)
240+
241+
then: "PBS contain http call for specific bidder"
242+
def responseDebug = bidResponse.ext.debug
243+
assert responseDebug.httpcalls.size() == 1
244+
assert responseDebug.httpcalls[APPNEXUS.value]*.uri == ["$networkServiceContainer.rootUri/${APPNEXUS.value}/auction"]
245+
246+
and: "PBS should not contain any warnings"
247+
assert !bidResponse.ext.warnings
248+
}
249+
250+
def "PBS should validate request as alias request and emit proper warnings when validation fails for request"() {
251+
given: "Default bid request with openx and alias bidder"
252+
def bidRequest = BidRequest.defaultBidRequest.tap {
253+
imp[0].ext.prebid.bidder.appNexus = new AppNexus()
254+
imp[0].ext.prebid.bidder.generic = null
255+
ext.prebid.aliases = [(APPNEXUS.value): OPENX]
256+
}
257+
258+
when: "PBS processes auction request"
259+
def bidResponse = pbsServiceWithAdditionalBidders.sendAuctionRequest(bidRequest)
260+
261+
then: "PBS shouldn't contain http calls"
262+
assert !bidResponse.ext.debug.httpcalls
263+
264+
and: "Bid response should contain warning"
265+
assert bidResponse.ext.warnings[PREBID]?.code == [999, 999]
266+
assert bidResponse.ext?.warnings[PREBID]*.message ==
267+
["WARNING: request.imp[0].ext.prebid.bidder.${APPNEXUS.value} was dropped with a reason: " +
268+
"request.imp[0].ext.prebid.bidder.${APPNEXUS.value} failed validation.\n" +
269+
"\$.placement_id: is missing but it is required\n" +
270+
"\$.member: is missing but it is required\n" +
271+
"\$.placementId: is missing but it is required\n" +
272+
"\$.inv_code: is missing but it is required\n" +
273+
"\$.invCode: is missing but it is required",
274+
"WARNING: request.imp[0].ext must contain at least one valid bidder"]
275+
}
276+
212277
def "PBS should invoke as aliases when alias is unknown and core bidder is specified"() {
213278
given: "Default bid request with generic and alias bidder"
214279
def bidRequest = BidRequest.defaultBidRequest.tap {

0 commit comments

Comments
 (0)