11package org.prebid.server.functional.tests
22
3+ import org.prebid.server.functional.model.bidder.AppNexus
34import org.prebid.server.functional.model.bidder.BidderName
45import org.prebid.server.functional.model.bidder.Generic
56import org.prebid.server.functional.model.db.Account
@@ -23,6 +24,7 @@ import org.prebid.server.functional.model.request.auction.Native
2324import org.prebid.server.functional.model.request.auction.PrebidOptions
2425import org.prebid.server.functional.model.request.auction.PrebidStoredRequest
2526import org.prebid.server.functional.model.request.auction.Site
27+ import org.prebid.server.functional.model.request.auction.Source
2628import org.prebid.server.functional.model.request.auction.Targeting
2729import org.prebid.server.functional.model.request.vtrack.VtrackRequest
2830import org.prebid.server.functional.model.request.vtrack.xml.Vast
@@ -37,7 +39,6 @@ import static org.prebid.server.functional.model.Currency.CHF
3739import static org.prebid.server.functional.model.Currency.EUR
3840import static org.prebid.server.functional.model.Currency.JPY
3941import static org.prebid.server.functional.model.Currency.USD
40- import static org.prebid.server.functional.model.bidder.BidderName.ALIAS
4142import static org.prebid.server.functional.model.bidder.BidderName.ALIAS_UPPER_CASE
4243import static org.prebid.server.functional.model.bidder.BidderName.AMX
4344import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS
@@ -1740,4 +1741,53 @@ class BidderParamsSpec extends BaseSpec {
17401741 cleanup : " Stop and remove pbs container"
17411742 pbsServiceFactory. removeContainer(pbsConfig)
17421743 }
1744+
1745+ def " PBS should merge stored imp with appnexus bidder requested when reserve field specified" () {
1746+ given : " Pbs default config with appnexus"
1747+ def pbsConfig = [" adapters.${ APPNEXUS.value} .enabled" : " true" ,
1748+ " adapters.${ APPNEXUS.value} .endpoint" : " $networkServiceContainer . rootUri /auction" . toString()]
1749+ def defaultPbsService = pbsServiceFactory. getService(pbsConfig)
1750+
1751+ and : " Default stored request with specified stored imps and request"
1752+ def storedRequestId = PBSUtils . randomString
1753+ def bidRequest = BidRequest . getDefaultBidRequest(). tap {
1754+ imp[0 ]. ext. prebid. bidder. generic = null
1755+ imp[0 ]. ext. prebid. bidder. appNexus = AppNexus . getDefault(). tap {
1756+ reserve = PBSUtils . getRandomDecimal() as Double
1757+ }
1758+ imp[0 ]. ext. prebid. storedRequest = new PrebidStoredRequest (id : PBSUtils . randomString)
1759+ ext. prebid. storedRequest = new PrebidStoredRequest (id : storedRequestId)
1760+ }
1761+
1762+ and : " Save storedImp into DB"
1763+ def storedImp = StoredImp . getStoredImp(bidRequest). tap {
1764+ impData = Imp . defaultImpression
1765+ }
1766+ storedImpDao. save(storedImp)
1767+
1768+ and : " Save stored request with source.tid and cur"
1769+ def storedBidRequest = new BidRequest (cur : [USD ], source : new Source (tid : PBSUtils . randomString))
1770+ def storedRequest = StoredRequest . getStoredRequest(storedRequestId, storedBidRequest)
1771+ storedRequestDao. save(storedRequest)
1772+
1773+ and : " Default basic bid with bid.ext"
1774+ def bidResponse = BidResponse . getDefaultBidResponse(bidRequest, APPNEXUS ). tap {
1775+ seatbid[0 ]. bid[0 ]. ext = new BidExt ()
1776+ }
1777+ bidder. setResponse(bidRequest. id, bidResponse)
1778+
1779+ when : " PBS processes auction request"
1780+ def response = defaultPbsService. sendAuctionRequest(bidRequest)
1781+
1782+ then : " Bid response should contain appnexus and generic bidder"
1783+ assert response. seatbid. size() == 2
1784+ assert response. seatbid. seat. sort() == [APPNEXUS , BidderName . GENERIC ]. sort()
1785+
1786+ and : " Bidder requests should perform two bidder call"
1787+ def bidderRequests = bidder. getBidderRequests(bidRequest. id)
1788+ assert bidderRequests. size() == 2
1789+
1790+ cleanup : " Stop and remove pbs container"
1791+ pbsServiceFactory. removeContainer(pbsConfig)
1792+ }
17431793}
0 commit comments