Skip to content

Commit c32bcc2

Browse files
committed
Update: Add coverage for bidder removal fields
1 parent 1233b6c commit c32bcc2

14 files changed

+120
-96
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.prebid.server.functional.model.request.auction
22

3+
import groovy.transform.EqualsAndHashCode
34
import groovy.transform.ToString
45

56
@ToString(includeNames = true, ignoreNulls = true)
7+
@EqualsAndHashCode
68
class AppPrebid {
79

810
String source

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package org.prebid.server.functional.model.request.auction
22

33
import com.fasterxml.jackson.databind.PropertyNamingStrategies
44
import com.fasterxml.jackson.databind.annotation.JsonNaming
5+
import groovy.transform.EqualsAndHashCode
56
import groovy.transform.ToString
67
import org.prebid.server.functional.model.bidder.BidderName
78

89
@ToString(includeNames = true, ignoreNulls = false)
910
@JsonNaming(PropertyNamingStrategies.LowerCaseStrategy)
11+
@EqualsAndHashCode
1012
class MultiBid {
1113

1214
BidderName bidder

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ class Prebid {
5353
@JsonProperty("kvps")
5454
Map<String, String> keyValuePairs
5555
Boolean supportDeals
56+
String integration
5657
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ class AuctionSpec extends BaseSpec {
139139
then: "Bidder request should contain buyeruid from the user.ext.prebid.buyeruids"
140140
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
141141
assert bidderRequest?.user?.buyeruid == buyeruid
142+
143+
and: "Bidder request shouldn't contain user.ext.prebid.buyeruids"
144+
assert !bidderRequest.user.ext.prebid.buyeruids
142145
}
143146

144147
def "PBS shouldn't populate bidder request buyeruid from buyeruids when buyeruids without appropriate bidder present in request"() {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ class BidAdjustmentSpec extends BaseSpec {
9696
assert response?.seatbid?.first?.bid?.first?.price == bidResponse.seatbid.first.bid.first.price *
9797
bidAdjustmentFactor
9898

99+
and: "Bidder request shouldn't contain bid adjustment factors"
100+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
101+
assert !bidderRequest.ext.prebid.bidAdjustmentFactors
102+
99103
where:
100104
bidAdjustmentFactor << [0.9, 1.1]
101105
}

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

Lines changed: 70 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ package org.prebid.server.functional.tests
33
import org.prebid.server.functional.model.bidder.BidderName
44
import org.prebid.server.functional.model.bidder.Generic
55
import org.prebid.server.functional.model.db.StoredRequest
6-
import org.prebid.server.functional.model.mock.services.currencyconversion.CurrencyConversionRatesResponse
76
import org.prebid.server.functional.model.request.Channel
87
import org.prebid.server.functional.model.request.amp.AmpRequest
98
import org.prebid.server.functional.model.request.auction.AdServerTargeting
109
import org.prebid.server.functional.model.request.auction.Amp
10+
import org.prebid.server.functional.model.request.auction.AppExt
11+
import org.prebid.server.functional.model.request.auction.AppPrebid
1112
import org.prebid.server.functional.model.request.auction.BidAdjustmentFactors
1213
import org.prebid.server.functional.model.request.auction.BidAdjustmentMediaType
1314
import org.prebid.server.functional.model.request.auction.BidRequest
1415
import org.prebid.server.functional.model.request.auction.BidderConfig
1516
import org.prebid.server.functional.model.request.auction.BidderConfigOrtb
1617
import org.prebid.server.functional.model.request.auction.ConsentedProvidersSettings
17-
import org.prebid.server.functional.model.request.auction.DebugCondition
1818
import org.prebid.server.functional.model.request.auction.Device
1919
import org.prebid.server.functional.model.request.auction.DeviceExt
2020
import org.prebid.server.functional.model.request.auction.EidPermission
@@ -33,7 +33,6 @@ import org.prebid.server.functional.model.request.auction.Sdk
3333
import org.prebid.server.functional.model.request.auction.Site
3434
import org.prebid.server.functional.model.request.auction.SiteExt
3535
import org.prebid.server.functional.model.request.auction.SiteExtData
36-
import org.prebid.server.functional.model.request.auction.TraceLevel
3736
import org.prebid.server.functional.model.request.auction.User
3837
import org.prebid.server.functional.model.request.auction.UserExt
3938
import org.prebid.server.functional.model.request.auction.UserExtPrebid
@@ -43,23 +42,23 @@ import org.prebid.server.functional.util.PBSUtils
4342
import spock.lang.IgnoreRest
4443

4544
import static org.prebid.server.functional.model.ChannelType.WEB
46-
import static org.prebid.server.functional.model.bidder.BidderName.ALIAS
47-
import static org.prebid.server.functional.model.bidder.BidderName.GENERIC
48-
import static org.prebid.server.functional.model.bidder.BidderName.UNKNOWN
45+
46+
import static org.prebid.server.functional.model.bidder.BidderName.RUBICON
4947
import static org.prebid.server.functional.model.mock.services.currencyconversion.CurrencyConversionRatesResponse.defaultConversionRates
5048
import static org.prebid.server.functional.model.request.auction.DebugCondition.ENABLED
51-
import static org.prebid.server.functional.model.request.auction.DeviceExt.Atts.*
49+
import static org.prebid.server.functional.model.request.auction.DistributionChannel.APP
5250
import static org.prebid.server.functional.model.request.auction.PaaFormat.ORIGINAL
5351
import static org.prebid.server.functional.model.request.auction.TraceLevel.BASIC
5452
import static org.prebid.server.functional.model.response.auction.ErrorType.ALIAS
53+
import static org.prebid.server.functional.model.response.auction.ErrorType.GENERIC
5554

5655
class BidderFieldDisplayBehaviorSpec extends BaseSpec {
5756

5857
//todo:ext.prebid.returnallbidstatus (boolean)
5958
// Never needed inside the adapter code
6059
// Exposes nothing because it’s a boolean
6160

62-
def "PBS shouldn't send returnallbidstatus to bidder request"() {
61+
def "PBS shouldn't pass ext.prebid.returnAllBidStatus to bidder request"() {
6362
given: "Default basic bid request"
6463
def bidRequest = BidRequest.defaultBidRequest.tap {
6564
ext.prebid.returnAllBidStatus = true
@@ -80,8 +79,8 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
8079
//todo: ext.prebid.aliasgvlids (map)
8180
// Never needed inside the adapter code
8281

83-
@IgnoreRest
84-
def "PBS shouldn't pass aliasgvlids and aliases to bidder request"() {
82+
83+
def "PBS shouldn't pass aliasGvlIds to bidder request when aliasGvlIds specified"() {
8584
given: "Default basic bid request"
8685
def bidRequest = BidRequest.defaultBidRequest.tap {
8786
imp[0].ext.prebid.bidder.alias = new Generic()
@@ -109,29 +108,6 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
109108
// The value is taken from request/account
110109
// The rules of other bidders if any are exposed.
111110

112-
def "PBS shouldn't send bid adjustment media type to bidder request"() {
113-
given: "Default basic bid request"
114-
def bidRequest = BidRequest.defaultBidRequest.tap {
115-
ext.prebid.tap {
116-
bidAdjustmentFactors = new BidAdjustmentFactors().tap {
117-
it.adjustments = [(BidderName.GENERIC): BigDecimal.ONE]
118-
it.mediaTypes = [(BidAdjustmentMediaType.BANNER): [(BidderName.GENERIC): BigDecimal.ONE]]
119-
}
120-
}
121-
}
122-
123-
and: "Default bid response"
124-
def bidResponse = BidResponse.getDefaultBidResponse(bidRequest)
125-
bidder.setResponse(bidRequest.id, bidResponse)
126-
127-
when: "PBS processes auction request"
128-
defaultPbsService.sendAuctionRequest(bidRequest)
129-
130-
then: "Bidder request shouldn't contain bid adjustment factors"
131-
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
132-
assert !bidderRequest.ext.prebid.bidAdjustmentFactors
133-
}
134-
135111
//todo: ext.prebid.adservertargeting (object)
136112
// Never needed inside the adapter code
137113

@@ -187,7 +163,7 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
187163
// Never needed inside the adapter code
188164
// Not sure it exposes something because it’s only about ttlseconds integers and some booleans
189165

190-
@IgnoreRest
166+
191167
def "PBS shouldn't pass ext.prebid.cache to bidder request"() {
192168
given: "Default basic bid request"
193169
def bidRequest = BidRequest.defaultBidRequest.tap {
@@ -231,7 +207,7 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
231207

232208
//todo: ext.prebid.currency.rates (object)
233209

234-
@IgnoreRest
210+
235211
def "PBS should pass ext.prebid.currency.rates to bidder request"() {
236212
given: "Default basic bid request"
237213
def bidRequest = BidRequest.defaultBidRequest.tap {
@@ -252,14 +228,13 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
252228
assert bidderRequest.ext.prebid.currency == bidRequest.ext.prebid.currency
253229
}
254230

255-
//todo: ext.prebid.data.bidder (object)
231+
//todo: ext.prebid.data.{bidder,eidpermissions} (object)
256232

257-
@IgnoreRest
258233
def "PBS shouldn't pass ext.prebid.data.{bidders,eidpermissions} to bidder request"() {
259234
given: "Default basic bid request"
260235
def bidRequest = BidRequest.defaultBidRequest.tap {
261236
ext.prebid.data = new ExtRequestPrebidData(bidders: [GENERIC.value],
262-
eidpermissions: [new EidPermission(source: PBSUtils.randomString, bidders: [GENERIC])])
237+
eidpermissions: [new EidPermission(source: PBSUtils.randomString, bidders: [BidderName.GENERIC])])
263238
}
264239

265240
and: "Default bid response"
@@ -275,12 +250,13 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
275250
assert !bidderRequest?.ext?.prebid?.data?.eidpermissions
276251
}
277252

278-
@IgnoreRest
279-
def "PBS shouldn't pass ext.prebid.data.{trace,debug} to bidder request"() {
253+
254+
def "PBS should pass ext.prebid.{trace,debug,integration} to bidder request"() {
280255
given: "Default basic bid request"
281256
def bidRequest = BidRequest.defaultBidRequest.tap {
282257
ext.prebid.trace = BASIC
283258
ext.prebid.debug = ENABLED
259+
ext.prebid.integration = PBSUtils.randomString
284260
}
285261

286262
and: "Default bid response"
@@ -294,6 +270,7 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
294270
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
295271
assert bidderRequest.ext.prebid.trace
296272
assert bidderRequest.ext.prebid.debug
273+
assert bidderRequest.ext.prebid.integration
297274
}
298275

299276
//todo: ext.prebid.events (object)
@@ -478,27 +455,6 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
478455
assert !bidderRequest.ext.prebid.paaFormat
479456
}
480457

481-
def "PBS should pass srid to the bidder request when srid present"() {
482-
given: "Default basic BidRequest with generic bidder"
483-
def bidRequest = BidRequest.defaultBidRequest.tap {
484-
ext.prebid.storedRequest = new PrebidStoredRequest(id: PBSUtils.randomNumber)
485-
}
486-
487-
and: "Default stored request"
488-
def storedRequestModel = BidRequest.defaultStoredRequest
489-
490-
and: "Save storedRequest into DB"
491-
def storedRequest = StoredRequest.getStoredRequest(bidRequest.ext.prebid.storedRequest.id, storedRequestModel)
492-
storedRequestDao.save(storedRequest)
493-
494-
when: "PBS processes auction request"
495-
defaultPbsService.sendAuctionRequest(bidRequest)
496-
497-
then: "Bidder request sho ext.prebid"
498-
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
499-
assert !bidderRequest.ext.prebid.storedRequest.id
500-
}
501-
502458
//todo: user.ext
503459
// The whole object is exposed except for the prebid field
504460
// consent, eids, data fields are needed for some bidders
@@ -509,17 +465,17 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
509465
user = new User(ext: new UserExt().tap {
510466
fcapids = [PBSUtils.randomString]
511467
time = new UserTime(userdow: PBSUtils.randomNumber, userhour: PBSUtils.randomNumber)
512-
prebid = new UserExtPrebid(buyeruids: [(GENERIC): PBSUtils.randomString])
468+
prebid = new UserExtPrebid(buyeruids: [(BidderName.GENERIC): PBSUtils.randomString])
513469
consentedProvidersSettings = new ConsentedProvidersSettings(consentedProviders: PBSUtils.randomString)
514470
})
515471
}
516472

517473
when: "PBS processes auction request"
518474
defaultPbsService.sendAuctionRequest(bidRequest)
519475

520-
then: "Bidder request shouldn't contain user.ext.prebid"
476+
then: "Bidder request shouldn't contain user.ext.prebid.buyeruids"
521477
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
522-
assert !bidderRequest.user.ext.prebid
478+
assert !bidderRequest.user.ext.prebid.buyeruids
523479

524480
and: "Bidder request should contain fcapid,time,consentedProvidedSettings"
525481
assert bidderRequest.user.ext.fcapids == bidRequest.user.ext.fcapids
@@ -549,13 +505,13 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
549505
//todo :device.ext.prebid
550506
// The whole object is exposed
551507

552-
@IgnoreRest
553-
def "PBS should pass device.ext.prebid"() {
508+
509+
def "PBS should pass device.ext.prebid.interstitial to bidder request when interstitial specified"() {
554510
given: "Default basic bid request with generic bidder"
555511
def bidRequest = BidRequest.defaultBidRequest.tap {
556512
device = new Device(
557513
ext: new DeviceExt(
558-
atts: UNKNOWN,
514+
atts: DeviceExt.Atts.UNKNOWN,
559515
cdep: PBSUtils.randomString,
560516
prebid: new DevicePrebid(interstitial: new Interstitial(
561517
minHeightPercentage: PBSUtils.getRandomNumber(0, 100),
@@ -573,17 +529,13 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
573529
//todo: ext.prebid.adservertargeting (object)
574530
// Never needed inside the adapter code
575531

576-
@IgnoreRest
532+
577533
def "PBS should pass ext.prebid.auctiontimestamp to bidder request"() {
578534
given: "Default basic bid request"
579535
def bidRequest = BidRequest.defaultBidRequest.tap {
580536
ext.prebid.auctionTimestamp = PBSUtils.randomNumber
581537
}
582538

583-
and: "Default bid response"
584-
def bidResponse = BidResponse.getDefaultBidResponse(bidRequest)
585-
bidder.setResponse(bidRequest.id, bidResponse)
586-
587539
when: "PBS processes auction request"
588540
defaultPbsService.sendAuctionRequest(bidRequest)
589541

@@ -595,11 +547,11 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
595547
//todo: ext.prebid.adservertargeting (object)
596548
// Never needed inside the adapter code
597549

598-
@IgnoreRest
550+
599551
def "PBS shouldn't pass ext.prebid.bidderConfig to bidder request"() {
600552
given: "Default basic bid request"
601553
def bidRequest = BidRequest.defaultBidRequest.tap {
602-
ext.prebid.bidderConfig = [new ExtPrebidBidderConfig(bidders: [GENERIC], config:
554+
ext.prebid.bidderConfig = [new ExtPrebidBidderConfig(bidders: [BidderName.GENERIC], config:
603555
new BidderConfig(ortb2: new BidderConfigOrtb(site: Site.configFPDSite, user: User.configFPDUser)))]
604556
}
605557

@@ -614,4 +566,48 @@ class BidderFieldDisplayBehaviorSpec extends BaseSpec {
614566
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
615567
assert !bidderRequest.ext.prebid.bidderConfig
616568
}
569+
570+
def "PBS shouldn't pass bidder param to the bidder when bidder param bidder not requested"() {
571+
given: "Default bid request with populated ext.prebid.bidderParams"
572+
def bidRequest = BidRequest.defaultBidRequest.tap {
573+
ext.prebid.bidderParams = [(RUBICON.value): PBSUtils.randomString]
574+
}
575+
576+
when: "PBS processes auction request"
577+
def response = defaultPbsService.sendAuctionRequest(bidRequest)
578+
579+
then: "Response shouldn't contain error"
580+
assert !response.ext?.errors
581+
582+
and: "Response shouldn't contain warning"
583+
assert !response.ext?.warnings
584+
585+
and: "Bidder request shouldn't contain bidder param"
586+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
587+
assert !bidderRequest.ext.prebid.bidderParams
588+
}
589+
590+
591+
def "PBS should pass bidder app.ext.prebid.source to the bidder whe bidder param bidder not requested"() {
592+
def bidRequest = BidRequest.getDefaultBidRequest(APP).tap {
593+
app.ext = new AppExt(prebid: new AppPrebid(source: PBSUtils.getRandomString(), version: PBSUtils.randomString))
594+
}
595+
596+
when: "PBS processes auction request"
597+
def response = defaultPbsService.sendAuctionRequest(bidRequest)
598+
599+
then: "Response shouldn't contain error"
600+
assert !response.ext?.errors
601+
602+
and: "Response shouldn't contain warning"
603+
assert !response.ext?.warnings
604+
605+
and: "Bidder request should contain bidder param"
606+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
607+
assert bidderRequest.app.ext.prebid.source == bidRequest.app.ext.prebid.source
608+
}
609+
//todo : WE DON'T have such field ext.prebid.experimentadscert.enabled
610+
// Enabled Ads.Cert 2.0 Authenticated Connections on supported outgoing bidder requests.
611+
// boolean no
612+
617613
}

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

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -201,25 +201,6 @@ class BidderInsensitiveCaseSpec extends BaseSpec {
201201
assert response.seatbid?.first()?.bid?.last()?.ext?.prebid?.targeting
202202
}
203203

204-
def "PBS should populate bidder request buyeruid from buyeruids when buyeruids with appropriate bidder present in request"() {
205-
given: "Bid request with buyeruids"
206-
def buyeruid = PBSUtils.randomString
207-
def bidRequest = BidRequest.defaultBidRequest.tap {
208-
imp[0].ext.prebid.bidder.tap {
209-
genericCamelCase = new Generic()
210-
generic = null
211-
}
212-
user = new User(ext: new UserExt(prebid: new UserExtPrebid(buyeruids: [(GENERIC_CAMEL_CASE): buyeruid])))
213-
}
214-
215-
when: "PBS processes auction request"
216-
defaultPbsService.sendAuctionRequest(bidRequest)
217-
218-
then: "Bidder request should contain buyeruid from the user.ext.prebid.buyeruids"
219-
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
220-
assert bidderRequest?.user?.buyeruid == buyeruid
221-
}
222-
223204
def "PBS should be able to match requested bidder with original bidder name in ext.prebid.aliase"() {
224205
given: "Default bid request with alias"
225206
def bidRequest = BidRequest.defaultBidRequest.tap {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,8 +1445,9 @@ class BidderParamsSpec extends BaseSpec {
14451445
and: "Response should contain repose millis with corresponding bidder"
14461446
assert response.ext.responsetimemillis.containsKey(ALIAS.value)
14471447

1448-
and: "Bidder request should be valid"
1449-
assert bidder.getBidderRequests(bidRequest.id)
1448+
and: "Bidder request should be valid and not contain aliases"
1449+
def bidderRequests = bidder.getBidderRequests(bidRequest.id)
1450+
assert !bidderRequests.ext.prebid.aliases
14501451
}
14511452

14521453
def "PBS should populate same code for adapter code when make call for generic hard code alias"() {

0 commit comments

Comments
 (0)