From 317621b598365f8f2e18e0007519d6b192f83f83 Mon Sep 17 00:00:00 2001 From: Oleksandr Zhevedenko <720803+Net-burst@users.noreply.github.com> Date: Tue, 27 Aug 2024 09:51:27 -0400 Subject: [PATCH] Tests: Move privacy-related fields from extensions to their root objects (#2958) --- .../model/request/auction/Regs.groovy | 2 +- .../model/request/auction/RegsExt.groovy | 2 + .../server/functional/tests/AmpSpec.groovy | 4 +- .../functional/tests/BidderParamsSpec.groovy | 4 +- .../functional/tests/HttpSettingsSpec.groovy | 4 +- .../functional/tests/OrtbConverterSpec.groovy | 10 ++--- .../tests/privacy/ActivityTraceLogSpec.groovy | 5 ++- .../functional/tests/privacy/DsaSpec.groovy | 41 ++++++++++--------- .../tests/privacy/GdprAuctionSpec.groovy | 8 ++-- .../tests/privacy/GppAmpSpec.groovy | 7 ++-- .../tests/privacy/GppAuctionSpec.groovy | 9 ++-- .../privacy/GppFetchBidActivitiesSpec.groovy | 5 ++- .../GppTransmitEidsActivitiesSpec.groovy | 11 ++--- ...GppTransmitPreciseGeoActivitiesSpec.groovy | 9 ++-- .../GppTransmitUfpdActivitiesSpec.groovy | 12 +++--- .../tests/privacy/PrivacyBaseSpec.groovy | 29 ++++++------- .../TcfBasicTransmitEidsActivitiesSpec.groovy | 4 +- ...smitEidsOrtbConverterActivitiesSpec.groovy | 4 +- 18 files changed, 90 insertions(+), 80 deletions(-) diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Regs.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Regs.groovy index 1d8aa6f077d..6e647c16817 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Regs.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Regs.groovy @@ -17,7 +17,7 @@ class Regs { static Regs getDefaultRegs() { new Regs().tap { - ext = new RegsExt(gdpr: 0) + gdpr = 0 } } } diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/RegsExt.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/RegsExt.groovy index f235dfbd600..9a9c62fde81 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/RegsExt.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/RegsExt.groovy @@ -8,7 +8,9 @@ import groovy.transform.ToString @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy) class RegsExt { + @Deprecated(since = "enabling support of ortb 2.6") Integer gdpr + @Deprecated(since = "enabling support of ortb 2.6") String usPrivacy String gpc Dsa dsa diff --git a/src/test/groovy/org/prebid/server/functional/tests/AmpSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AmpSpec.groovy index 9205542bbb8..ac3ba146010 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AmpSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AmpSpec.groovy @@ -107,7 +107,7 @@ class AmpSpec extends BaseSpec { and: "Default stored request with specified: gdpr, debug" def ampStoredRequest = BidRequest.defaultStoredRequest - ampStoredRequest.regs.ext.gdpr = 1 + ampStoredRequest.regs.gdpr = 1 and: "Stored request in DB" def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest) @@ -178,6 +178,6 @@ class AmpSpec extends BaseSpec { assert !bidderRequest.imp[0]?.tagId assert bidderRequest.imp[0]?.banner?.format[0]?.height == ampStoredRequest.imp[0].banner.format[0].height assert bidderRequest.imp[0]?.banner?.format[0]?.weight == ampStoredRequest.imp[0].banner.format[0].weight - assert bidderRequest.regs?.gdpr == ampStoredRequest.regs.ext.gdpr + assert bidderRequest.regs?.gdpr == ampStoredRequest.regs.gdpr } } 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 ff1ce756ac8..8b087120db0 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -159,7 +159,7 @@ class BidderParamsSpec extends BaseSpec { and: "Default basic generic BidRequest" def bidRequest = BidRequest.defaultBidRequest def validCcpa = new CcpaConsent(explicitNotice: ENFORCED, optOutSale: ENFORCED) - bidRequest.regs.ext = new RegsExt(usPrivacy: validCcpa) + bidRequest.regs.usPrivacy = validCcpa def lat = PBSUtils.getRandomDecimal(0, 90) def lon = PBSUtils.getRandomDecimal(0, 90) bidRequest.device = new Device(geo: new Geo(lat: lat, lon: lon)) @@ -186,7 +186,7 @@ class BidderParamsSpec extends BaseSpec { and: "Default basic generic BidRequest" def bidRequest = BidRequest.defaultBidRequest def validCcpa = new CcpaConsent(explicitNotice: ENFORCED, optOutSale: ENFORCED) - bidRequest.regs.ext = new RegsExt(usPrivacy: validCcpa) + bidRequest.regs.usPrivacy = validCcpa def lat = PBSUtils.getRandomDecimal(0, 90) as float def lon = PBSUtils.getRandomDecimal(0, 90) as float bidRequest.device = new Device(geo: new Geo(lat: lat, lon: lon)) diff --git a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy index 99cd8831745..caabebba8ff 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy @@ -32,7 +32,7 @@ class HttpSettingsSpec extends BaseSpec { def "PBS should take account information from http data source on auction request"() { given: "Get basic BidRequest with generic bidder and set gdpr = 1" def bidRequest = BidRequest.defaultBidRequest - bidRequest.regs.ext.gdpr = 1 + bidRequest.regs.gdpr = 1 and: "Prepare default account response with gdpr = 0" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(bidRequest?.site?.publisher?.id) @@ -61,7 +61,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Get basic stored request and set gdpr = 1" def ampStoredRequest = BidRequest.defaultBidRequest ampStoredRequest.site.publisher.id = ampRequest.account - ampStoredRequest.regs.ext.gdpr = 1 + ampStoredRequest.regs.gdpr = 1 and: "Save storedRequest into DB" def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest) diff --git a/src/test/groovy/org/prebid/server/functional/tests/OrtbConverterSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/OrtbConverterSpec.groovy index 856315e17d2..6ffaedca01e 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/OrtbConverterSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/OrtbConverterSpec.groovy @@ -17,6 +17,7 @@ import org.prebid.server.functional.model.request.auction.RefSettings import org.prebid.server.functional.model.request.auction.RefType import org.prebid.server.functional.model.request.auction.Refresh import org.prebid.server.functional.model.request.auction.Regs +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.request.auction.Source import org.prebid.server.functional.model.request.auction.SourceType import org.prebid.server.functional.model.request.auction.User @@ -46,10 +47,7 @@ class OrtbConverterSpec extends BaseSpec { def usPrivacyRandomString = PBSUtils.randomString def gdpr = 0 def bidRequest = BidRequest.defaultBidRequest.tap { - regs = Regs.defaultRegs.tap { - it.usPrivacy = usPrivacyRandomString - it.gdpr = gdpr - } + regs = new Regs(usPrivacy: usPrivacyRandomString, gdpr: gdpr) } when: "Requesting PBS auction with ortb 2.6" @@ -1140,7 +1138,7 @@ class OrtbConverterSpec extends BaseSpec { def randomGpc = PBSUtils.randomNumber as String def bidRequest = BidRequest.defaultBidRequest.tap { regs = Regs.defaultRegs.tap { - ext.gpc = randomGpc + ext = new RegsExt(gpc: randomGpc) } } @@ -1156,7 +1154,7 @@ class OrtbConverterSpec extends BaseSpec { def randomGpc = PBSUtils.randomNumber as String def bidRequest = BidRequest.defaultBidRequest.tap { regs = Regs.defaultRegs.tap { - ext.gpc = randomGpc + ext = new RegsExt(gpc: randomGpc) } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/ActivityTraceLogSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/ActivityTraceLogSpec.groovy index 87c7689b4ab..309bba2eea6 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/ActivityTraceLogSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/ActivityTraceLogSpec.groovy @@ -9,6 +9,7 @@ import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.Condition import org.prebid.server.functional.model.request.auction.Device import org.prebid.server.functional.model.request.auction.Geo +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.response.auction.ActivityInfrastructure import org.prebid.server.functional.model.response.auction.ActivityInvocationPayload import org.prebid.server.functional.model.response.auction.And @@ -192,7 +193,7 @@ class ActivityTraceLogSpec extends PrivacyBaseSpec { def bidRequest = BidRequest.defaultBidRequest.tap { ext.prebid.trace = VERBOSE device = new Device(geo: new Geo(country: USA, region: ALABAMA.abbreviation)) - regs.ext.gpc = PBSUtils.randomString + regs.ext = new RegsExt(gpc: PBSUtils.randomString) regs.gppSid = [US_CA_V1.intValue] setAccountId(accountId) } @@ -298,7 +299,7 @@ class ActivityTraceLogSpec extends PrivacyBaseSpec { def bidRequest = BidRequest.defaultBidRequest.tap { ext.prebid.trace = VERBOSE device = new Device(geo: new Geo(country: USA, region: ALABAMA.abbreviation)) - regs.ext.gpc = PBSUtils.randomString + regs.ext = new RegsExt(gpc: PBSUtils.randomString) regs.gppSid = [US_CA_V1.intValue] regs.gpp = new UsNatV1Consent.Builder().setGpc(true).build() setAccountId(accountId) diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/DsaSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/DsaSpec.groovy index 01a5a61aca6..2575789049d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/DsaSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/DsaSpec.groovy @@ -6,6 +6,7 @@ import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.Dsa import org.prebid.server.functional.model.request.auction.Dsa as RequestDsa +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.response.auction.BidExt import org.prebid.server.functional.model.response.auction.BidResponse import org.prebid.server.functional.model.response.auction.DsaResponse @@ -34,7 +35,7 @@ class DsaSpec extends PrivacyBaseSpec { and: "Default stored request with DSA" def ampStoredRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) setAccountId(ampRequest.account) } @@ -63,7 +64,7 @@ class DsaSpec extends PrivacyBaseSpec { and: "Default stored request with DSA" def ampStoredRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) setAccountId(ampRequest.account) } @@ -106,7 +107,7 @@ class DsaSpec extends PrivacyBaseSpec { and: "Default stored request with DSA" def ampStoredRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) setAccountId(ampRequest.account) } @@ -143,7 +144,7 @@ class DsaSpec extends PrivacyBaseSpec { and: "Default stored bid request with DSA" def ampStoredRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) setAccountId(ampRequest.account) } @@ -177,7 +178,7 @@ class DsaSpec extends PrivacyBaseSpec { def "Auction request should always forward DSA to bidders"() { given: "Default bid request with DSA" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) } when: "PBS processes auction request" @@ -198,7 +199,7 @@ class DsaSpec extends PrivacyBaseSpec { def "Auction request should always accept bids with DSA"() { given: "Default bid request with DSA" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = dsa + regs.ext = new RegsExt(dsa: dsa) } and: "Default bidder response with DSA" @@ -235,7 +236,7 @@ class DsaSpec extends PrivacyBaseSpec { def "Auction request should accept bids without DSA when dsarequired is #dsaRequired"() { given: "Default bid request with DSA" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = RequestDsa.getDefaultDsa(dsaRequired) + regs.ext = new RegsExt(dsa: RequestDsa.getDefaultDsa(dsaRequired)) } and: "Default bidder response with DSA" @@ -263,7 +264,7 @@ class DsaSpec extends PrivacyBaseSpec { def "Auction request should reject bids without DSA when dsarequired is #dsaRequired"() { given: "Default bid request with DSA" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.dsa = RequestDsa.getDefaultDsa(dsaRequired) + regs.ext = new RegsExt(dsa: RequestDsa.getDefaultDsa(dsaRequired)) } and: "Default bidder response without DSA" @@ -293,7 +294,7 @@ class DsaSpec extends PrivacyBaseSpec { given: "Default bid request with DSA" def bidRequest = BidRequest.defaultBidRequest.tap { ext.prebid.returnAllBidStatus = true - regs.ext.dsa = RequestDsa.getDefaultDsa(dsaRequired) + regs.ext = new RegsExt(dsa: RequestDsa.getDefaultDsa(dsaRequired)) } and: "Default bidder response without DSA" @@ -332,7 +333,7 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = BidRequest.defaultBidRequest.tap { setAccountId(accountId) - regs.ext.dsa = null + regs.ext = new RegsExt(dsa: null) } and: "Account with default DSA config" @@ -352,7 +353,7 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = BidRequest.defaultBidRequest.tap { setAccountId(accountId) - regs.ext.dsa = requestDsa + regs.ext = new RegsExt(dsa: requestDsa) } and: "Account with default DSA config" @@ -378,7 +379,7 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = BidRequest.defaultBidRequest.tap { setAccountId(accountId) - regs.ext.dsa = null + regs.ext = new RegsExt(dsa: null) } and: "Account without default DSA config" @@ -397,8 +398,8 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = BidRequest.defaultBidRequest.tap { setAccountId(accountId) - regs.ext.dsa = null - regs.ext.gdpr = 0 + regs.ext = new RegsExt(dsa: null) + regs.gdpr = 0 } and: "Account with default DSA config" @@ -424,7 +425,7 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = getGdprBidRequest(consentString).tap { setAccountId(accountId) - regs.ext.dsa = null + regs.ext = new RegsExt(dsa: null) } and: "Account with default DSA config" @@ -448,8 +449,8 @@ class DsaSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber.toString() def bidRequest = BidRequest.defaultBidRequest.tap { setAccountId(accountId) - regs.ext.dsa = null - regs.ext.gdpr = 0 + regs.ext = new RegsExt(dsa: null) + regs.gdpr = 0 } and: "Account with default DSA config" @@ -471,9 +472,9 @@ class DsaSpec extends PrivacyBaseSpec { given: "Default bid request with DSA pubRender" def bidRequest = BidRequest.defaultBidRequest.tap { ext.prebid.returnAllBidStatus = true - regs.ext.dsa = RequestDsa.getDefaultDsa(REQUIRED).tap { + regs.ext = new RegsExt(dsa: RequestDsa.getDefaultDsa(REQUIRED).tap { it.pubRender = pubRender - } + }) } and: "Default bidder response with incorrect DSA adRender" @@ -513,7 +514,7 @@ class DsaSpec extends PrivacyBaseSpec { given: "Default bid request with DSA pubRender" def bidRequest = BidRequest.defaultBidRequest.tap { ext.prebid.returnAllBidStatus = true - regs.ext.dsa = RequestDsa.getDefaultDsa(REQUIRED) + regs.ext = new RegsExt(dsa: RequestDsa.getDefaultDsa(REQUIRED)) } and: "Default bidder response with incorrect DSA" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GdprAuctionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GdprAuctionSpec.groovy index 1e0bc5d6c75..72cd60c2b32 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GdprAuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GdprAuctionSpec.groovy @@ -505,7 +505,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { given: "Default Generic bid requests with personal data" def tcfConsent = new TcfConsent.Builder().build() def bidRequest = bidRequestWithPersonalData.tap { - regs.ext = new RegsExt(gdpr: 1) + regs.gdpr = 1 user.ext.consent = tcfConsent } @@ -535,7 +535,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { given: "Default Generic BidRequests with personal data" def tcfConsent = new TcfConsent.Builder().build() def bidRequest = bidRequestWithPersonalData.tap { - regs.ext = new RegsExt(gdpr: 1) + regs.gdpr = 1 user.ext.consent = tcfConsent ext.prebid.trace = VERBOSE } @@ -613,7 +613,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { given: "Default Generic BidRequests with personal data" def tcfConsent = new TcfConsent.Builder().build() def bidRequest = bidRequestWithPersonalData.tap { - regs.ext = new RegsExt(gdpr: 1) + regs.gdpr = 1 user.ext.consent = tcfConsent ext.prebid.trace = BASIC } @@ -693,7 +693,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { given: "Default Generic BidRequests with privacy data" def tcfConsent = new TcfConsent.Builder().setSpecialFeatureOptIns(DEVICE_ACCESS).build() def bidRequest = bidRequestWithPersonalData.tap { - regs.ext = new RegsExt(gdpr: 1) + regs.gdpr = 1 user.ext.consent = tcfConsent } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAmpSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAmpSpec.groovy index db59d60a260..204f2eb7025 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAmpSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAmpSpec.groovy @@ -5,6 +5,7 @@ import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.amp.ConsentType import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.Regs +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.util.PBSUtils import org.prebid.server.functional.util.privacy.gpp.TcfEuV2Consent import org.prebid.server.functional.util.privacy.gpp.UsV1Consent @@ -188,7 +189,7 @@ class GppAmpSpec extends PrivacyBaseSpec { and: "Save storedRequest into DB" def ampStoredRequest = BidRequest.defaultStoredRequest.tap { - regs.ext.gpc = null + regs.ext = new RegsExt(gpc: null) } def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest) storedRequestDao.save(storedRequest) @@ -212,7 +213,7 @@ class GppAmpSpec extends PrivacyBaseSpec { and: "Save storedRequest into DB" def ampStoredRequest = BidRequest.defaultStoredRequest.tap { - regs.ext.gpc = null + regs.ext = new RegsExt(gpc: null) } def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest) storedRequestDao.save(storedRequest) @@ -222,6 +223,6 @@ class GppAmpSpec extends PrivacyBaseSpec { then: "Bidder request shouldn't contain gpc value from header" def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id) - assert !bidderRequest.regs.ext + assert !bidderRequest?.regs?.ext?.gpc } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAuctionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAuctionSpec.groovy index cef812e4cf5..4eb78ee2140 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppAuctionSpec.groovy @@ -2,6 +2,7 @@ package org.prebid.server.functional.tests.privacy import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.Regs +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.request.auction.User import org.prebid.server.functional.model.response.auction.ErrorType import org.prebid.server.functional.util.PBSUtils @@ -235,7 +236,7 @@ class GppAuctionSpec extends PrivacyBaseSpec { def "PBS should populate gpc when header sec-gpc has value 1"() { given: "Default bid request with gpc" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.gpc = null + regs.ext = new RegsExt(gpc: null) } when: "PBS processes auction request with headers" @@ -252,7 +253,7 @@ class GppAuctionSpec extends PrivacyBaseSpec { def "PBS shouldn't populate gpc when header sec-gpc has #gpcInvalid value"() { given: "Default bid request with gpc" def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.gpc = null + regs.ext = new RegsExt(gpc: null) } when: "PBS processes auction request with headers" @@ -260,7 +261,7 @@ class GppAuctionSpec extends PrivacyBaseSpec { then: "Bidder request shouldn't contain gpc from header" def bidderRequests = bidder.getBidderRequest(bidRequest.id) - assert !bidderRequests.regs.ext + assert !bidderRequests?.regs?.ext?.gpc where: gpcInvalid << [PBSUtils.randomNumber as String, PBSUtils.randomNumber, PBSUtils.randomString, Boolean.TRUE] @@ -270,7 +271,7 @@ class GppAuctionSpec extends PrivacyBaseSpec { given: "Default bid request with gpc" def randomGpc = PBSUtils.randomNumber as String def bidRequest = BidRequest.defaultBidRequest.tap { - regs.ext.gpc = randomGpc + regs.ext = new RegsExt(gpc: randomGpc) } when: "PBS processes auction request with headers" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppFetchBidActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppFetchBidActivitiesSpec.groovy index d92dbb89d7c..db74b18ee48 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppFetchBidActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppFetchBidActivitiesSpec.groovy @@ -16,6 +16,7 @@ import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.Condition import org.prebid.server.functional.model.request.auction.Device import org.prebid.server.functional.model.request.auction.Geo +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.service.PrebidServerException import org.prebid.server.functional.util.PBSUtils import org.prebid.server.functional.util.privacy.gpp.UsCaV1Consent @@ -445,7 +446,7 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { def bidRequest = BidRequest.defaultBidRequest.tap { it.setAccountId(accountId) it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = randomGpc + it.regs.ext = new RegsExt(gpc: randomGpc) } and: "Setup activity" @@ -483,7 +484,7 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { def bidRequest = BidRequest.defaultBidRequest.tap { it.setAccountId(accountId) it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup activity" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitEidsActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitEidsActivitiesSpec.groovy index 5bda3ca3758..42ee2290663 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitEidsActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitEidsActivitiesSpec.groovy @@ -14,6 +14,7 @@ import org.prebid.server.functional.model.request.auction.AllowActivities import org.prebid.server.functional.model.request.auction.Condition import org.prebid.server.functional.model.request.auction.Device import org.prebid.server.functional.model.request.auction.Geo +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.service.PrebidServerException import org.prebid.server.functional.util.PBSUtils import org.prebid.server.functional.util.privacy.gpp.UsCaV1Consent @@ -447,7 +448,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { given: "Generic bid request with account connection" def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -487,7 +488,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def gpc = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { it.setAccountId(accountId) - it.regs.ext.gpc = gpc + it.regs.ext = new RegsExt(gpc: gpc) } and: "Setup activity" @@ -530,7 +531,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { given: "Generic bid request with account connection" def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -570,7 +571,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { it.setAccountId(accountId) - it.regs.ext.gpc = null + it.regs.ext = new RegsExt(gpc: null) } and: "Setup activity" @@ -1487,7 +1488,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { given: "Default Generic BidRequest with EIDS fields field and account id" def accountId = PBSUtils.randomNumber as String def ampStoredRequest = getBidRequestWithPersonalData(accountId).tap { - regs.ext.gpc = null + it.regs.ext = new RegsExt(gpc: null) } and: "amp request with link to account" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitPreciseGeoActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitPreciseGeoActivitiesSpec.groovy index 8f785046e45..e51a9b8f193 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitPreciseGeoActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitPreciseGeoActivitiesSpec.groovy @@ -13,6 +13,7 @@ import org.prebid.server.functional.model.request.auction.ActivityRule import org.prebid.server.functional.model.request.auction.AllowActivities import org.prebid.server.functional.model.request.auction.Condition import org.prebid.server.functional.model.request.auction.Geo +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.service.PrebidServerException import org.prebid.server.functional.util.PBSUtils import org.prebid.server.functional.util.privacy.gpp.UsCaV1Consent @@ -731,7 +732,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -793,7 +794,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { it.setAccountId(accountId) it.regs.gppSid = null it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = "1" + it.regs.ext = new RegsExt(gpc: "1") } and: "Setup activity" @@ -861,7 +862,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -922,7 +923,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) it.ext.prebid.trace = VERBOSE - it.regs.ext.gpc = null + it.regs.ext = new RegsExt(gpc: null) } and: "Setup condition" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitUfpdActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitUfpdActivitiesSpec.groovy index 44017052970..bbb019d515d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitUfpdActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppTransmitUfpdActivitiesSpec.groovy @@ -21,6 +21,7 @@ import org.prebid.server.functional.model.request.auction.Data import org.prebid.server.functional.model.request.auction.Device import org.prebid.server.functional.model.request.auction.Eid import org.prebid.server.functional.model.request.auction.Geo +import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.request.auction.User import org.prebid.server.functional.model.request.auction.UserExt import org.prebid.server.functional.model.request.auction.UserExtData @@ -607,7 +608,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { given: "Generic bid request with account connection" def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -666,7 +667,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def gpc = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { it.setAccountId(accountId) - it.regs.ext.gpc = gpc + it.regs.ext = new RegsExt(gpc: gpc) } and: "Setup activity" @@ -724,7 +725,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { given: "Generic bid request with account connection" def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { - it.regs.ext.gpc = PBSUtils.randomNumber as String + it.regs.ext = new RegsExt(gpc: PBSUtils.randomNumber as String) } and: "Setup condition" @@ -783,7 +784,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { it.setAccountId(accountId) - it.regs.ext.gpc = null + it.regs.ext = new RegsExt(gpc: null) } and: "Setup activity" @@ -1965,7 +1966,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { given: "Default Generic BidRequest with UFPD fields field and account id" def accountId = PBSUtils.randomNumber as String def ampStoredRequest = getBidRequestWithPersonalData(accountId).tap { - regs.ext.gpc = null + it.regs.ext = new RegsExt(gpc: null) } and: "amp request with link to account" @@ -3088,6 +3089,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { it.user.gender = PBSUtils.randomString it.user.geo = Geo.FPDGeo it.user.ext = new UserExt(data: new UserExtData(buyeruid: PBSUtils.randomString)) + it.regs.ext ?= new RegsExt() } } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy index a5b2e12d4a5..7e5774829bd 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy @@ -23,7 +23,6 @@ import org.prebid.server.functional.model.request.auction.Eid import org.prebid.server.functional.model.request.auction.Geo import org.prebid.server.functional.model.request.auction.GeoExt import org.prebid.server.functional.model.request.auction.GeoExtGeoProvider -import org.prebid.server.functional.model.request.auction.RegsExt import org.prebid.server.functional.model.request.auction.User import org.prebid.server.functional.model.request.auction.UserExt import org.prebid.server.functional.model.request.auction.UserExtData @@ -64,12 +63,14 @@ abstract class PrivacyBaseSpec extends BaseSpec { private static final int GEO_PRECISION = 2 - protected static final Map GENERIC_COOKIE_SYNC_CONFIG = ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : "$networkServiceContainer.rootUri/generic-usersync".toString(), - "adapters.${GENERIC.value}.usersync.${REDIRECT.value}.support-cors": false.toString()] - private static final Map OPENX_COOKIE_SYNC_CONFIG = ["adaptrs.${OPENX.value}.enabled" : "true", - "adapters.${OPENX.value}.usersync.cookie-family-name": OPENX.value] - private static final Map OPENX_CONFIG = ["adapters.${OPENX.value}.endpoint": "$networkServiceContainer.rootUri/auction".toString(), - "adapters.${OPENX.value}.enabled" : 'true'] + protected static final Map GENERIC_CONFIG = ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : "$networkServiceContainer.rootUri/generic-usersync".toString(), + "adapters.${GENERIC.value}.usersync.${REDIRECT.value}.support-cors": false.toString(), + "adapters.${GENERIC.value}.ortb-version" : "2.6"] + private static final Map OPENX_CONFIG = ["adaptrs.${OPENX.value}.enabled" : "true", + "adapters.${OPENX.value}.usersync.cookie-family-name": OPENX.value, + "adapters.${OPENX}.ortb-version" : "2.6", + "adapters.${OPENX.value}.endpoint" : "$networkServiceContainer.rootUri/auction".toString(), + "adapters.${OPENX.value}.enabled" : 'true'] protected static final Map GDPR_VENDOR_LIST_CONFIG = ["gdpr.vendorlist.v2.http-endpoint-template": "$networkServiceContainer.rootUri/v2/vendor-list.json".toString(), "gdpr.vendorlist.v3.http-endpoint-template": "$networkServiceContainer.rootUri/v3/vendor-list.json".toString()] protected static final Map SETTING_CONFIG = ["settings.enforce-valid-account": 'true'] @@ -105,10 +106,10 @@ abstract class PrivacyBaseSpec extends BaseSpec { @Shared protected final PrebidServerService privacyPbsService = pbsServiceFactory.getService(GDPR_VENDOR_LIST_CONFIG + - GENERIC_COOKIE_SYNC_CONFIG + GENERIC_VENDOR_CONFIG + RETRY_POLICY_EXPONENTIAL_CONFIG + GDPR_EEA_COUNTRY) + GENERIC_CONFIG + GENERIC_VENDOR_CONFIG + RETRY_POLICY_EXPONENTIAL_CONFIG + GDPR_EEA_COUNTRY) - protected static final Map PBS_CONFIG = OPENX_CONFIG + OPENX_COOKIE_SYNC_CONFIG + - GENERIC_COOKIE_SYNC_CONFIG + GDPR_VENDOR_LIST_CONFIG + SETTING_CONFIG + GENERIC_VENDOR_CONFIG + protected static final Map PBS_CONFIG = OPENX_CONFIG + + GENERIC_CONFIG + GDPR_VENDOR_LIST_CONFIG + SETTING_CONFIG + GENERIC_VENDOR_CONFIG @Shared protected final PrebidServerService activityPbsService = pbsServiceFactory.getService(PBS_CONFIG) @@ -149,7 +150,7 @@ abstract class PrivacyBaseSpec extends BaseSpec { protected static BidRequest getBidRequestWithPersonalData(String accountId = null, DistributionChannel channel = SITE) { getBidRequestWithGeo(channel).tap { - if(accountId != null) { + if (accountId != null) { setAccountId(accountId) } ext.prebid.trace = VERBOSE @@ -183,14 +184,14 @@ abstract class PrivacyBaseSpec extends BaseSpec { protected static BidRequest getCcpaBidRequest(DistributionChannel channel = SITE, ConsentString consentString) { getBidRequestWithGeo(channel).tap { - regs.ext = new RegsExt(usPrivacy: consentString) + regs.usPrivacy = consentString } } protected static BidRequest getGdprBidRequest(DistributionChannel channel = SITE, ConsentString consentString) { getBidRequestWithGeo(channel).tap { - regs.ext = new RegsExt(gdpr: 1) - user = new User(ext: new UserExt(consent: consentString)) + regs.gdpr = 1 + user = new User(consent: consentString) } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/TcfBasicTransmitEidsActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/TcfBasicTransmitEidsActivitiesSpec.groovy index 5ca9e9d062b..882595060fa 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/TcfBasicTransmitEidsActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/TcfBasicTransmitEidsActivitiesSpec.groovy @@ -27,8 +27,8 @@ import static org.prebid.server.functional.model.request.auction.TraceLevel.VERB class TcfBasicTransmitEidsActivitiesSpec extends PrivacyBaseSpec { - private static final Map PBS_CONFIG = SETTING_CONFIG + GENERIC_VENDOR_CONFIG + GENERIC_COOKIE_SYNC_CONFIG + ["gdpr.vendorlist.v2.http-endpoint-template": null, - "gdpr.vendorlist.v3.http-endpoint-template": null] + private static final Map PBS_CONFIG = SETTING_CONFIG + GENERIC_VENDOR_CONFIG + GENERIC_CONFIG + ["gdpr.vendorlist.v2.http-endpoint-template": null, + "gdpr.vendorlist.v3.http-endpoint-template": null] private final PrebidServerService activityPbsServiceExcludeGvl = pbsServiceFactory.getService(PBS_CONFIG) diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/TransmitEidsOrtbConverterActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/TransmitEidsOrtbConverterActivitiesSpec.groovy index 8ca804717ed..d0fa0583685 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/TransmitEidsOrtbConverterActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/TransmitEidsOrtbConverterActivitiesSpec.groovy @@ -28,8 +28,8 @@ import static org.prebid.server.functional.model.request.auction.TraceLevel.VERB class TransmitEidsOrtbConverterActivitiesSpec extends PrivacyBaseSpec { - private static final Map PBS_CONFIG = SETTING_CONFIG + GENERIC_VENDOR_CONFIG + GENERIC_COOKIE_SYNC_CONFIG + ["gdpr.vendorlist.v2.http-endpoint-template": null, - "gdpr.vendorlist.v3.http-endpoint-template": null] + private static final Map PBS_CONFIG = SETTING_CONFIG + GENERIC_VENDOR_CONFIG + GENERIC_CONFIG + ["gdpr.vendorlist.v2.http-endpoint-template": null, + "gdpr.vendorlist.v3.http-endpoint-template": null] private final PrebidServerService activityPbsServiceExcludeGvlWithElderOrtb = pbsServiceFactory.getService(PBS_CONFIG + ["adapters.generic.ortb-version": "2.5"]) @Shared