Skip to content

Commit 136df25

Browse files
authored
Test: Buyeruid scrubbed metric (#3692)
* Add func tests for scrubbed metrics
1 parent b99d56d commit 136df25

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed

src/test/groovy/org/prebid/server/functional/tests/privacy/GdprAuctionSpec.groovy

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package org.prebid.server.functional.tests.privacy
33
import org.mockserver.model.Delay
44
import org.prebid.server.functional.model.ChannelType
55
import org.prebid.server.functional.model.config.AccountGdprConfig
6+
import org.prebid.server.functional.model.config.AccountMetricsConfig
7+
import org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel
68
import org.prebid.server.functional.model.config.PurposeConfig
79
import org.prebid.server.functional.model.config.PurposeEnforcement
810
import org.prebid.server.functional.model.pricefloors.Country
@@ -21,6 +23,8 @@ import java.time.Instant
2123
import static org.prebid.server.functional.model.ChannelType.PBJS
2224
import static org.prebid.server.functional.model.ChannelType.WEB
2325
import static org.prebid.server.functional.model.bidder.BidderName.GENERIC
26+
27+
import static org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel.DETAILED
2428
import static org.prebid.server.functional.model.config.Purpose.P1
2529
import static org.prebid.server.functional.model.config.Purpose.P2
2630
import static org.prebid.server.functional.model.config.Purpose.P4
@@ -960,4 +964,139 @@ class GdprAuctionSpec extends PrivacyBaseSpec {
960964
null | BULGARIA | null | null | [:]
961965
null | null | null | null | [:]
962966
}
967+
968+
def "PBS auction shouldn't update buyeruid scrubbed metrics when user.buyeruid not requested"() {
969+
given: "Default bid requests with personal data"
970+
def bidRequest = bidRequestWithPersonalData.tap {
971+
regs.gdpr = 1
972+
user.buyeruid = null
973+
user.ext.consent = new TcfConsent.Builder().build()
974+
ext.prebid.trace = VERBOSE
975+
}
976+
977+
and: "Save account config with requireConsent into DB"
978+
def purposes = [(P2): new PurposeConfig(enforcePurpose: NO, enforceVendors: false)]
979+
def accountGdprConfig = new AccountGdprConfig(purposes: purposes)
980+
def account = getAccountWithGdpr(bidRequest.accountId, accountGdprConfig).tap {
981+
config.metrics = new AccountMetricsConfig(verbosityLevel: verbosityLevel)
982+
}
983+
accountDao.save(account)
984+
985+
and: "Flush metric"
986+
flushMetrics(privacyPbsService)
987+
988+
when: "PBS processes auction requests"
989+
privacyPbsService.sendAuctionRequest(bidRequest)
990+
991+
then: "Bidder request should mask user personal data"
992+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
993+
verifyAll(bidderRequest.user) {
994+
!id
995+
!buyeruid
996+
!yob
997+
!gender
998+
!eids
999+
!data
1000+
!geo
1001+
!ext
1002+
!eids
1003+
!ext?.eids
1004+
}
1005+
1006+
and: "Metrics buyeruid scrubbed shouldn't be updated"
1007+
def metrics = privacyPbsService.sendCollectedMetricsRequest()
1008+
assert !metrics["adapter.${GENERIC.value}.requests.buyeruid_scrubbed"]
1009+
assert !metrics["account.${account.uuid}.adapter.${GENERIC.value}.requests.buyeruid_scrubbed"]
1010+
1011+
where:
1012+
verbosityLevel << [DETAILED, AccountMetricsVerbosityLevel.BASIC]
1013+
}
1014+
1015+
def "PBS auction should update buyeruid scrubbed general metrics when user.buyeruid requested and verbosityLevel BASIC"() {
1016+
given: "Default bid requests with personal data"
1017+
def bidRequest = bidRequestWithPersonalData.tap {
1018+
regs.gdpr = 1
1019+
user.ext.consent = new TcfConsent.Builder().build()
1020+
ext.prebid.trace = VERBOSE
1021+
}
1022+
1023+
and: "Save account config with requireConsent into DB"
1024+
def purposes = [(P2): new PurposeConfig(enforcePurpose: NO, enforceVendors: false)]
1025+
def accountGdprConfig = new AccountGdprConfig(purposes: purposes)
1026+
def account = getAccountWithGdpr(bidRequest.accountId, accountGdprConfig).tap {
1027+
config.metrics = new AccountMetricsConfig(verbosityLevel: AccountMetricsVerbosityLevel.BASIC)
1028+
}
1029+
accountDao.save(account)
1030+
1031+
and: "Flush metric"
1032+
flushMetrics(privacyPbsService)
1033+
1034+
when: "PBS processes auction requests"
1035+
privacyPbsService.sendAuctionRequest(bidRequest)
1036+
1037+
then: "Bidder request should mask user personal data"
1038+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
1039+
verifyAll(bidderRequest.user) {
1040+
!id
1041+
!buyeruid
1042+
!yob
1043+
!gender
1044+
!eids
1045+
!data
1046+
!geo
1047+
!ext
1048+
!eids
1049+
!ext?.eids
1050+
}
1051+
1052+
and: "Metrics buyeruid scrubbed should be updated"
1053+
def metrics = privacyPbsService.sendCollectedMetricsRequest()
1054+
assert metrics["adapter.${GENERIC.value}.requests.buyeruid_scrubbed"] == 1
1055+
1056+
and: "Account metric shouldn't be populated"
1057+
assert !metrics["account.${account.uuid}.adapter.${GENERIC.value}.requests.buyeruid_scrubbed"]
1058+
}
1059+
1060+
def "PBS auction should update buyeruid scrubbed general and account metrics when user.buyeruid requested and verbosityLevel DETAILED"() {
1061+
given: "Default bid requests with personal data"
1062+
def bidRequest = bidRequestWithPersonalData.tap {
1063+
regs.gdpr = 1
1064+
user.ext.consent = new TcfConsent.Builder().build()
1065+
ext.prebid.trace = VERBOSE
1066+
}
1067+
1068+
and: "Save account config with requireConsent into DB"
1069+
def purposes = [(P2): new PurposeConfig(enforcePurpose: NO, enforceVendors: false)]
1070+
def accountGdprConfig = new AccountGdprConfig(purposes: purposes)
1071+
def account = getAccountWithGdpr(bidRequest.accountId, accountGdprConfig).tap {
1072+
config.metrics = new AccountMetricsConfig(verbosityLevel: DETAILED)
1073+
}
1074+
accountDao.save(account)
1075+
1076+
and: "Flush metric"
1077+
flushMetrics(privacyPbsService)
1078+
1079+
when: "PBS processes auction requests"
1080+
privacyPbsService.sendAuctionRequest(bidRequest)
1081+
1082+
then: "Bidder request should mask user personal data"
1083+
def bidderRequest = bidder.getBidderRequest(bidRequest.id)
1084+
verifyAll(bidderRequest.user) {
1085+
!id
1086+
!buyeruid
1087+
!yob
1088+
!gender
1089+
!eids
1090+
!data
1091+
!geo
1092+
!ext
1093+
!eids
1094+
!ext?.eids
1095+
}
1096+
1097+
and: "Metrics buyeruid scrubbed should be updated"
1098+
def metrics = privacyPbsService.sendCollectedMetricsRequest()
1099+
assert metrics["adapter.${GENERIC.value}.requests.buyeruid_scrubbed"] == 1
1100+
assert metrics["account.${account.uuid}.adapter.${GENERIC.value}.requests.buyeruid_scrubbed"] == 1
1101+
}
9631102
}

0 commit comments

Comments
 (0)