From ab5cd79c50972427ef9a067bcc79608a83787103 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Tue, 21 Jan 2025 20:05:48 +0200 Subject: [PATCH 1/3] Tests: Eidpermissions Request Validation Update --- .../server/functional/tests/EidsSpec.groovy | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy index 529f9c9c961..da74265a71d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy @@ -16,7 +16,10 @@ import org.prebid.server.functional.util.PBSUtils import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.OPENX +import static org.prebid.server.functional.model.bidder.BidderName.UNKNOWN import static org.prebid.server.functional.model.bidder.BidderName.WILDCARD +import static org.prebid.server.functional.model.request.auction.DebugCondition.DISABLED +import static org.prebid.server.functional.model.request.auction.DebugCondition.ENABLED import static org.prebid.server.functional.model.response.auction.ErrorType.PREBID import static org.prebid.server.functional.testcontainers.Dependencies.getNetworkServiceContainer @@ -91,6 +94,58 @@ class EidsSpec extends BaseSpec { assert !bidderRequest.user.eids } + def "PBS eids shouldn't include warning for unknown bidder in request"() { + given: "Default bid request with generic bidder" + def sourceId = PBSUtils.randomString + def eids = [new Eid(source: sourceId, uids: [new Uid(id: sourceId)])] + def bidRequest = BidRequest.defaultBidRequest.tap { + user = new User(eids: eids) + ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: sourceId, bidders: [UNKNOWN])]) + it.ext.prebid.debug = DISABLED + it.test = DISABLED + } + + when: "PBS processes auction request" + def bidResponse = defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain requested eids" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.user.eids + + and: "Bid response shouldn't contain warning" + assert !bidResponse.ext.warnings + } + + def "PBS eids should include warning for unknown bidder when request in debug mode"() { + given: "Default bid request with generic bidder" + def sourceId = PBSUtils.randomString + def eids = [new Eid(source: sourceId, uids: [new Uid(id: sourceId)])] + def bidRequest = BidRequest.defaultBidRequest.tap { + user = new User(eids: eids) + ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: sourceId, bidders: [UNKNOWN])]) + it.ext.prebid.debug = debug + it.test = test + } + + when: "PBS processes auction request" + def bidResponse = defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain requested eids" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.user.eids + + and: "Bid response should contain warning" + assert bidResponse.ext.warnings[PREBID]?.code == [999] + assert bidResponse.ext.warnings[PREBID]?.message == + ["request.ext.prebid.data.eidPermissions[].bidders[] unrecognized biddercode: '$UNKNOWN'"] + + where: + debug | test + DISABLED | ENABLED + ENABLED | DISABLED + ENABLED | ENABLED + } + def "PBs eid permissions should affect only specified on source"() { given: "PBs with openx bidder" def pbsService = pbsServiceFactory.getService( From da905ddc11f65f7367732337f1ae77028eaa5e60 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Wed, 22 Jan 2025 15:31:11 +0200 Subject: [PATCH 2/3] Tests: Multiple Uids Cookies Support --- .../groovy/org/prebid/server/functional/tests/EidsSpec.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy index da74265a71d..2d3837af165 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy @@ -94,7 +94,7 @@ class EidsSpec extends BaseSpec { assert !bidderRequest.user.eids } - def "PBS eids shouldn't include warning for unknown bidder in request"() { + def "PBS eids shouldn't include warning for unknown bidder when test and debug disabled"() { given: "Default bid request with generic bidder" def sourceId = PBSUtils.randomString def eids = [new Eid(source: sourceId, uids: [new Uid(id: sourceId)])] From 69bf32c487a347ff9ca5ea1d625bbb467fb49f80 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Thu, 23 Jan 2025 19:32:00 +0200 Subject: [PATCH 3/3] update functional tests --- .../server/functional/tests/EidsSpec.groovy | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy index 2d3837af165..46b0ff2a5aa 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy @@ -26,6 +26,7 @@ import static org.prebid.server.functional.testcontainers.Dependencies.getNetwor class EidsSpec extends BaseSpec { private static final String EMPTY_STRING = "" + private static final String RANDOM_SOURCE_ID = PBSUtils.randomString def "PBS shouldn't populate user.id from user.ext data"() { given: "Default basic BidRequest with generic bidder" @@ -96,11 +97,9 @@ class EidsSpec extends BaseSpec { def "PBS eids shouldn't include warning for unknown bidder when test and debug disabled"() { given: "Default bid request with generic bidder" - def sourceId = PBSUtils.randomString - def eids = [new Eid(source: sourceId, uids: [new Uid(id: sourceId)])] def bidRequest = BidRequest.defaultBidRequest.tap { - user = new User(eids: eids) - ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: sourceId, bidders: [UNKNOWN])]) + user = requestUser + ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: RANDOM_SOURCE_ID, bidders: [UNKNOWN])]) it.ext.prebid.debug = DISABLED it.test = DISABLED } @@ -114,15 +113,19 @@ class EidsSpec extends BaseSpec { and: "Bid response shouldn't contain warning" assert !bidResponse.ext.warnings + + where: + requestUser << [new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)]), + new User(ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])), + new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)], + ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)]))] } def "PBS eids should include warning for unknown bidder when request in debug mode"() { given: "Default bid request with generic bidder" - def sourceId = PBSUtils.randomString - def eids = [new Eid(source: sourceId, uids: [new Uid(id: sourceId)])] def bidRequest = BidRequest.defaultBidRequest.tap { - user = new User(eids: eids) - ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: sourceId, bidders: [UNKNOWN])]) + user = requestUser + ext.prebid.data = new ExtRequestPrebidData(eidpermissions: [new EidPermission(source: RANDOM_SOURCE_ID, bidders: [UNKNOWN])]) it.ext.prebid.debug = debug it.test = test } @@ -140,10 +143,18 @@ class EidsSpec extends BaseSpec { ["request.ext.prebid.data.eidPermissions[].bidders[] unrecognized biddercode: '$UNKNOWN'"] where: - debug | test - DISABLED | ENABLED - ENABLED | DISABLED - ENABLED | ENABLED + debug | test | requestUser + DISABLED | ENABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)]) + DISABLED | ENABLED | new User(ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) + DISABLED | ENABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)], ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) + + ENABLED | DISABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)]) + ENABLED | DISABLED | new User(ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) + ENABLED | DISABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)], ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) + + ENABLED | ENABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)]) + ENABLED | ENABLED | new User(ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) + ENABLED | ENABLED | new User(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)], ext: new UserExt(eids: [Eid.getDefaultEid(RANDOM_SOURCE_ID)])) } def "PBs eid permissions should affect only specified on source"() {