Skip to content

Commit ce94d8a

Browse files
authored
Test: hard-alias schema (prebid#3759)
1 parent a3475ba commit ce94d8a

File tree

4 files changed

+86
-14
lines changed

4 files changed

+86
-14
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.prebid.server.functional.model.request.auction
2+
3+
class Adrino {
4+
5+
Integer hash
6+
}

src/test/groovy/org/prebid/server/functional/model/request/auction/Bidder.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class Bidder {
2424
Ix ix
2525
@JsonProperty("openxalias")
2626
Openx openxAlias
27+
Adrino adrino
28+
Generic nativo
2729

2830
static Bidder getDefaultBidder() {
2931
new Bidder().tap {

src/test/groovy/org/prebid/server/functional/testcontainers/PbsConfig.groovy

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,25 @@ LIMIT 1
8989
}
9090

9191
static Map<String, String> getMySqlConfig(MySQLContainer mysql = Dependencies.mysqlContainer) {
92-
["settings.database.type" : "mysql",
93-
"settings.database.host" : mysql.getNetworkAliases().get(0),
94-
"settings.database.port" : mysql.exposedPorts.get(0) as String,
95-
"settings.database.dbname" : mysql.databaseName,
96-
"settings.database.user" : mysql.username,
97-
"settings.database.password" : mysql.password,
98-
"settings.database.pool-size" : "2", // setting 2 here to leave some slack for the PBS
92+
["settings.database.type" : "mysql",
93+
"settings.database.host" : mysql.getNetworkAliases().get(0),
94+
"settings.database.port" : mysql.exposedPorts.get(0) as String,
95+
"settings.database.dbname" : mysql.databaseName,
96+
"settings.database.user" : mysql.username,
97+
"settings.database.password" : mysql.password,
98+
"settings.database.pool-size" : "2", // setting 2 here to leave some slack for the PBS
9999
"settings.database.idle-connection-timeout": "300"
100100
].asImmutable()
101101
}
102102

103103
static Map<String, String> getPostgreSqlConfig(PostgreSQLContainer postgres = Dependencies.postgresqlContainer) {
104-
["settings.database.type" : "postgres",
105-
"settings.database.host" : postgres.getNetworkAliases().get(0),
106-
"settings.database.port" : postgres.exposedPorts.get(0) as String,
107-
"settings.database.dbname" : postgres.databaseName,
108-
"settings.database.user" : postgres.username,
109-
"settings.database.password" : postgres.password,
110-
"settings.database.pool-size" : "2", // setting 2 here to leave some slack for the PBS
104+
["settings.database.type" : "postgres",
105+
"settings.database.host" : postgres.getNetworkAliases().get(0),
106+
"settings.database.port" : postgres.exposedPorts.get(0) as String,
107+
"settings.database.dbname" : postgres.databaseName,
108+
"settings.database.user" : postgres.username,
109+
"settings.database.password" : postgres.password,
110+
"settings.database.pool-size" : "2", // setting 2 here to leave some slack for the PBS
111111
"settings.database.idle-connection-timeout": "300"
112112
].asImmutable()
113113
}
@@ -119,6 +119,7 @@ LIMIT 1
119119
// due to a config validation we'll need to circumvent all future aliases this way
120120
static Map<String, String> getBidderAliasConfig() {
121121
["adapters.generic.aliases.cwire.meta-info.site-media-types" : "",
122+
"adapters.generic.aliases.cwire.meta-info.app-media-types" : "",
122123
"adapters.generic.aliases.blue.meta-info.app-media-types" : "",
123124
"adapters.generic.aliases.blue.meta-info.site-media-types" : "",
124125
"adapters.generic.aliases.adsinteractive.meta-info.app-media-types" : "",

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

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import org.prebid.server.functional.model.db.Account
66
import org.prebid.server.functional.model.db.StoredImp
77
import org.prebid.server.functional.model.db.StoredRequest
88
import org.prebid.server.functional.model.request.amp.AmpRequest
9+
import org.prebid.server.functional.model.request.auction.Adrino
910
import org.prebid.server.functional.model.request.auction.AuctionEnvironment
1011
import org.prebid.server.functional.model.request.auction.Banner
1112
import org.prebid.server.functional.model.request.auction.BidRequest
@@ -1298,4 +1299,66 @@ class BidderParamsSpec extends BaseSpec {
12981299
assert bidderRequest.imp[0].ext.auctionEnvironment == extAuctionEnv
12991300
assert bidderRequest.imp[0].ext.interestGroupAuctionSupports.auctionEnvironment == extIgsAuctionEnv
13001301
}
1302+
1303+
def "PBS should reject alias bidders when bidder params from request doesn't satisfy own json-schema"() {
1304+
given: "Default bid request"
1305+
def bidRequest = BidRequest.defaultBidRequest.tap {
1306+
imp[0].ext.prebid.bidder.tap {
1307+
it.generic.exampleProperty = PBSUtils.randomNumber
1308+
//Adrino hard coded bidder alias in generic.yaml
1309+
it.adrino = new Adrino(hash: PBSUtils.randomNumber)
1310+
}
1311+
}
1312+
1313+
when: "PBS processes auction request"
1314+
def response = defaultPbsService.sendAuctionRequest(bidRequest)
1315+
1316+
then: "Bidder should be dropped"
1317+
assert response.ext?.warnings[PREBID]*.code == [999, 999, 999]
1318+
assert response.ext?.warnings[PREBID]*.message ==
1319+
["WARNING: request.imp[0].ext.prebid.bidder.generic was dropped with a reason: " +
1320+
"request.imp[0].ext.prebid.bidder.generic failed validation.\n" +
1321+
"\$.exampleProperty: integer found, string expected",
1322+
"WARNING: request.imp[0].ext.prebid.bidder.adrino was dropped with a reason: " +
1323+
"request.imp[0].ext.prebid.bidder.adrino failed validation.\n" +
1324+
"\$.hash: integer found, string expected",
1325+
"WARNING: request.imp[0].ext must contain at least one valid bidder"]
1326+
1327+
and: "PBS should not call bidder"
1328+
assert bidder.getRequestCount(bidRequest.id) == 0
1329+
1330+
and: "targeting should be empty"
1331+
assert response.seatbid.isEmpty()
1332+
}
1333+
1334+
def "PBS should reject alias bidders when bidder params from request doesn't satisfy aliased json-schema"() {
1335+
given: "Default basic generic BidRequest"
1336+
def bidRequest = BidRequest.defaultBidRequest.tap {
1337+
imp[0].ext.prebid.bidder.tap {
1338+
it.generic.exampleProperty = PBSUtils.randomNumber
1339+
//Nativo hard coded bidder alias in generic.yaml
1340+
it.nativo = new Generic(exampleProperty: PBSUtils.randomNumber)
1341+
}
1342+
}
1343+
1344+
when: "PBS processes auction request"
1345+
def response = defaultPbsService.sendAuctionRequest(bidRequest)
1346+
1347+
then: "Bidder should be dropped"
1348+
assert response.ext?.warnings[PREBID]*.code == [999, 999, 999]
1349+
assert response.ext?.warnings[PREBID]*.message ==
1350+
["WARNING: request.imp[0].ext.prebid.bidder.generic was dropped with a reason: " +
1351+
"request.imp[0].ext.prebid.bidder.generic failed validation.\n" +
1352+
"\$.exampleProperty: integer found, string expected",
1353+
"WARNING: request.imp[0].ext.prebid.bidder.nativo was dropped with a reason: " +
1354+
"request.imp[0].ext.prebid.bidder.nativo failed validation.\n" +
1355+
"\$.exampleProperty: integer found, string expected",
1356+
"WARNING: request.imp[0].ext must contain at least one valid bidder"]
1357+
1358+
and: "PBS should not call bidder"
1359+
assert bidder.getRequestCount(bidRequest.id) == 0
1360+
1361+
and: "targeting should be empty"
1362+
assert response.seatbid.isEmpty()
1363+
}
13011364
}

0 commit comments

Comments
 (0)