From 7b9f71adf7873ac804bb504576aee767ca21e2d0 Mon Sep 17 00:00:00 2001 From: markiian Date: Wed, 23 Apr 2025 15:39:33 +0300 Subject: [PATCH 1/5] Coverage functional tests when using stored requests and stored impressions --- .../functional/model/bidder/AppNexus.groovy | 1 + .../functional/tests/BidderParamsSpec.groovy | 52 ++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/org/prebid/server/functional/model/bidder/AppNexus.groovy b/src/test/groovy/org/prebid/server/functional/model/bidder/AppNexus.groovy index 3756f912105..7b6f2077473 100644 --- a/src/test/groovy/org/prebid/server/functional/model/bidder/AppNexus.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/bidder/AppNexus.groovy @@ -14,6 +14,7 @@ class AppNexus implements BidderAdapter { String trafficSourceCode Boolean isAmp String hbSource + Double reserve static AppNexus getDefault() { new AppNexus().tap { diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index d92a6f17ee9..200f0bea5e6 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -1,5 +1,6 @@ package org.prebid.server.functional.tests +import org.prebid.server.functional.model.bidder.AppNexus import org.prebid.server.functional.model.bidder.BidderName import org.prebid.server.functional.model.bidder.Generic import org.prebid.server.functional.model.db.Account @@ -23,6 +24,7 @@ import org.prebid.server.functional.model.request.auction.Native import org.prebid.server.functional.model.request.auction.PrebidOptions import org.prebid.server.functional.model.request.auction.PrebidStoredRequest import org.prebid.server.functional.model.request.auction.Site +import org.prebid.server.functional.model.request.auction.Source import org.prebid.server.functional.model.request.auction.Targeting import org.prebid.server.functional.model.request.vtrack.VtrackRequest import org.prebid.server.functional.model.request.vtrack.xml.Vast @@ -37,7 +39,6 @@ import static org.prebid.server.functional.model.Currency.CHF import static org.prebid.server.functional.model.Currency.EUR import static org.prebid.server.functional.model.Currency.JPY import static org.prebid.server.functional.model.Currency.USD -import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.ALIAS_UPPER_CASE import static org.prebid.server.functional.model.bidder.BidderName.AMX import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS @@ -1740,4 +1741,53 @@ class BidderParamsSpec extends BaseSpec { cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) } + + def "PBS should merger stored imp when appnexus bidder requested with reserve field"() { + given: "Pbs default config with appnexus" + def pbsConfig = ["adapters.${APPNEXUS.value}.enabled" : "true", + "adapters.${APPNEXUS.value}.endpoint": "$networkServiceContainer.rootUri/auction".toString()] + def defaultPbsService = pbsServiceFactory.getService(pbsConfig) + + and: "Default stored request with specified stored imps and request" + def storedRequestId = PBSUtils.randomString + def bidRequest = BidRequest.getDefaultBidRequest().tap { + imp[0].ext.prebid.bidder.generic = null + imp[0].ext.prebid.bidder.appNexus = AppNexus.getDefault().tap { + reserve = PBSUtils.getRandomDecimal() as Double + } + imp[0].ext.prebid.storedRequest = new PrebidStoredRequest(id: PBSUtils.randomString) + ext.prebid.storedRequest = new PrebidStoredRequest(id: storedRequestId) + } + + and: "Save storedImp into DB" + def storedImp = StoredImp.getStoredImp(bidRequest).tap { + impData = Imp.defaultImpression + } + storedImpDao.save(storedImp) + + and: "Save stored request with source.tid and cur" + def storedBidRequest = new BidRequest(cur: [USD], source: new Source(tid: PBSUtils.randomString)) + def storedRequest = StoredRequest.getStoredRequest(storedRequestId, storedBidRequest) + storedRequestDao.save(storedRequest) + + and: "Default basic bid with bid.ext" + def bidResponse = BidResponse.getDefaultBidResponse(bidRequest, APPNEXUS).tap { + seatbid[0].bid[0].ext = new BidExt() + } + bidder.setResponse(bidRequest.id, bidResponse) + + when: "PBS processes auction request" + def response = defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bid response should contain appnexus and generic bidder" + assert response.seatbid.size() == 2 + assert response.seatbid.seat.sort() == [APPNEXUS, GENERIC].sort() + + and: "Bidder request" + def bidderRequests = bidder.getBidderRequests(bidRequest.id) + assert bidderRequests.size() == 2 + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) + } } From 9855651602643d043fcd60ac1399ad3897a9d2e6 Mon Sep 17 00:00:00 2001 From: markiian Date: Wed, 23 Apr 2025 15:41:04 +0300 Subject: [PATCH 2/5] Update naming --- .../org/prebid/server/functional/tests/BidderParamsSpec.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index 200f0bea5e6..98dc9757ec7 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -1783,7 +1783,7 @@ class BidderParamsSpec extends BaseSpec { assert response.seatbid.size() == 2 assert response.seatbid.seat.sort() == [APPNEXUS, GENERIC].sort() - and: "Bidder request" + and: "Bidder requests should perform two bidder call" def bidderRequests = bidder.getBidderRequests(bidRequest.id) assert bidderRequests.size() == 2 From 0cc5f4eb7cc5a02063ce98dacadcd20367fa0195 Mon Sep 17 00:00:00 2001 From: markiian Date: Wed, 23 Apr 2025 15:49:36 +0300 Subject: [PATCH 3/5] Update naming test --- .../org/prebid/server/functional/tests/BidderParamsSpec.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index 98dc9757ec7..661bf9ad313 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -1742,7 +1742,7 @@ class BidderParamsSpec extends BaseSpec { pbsServiceFactory.removeContainer(pbsConfig) } - def "PBS should merger stored imp when appnexus bidder requested with reserve field"() { + def 'PBS should merge stored imp when appnexus bidder requested with reserve field'() { given: "Pbs default config with appnexus" def pbsConfig = ["adapters.${APPNEXUS.value}.enabled" : "true", "adapters.${APPNEXUS.value}.endpoint": "$networkServiceContainer.rootUri/auction".toString()] From 6e575321cf9ebddfb211b9651b08491d9e62907a Mon Sep 17 00:00:00 2001 From: markiian Date: Tue, 29 Apr 2025 15:35:21 +0300 Subject: [PATCH 4/5] Update after review --- .../prebid/server/functional/tests/BidderParamsSpec.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index 661bf9ad313..f9654befd46 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -1742,7 +1742,7 @@ class BidderParamsSpec extends BaseSpec { pbsServiceFactory.removeContainer(pbsConfig) } - def 'PBS should merge stored imp when appnexus bidder requested with reserve field'() { + def 'PBS should merge stored imp with appnexus bidder requested when reserve field specified'() { given: "Pbs default config with appnexus" def pbsConfig = ["adapters.${APPNEXUS.value}.enabled" : "true", "adapters.${APPNEXUS.value}.endpoint": "$networkServiceContainer.rootUri/auction".toString()] @@ -1781,7 +1781,7 @@ class BidderParamsSpec extends BaseSpec { then: "Bid response should contain appnexus and generic bidder" assert response.seatbid.size() == 2 - assert response.seatbid.seat.sort() == [APPNEXUS, GENERIC].sort() + assert response.seatbid.seat.sort() == [APPNEXUS, BidderName.GENERIC].sort() and: "Bidder requests should perform two bidder call" def bidderRequests = bidder.getBidderRequests(bidRequest.id) From 1365bcc35df243b5d9d530bfb48a982566feda61 Mon Sep 17 00:00:00 2001 From: markiian Date: Tue, 29 Apr 2025 15:51:28 +0300 Subject: [PATCH 5/5] Update after review --- .../org/prebid/server/functional/tests/BidderParamsSpec.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index f9654befd46..8b3121a8991 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -1742,7 +1742,7 @@ class BidderParamsSpec extends BaseSpec { pbsServiceFactory.removeContainer(pbsConfig) } - def 'PBS should merge stored imp with appnexus bidder requested when reserve field specified'() { + def "PBS should merge stored imp with appnexus bidder requested when reserve field specified"() { given: "Pbs default config with appnexus" def pbsConfig = ["adapters.${APPNEXUS.value}.enabled" : "true", "adapters.${APPNEXUS.value}.endpoint": "$networkServiceContainer.rootUri/auction".toString()]