Skip to content

Commit d48772f

Browse files
marki1ansergseven
authored andcommitted
Test: consented_providers_settings (prebid#3577)
1 parent 41ac955 commit d48772f

File tree

3 files changed

+98
-1
lines changed

3 files changed

+98
-1
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.prebid.server.functional.model.request.auction
2+
3+
import com.fasterxml.jackson.databind.PropertyNamingStrategies
4+
import com.fasterxml.jackson.databind.annotation.JsonNaming
5+
import groovy.transform.ToString
6+
7+
@ToString(includeNames = true, ignoreNulls = true)
8+
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy)
9+
class ConsentedProvidersSettings {
10+
11+
String consentedProviders
12+
}

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

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

3+
import com.fasterxml.jackson.annotation.JsonProperty
4+
import com.fasterxml.jackson.databind.PropertyNamingStrategies
5+
import com.fasterxml.jackson.databind.annotation.JsonNaming
36
import groovy.transform.ToString
47

58
@ToString(includeNames = true, ignoreNulls = true)
9+
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy)
610
class UserExt {
711

812
String consent
@@ -11,6 +15,9 @@ class UserExt {
1115
UserTime time
1216
UserExtData data
1317
UserExtPrebid prebid
18+
ConsentedProvidersSettings consentedProvidersSettings
19+
@JsonProperty("ConsentedProvidersSettings")
20+
ConsentedProvidersSettings consentedProvidersSettingsCamelCase
1421

1522
static UserExt getFPDUserExt() {
1623
new UserExt(data: UserExtData.FPDUserExtData)

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

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import org.prebid.server.functional.model.db.StoredRequest
44
import org.prebid.server.functional.model.db.StoredResponse
55
import org.prebid.server.functional.model.request.amp.AmpRequest
66
import org.prebid.server.functional.model.request.auction.BidRequest
7+
import org.prebid.server.functional.model.request.auction.ConsentedProvidersSettings
78
import org.prebid.server.functional.model.request.auction.DistributionChannel
89
import org.prebid.server.functional.model.request.auction.Site
910
import org.prebid.server.functional.model.request.auction.StoredAuctionResponse
11+
import org.prebid.server.functional.model.request.auction.User
12+
import org.prebid.server.functional.model.request.auction.UserExt
1013
import org.prebid.server.functional.model.response.auction.SeatBid
1114
import org.prebid.server.functional.service.PrebidServerException
1215
import org.prebid.server.functional.util.PBSUtils
@@ -56,7 +59,7 @@ class AmpSpec extends BaseSpec {
5659
assert exception.responseBody == "Invalid request format: request.${channel.value.toLowerCase()} must not exist in AMP stored requests."
5760

5861
where:
59-
channel << [DistributionChannel.APP, DistributionChannel.DOOH]
62+
channel << [DistributionChannel.APP, DistributionChannel.DOOH]
6063
}
6164

6265
def "PBS should return info from the stored response when it's defined in the stored request"() {
@@ -180,4 +183,79 @@ class AmpSpec extends BaseSpec {
180183
assert bidderRequest.imp[0]?.banner?.format[0]?.weight == ampStoredRequest.imp[0].banner.format[0].weight
181184
assert bidderRequest.regs?.gdpr == ampStoredRequest.regs.gdpr
182185
}
186+
187+
def "PBS should pass addtl_consent to user.ext.{consented_providers_settings/ConsentedProvidersSettings}.consented_providers"() {
188+
given: "Default amp request with addtlConsent"
189+
def randomAddtlConsent = PBSUtils.randomString
190+
def ampRequest = AmpRequest.defaultAmpRequest.tap {
191+
addtlConsent = randomAddtlConsent
192+
}
193+
194+
and: "Save storedRequest into DB"
195+
def ampStoredRequest = BidRequest.defaultBidRequest.tap {
196+
user = new User(ext: new UserExt(
197+
consentedProvidersSettingsCamelCase: new ConsentedProvidersSettings(consentedProviders: PBSUtils.randomString),
198+
consentedProvidersSettings: new ConsentedProvidersSettings(consentedProviders: PBSUtils.randomString)))
199+
}
200+
def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest)
201+
storedRequestDao.save(storedRequest)
202+
203+
when: "PBS processes amp request"
204+
defaultPbsService.sendAmpRequest(ampRequest)
205+
206+
then: "Bidder request should contain addtl consent"
207+
def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id)
208+
assert bidderRequest.user.ext.consentedProvidersSettingsCamelCase.consentedProviders == randomAddtlConsent
209+
assert bidderRequest.user.ext.consentedProvidersSettings.consentedProviders == randomAddtlConsent
210+
}
211+
212+
def "PBS should process original user.ext.{consented_providers_settings/ConsentedProvidersSettings}.consented_providers when ampRequest doesn't contain addtl_consent"() {
213+
given: "Default amp request with addtlConsent"
214+
def ampRequest = AmpRequest.defaultAmpRequest.tap {
215+
addtlConsent = null
216+
}
217+
218+
and: "Save storedRequest into DB"
219+
def consentProvidersKebabCase = PBSUtils.randomString
220+
def consentProviders = PBSUtils.randomString
221+
def ampStoredRequest = BidRequest.defaultBidRequest.tap {
222+
user = new User(ext: new UserExt(
223+
consentedProvidersSettingsCamelCase: new ConsentedProvidersSettings(consentedProviders: consentProvidersKebabCase),
224+
consentedProvidersSettings: new ConsentedProvidersSettings(consentedProviders: consentProviders)))
225+
}
226+
def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest)
227+
storedRequestDao.save(storedRequest)
228+
229+
when: "PBS processes amp request"
230+
defaultPbsService.sendAmpRequest(ampRequest)
231+
232+
then: "Bidder request should contain requested consent"
233+
def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id)
234+
assert bidderRequest.user.ext.consentedProvidersSettingsCamelCase.consentedProviders == consentProvidersKebabCase
235+
assert bidderRequest.user.ext.consentedProvidersSettings.consentedProviders == consentProviders
236+
}
237+
238+
def "PBS should left user.ext.{consented_providers_settings/ConsentedProvidersSettings}.consented_providers empty when addtl_consent and original fields are empty"() {
239+
given: "Default amp request with addtlConsent"
240+
def ampRequest = AmpRequest.defaultAmpRequest.tap {
241+
addtlConsent = null
242+
}
243+
244+
and: "Save storedRequest into DB"
245+
def ampStoredRequest = BidRequest.defaultBidRequest.tap {
246+
user = new User(ext: new UserExt(
247+
consentedProvidersSettingsCamelCase: new ConsentedProvidersSettings(consentedProviders: null),
248+
consentedProvidersSettings: new ConsentedProvidersSettings(consentedProviders: null)))
249+
}
250+
def storedRequest = StoredRequest.getStoredRequest(ampRequest, ampStoredRequest)
251+
storedRequestDao.save(storedRequest)
252+
253+
when: "PBS processes amp request"
254+
defaultPbsService.sendAmpRequest(ampRequest)
255+
256+
then: "Bidder request shouldn't contain consent"
257+
def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id)
258+
assert !bidderRequest.user.ext.consentedProvidersSettingsCamelCase.consentedProviders
259+
assert !bidderRequest.user.ext.consentedProvidersSettings.consentedProviders
260+
}
183261
}

0 commit comments

Comments
 (0)