diff --git a/src/test/groovy/org/prebid/server/functional/model/config/ActivityConfig.groovy b/src/test/groovy/org/prebid/server/functional/model/config/ActivityConfig.groovy index 14f19d03331..fbd7ba4b81b 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/ActivityConfig.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/ActivityConfig.groovy @@ -3,9 +3,9 @@ package org.prebid.server.functional.model.config import groovy.transform.ToString import org.prebid.server.functional.model.request.auction.ActivityType -import static org.prebid.server.functional.model.config.DataActivity.INVALID import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.GPC +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.INVALID @ToString(includeNames = true, ignoreNulls = true) class ActivityConfig { diff --git a/src/test/groovy/org/prebid/server/functional/model/config/ConfigCase.groovy b/src/test/groovy/org/prebid/server/functional/model/config/ConfigCase.groovy new file mode 100644 index 00000000000..f3dc523371c --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/model/config/ConfigCase.groovy @@ -0,0 +1,6 @@ +package org.prebid.server.functional.model.config + +enum ConfigCase { + + CAMEL_CASE, KEBAB_CASE, SNAKE_CASE +} diff --git a/src/test/groovy/org/prebid/server/functional/model/config/DataActivity.groovy b/src/test/groovy/org/prebid/server/functional/model/config/DataActivity.groovy deleted file mode 100644 index 64434cb67f7..00000000000 --- a/src/test/groovy/org/prebid/server/functional/model/config/DataActivity.groovy +++ /dev/null @@ -1,25 +0,0 @@ -package org.prebid.server.functional.model.config - -import com.fasterxml.jackson.annotation.JsonValue - -enum DataActivity { - - NOT_APPLICABLE(0), - NOTICE_PROVIDED(1), - NOTICE_NOT_PROVIDED(2), - NO_CONSENT(1), - CONSENT(2), - INVALID(-1), - - @JsonValue - final int dataActivityBits - - DataActivity(int dataActivityBits) { - this.dataActivityBits = dataActivityBits - } - - static DataActivity fromInt(int dataActivityBits) { - values().find { it.dataActivityBits == dataActivityBits } - ?: { throw new IllegalArgumentException("Invalid dataActivityBits: ${dataActivityBits}") } - } -} diff --git a/src/test/groovy/org/prebid/server/functional/model/config/EqualityValueRule.groovy b/src/test/groovy/org/prebid/server/functional/model/config/EqualityValueRule.groovy index 5e7cbf33476..0dd3acebe7d 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/EqualityValueRule.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/EqualityValueRule.groovy @@ -7,12 +7,13 @@ import com.fasterxml.jackson.databind.JsonDeserializer import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.annotation.JsonDeserialize import groovy.transform.ToString +import org.prebid.server.functional.model.privacy.gpp.GppDataActivity @ToString(includeNames = true, ignoreNulls = true) @JsonDeserialize(using = EqualityValueRuleDeserialize.class) class EqualityValueRule extends ValueRestrictedRule { - EqualityValueRule(UsNationalPrivacySection privacySection, DataActivity value) { + EqualityValueRule(UsNationalPrivacySection privacySection, GppDataActivity value) { super(privacySection, value) } @@ -22,7 +23,7 @@ class EqualityValueRule extends ValueRestrictedRule { EqualityValueRule deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException { JsonNode node = jsonParser.getCodec().readTree(jsonParser) def privacySection = UsNationalPrivacySection.valueFromText(node?.get(0)?.get(JSON_LOGIC_VALUE_FIELD)?.textValue()) - def value = DataActivity.fromInt(node?.get(1)?.asInt()) + def value = GppDataActivity.fromInt(node?.get(1)?.asInt()) return new EqualityValueRule(privacySection, value) } } diff --git a/src/test/groovy/org/prebid/server/functional/model/config/GppModuleConfig.groovy b/src/test/groovy/org/prebid/server/functional/model/config/GppModuleConfig.groovy index 7afeed64fa8..ea6899fbb25 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/GppModuleConfig.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/GppModuleConfig.groovy @@ -4,6 +4,10 @@ import com.fasterxml.jackson.annotation.JsonProperty import groovy.transform.ToString import org.prebid.server.functional.model.request.GppSectionId +import static org.prebid.server.functional.model.config.ConfigCase.CAMEL_CASE +import static org.prebid.server.functional.model.config.ConfigCase.KEBAB_CASE +import static org.prebid.server.functional.model.config.ConfigCase.SNAKE_CASE + @ToString(includeNames = true, ignoreNulls = true) class GppModuleConfig { @@ -31,31 +35,23 @@ class GppModuleConfig { static GppModuleConfig getDefaultModuleConfig(ActivityConfig activityConfig = ActivityConfig.configWithDefaultRestrictRules, List sids = [GppSectionId.US_NAT_V1], - Boolean normalizeFlags = true) { - new GppModuleConfig().tap { - it.activityConfig = [activityConfig] - it.sids = sids - it.normalizeFlags = normalizeFlags - } - } - - static GppModuleConfig getDefaultModuleConfigSnakeCase(ActivityConfig activityConfig = ActivityConfig.configWithDefaultRestrictRules, - List sids = [GppSectionId.US_NAT_V1], - Boolean normalizeFlags = true) { - new GppModuleConfig().tap { - it.activityConfigSnakeCase = [activityConfig] - it.sids = sids - it.normalizeFlagsSnakeCase = normalizeFlags - } - } - - static GppModuleConfig getDefaultModuleConfigKebabCase(ActivityConfig activityConfig = ActivityConfig.configWithDefaultRestrictRules, - List sids = [GppSectionId.US_NAT_V1], - Boolean normalizeFlags = true) { - new GppModuleConfig().tap { - it.activityConfigKebabCase = [activityConfig] - it.sids = sids - it.normalizeFlagsKebabCase = normalizeFlags + Boolean normalizeFlags = true, + ConfigCase configCase = CAMEL_CASE) { + new GppModuleConfig(sids: sids).tap { + switch (configCase) { + case CAMEL_CASE -> { + it.activityConfig = [activityConfig] + it.normalizeFlags = normalizeFlags + } + case KEBAB_CASE -> { + it.activityConfigKebabCase = [activityConfig] + it.normalizeFlagsKebabCase = normalizeFlags + } + case SNAKE_CASE -> { + it.activityConfigSnakeCase = [activityConfig] + it.normalizeFlagsSnakeCase = normalizeFlags + } + } } } } diff --git a/src/test/groovy/org/prebid/server/functional/model/config/InequalityValueRule.groovy b/src/test/groovy/org/prebid/server/functional/model/config/InequalityValueRule.groovy index b9fcfcb6d67..e65ecc3421e 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/InequalityValueRule.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/InequalityValueRule.groovy @@ -7,12 +7,13 @@ import com.fasterxml.jackson.databind.JsonDeserializer import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.annotation.JsonDeserialize import groovy.transform.ToString +import org.prebid.server.functional.model.privacy.gpp.GppDataActivity @ToString(includeNames = true, ignoreNulls = true) @JsonDeserialize(using = InequalityValueRuleDeserialize.class) class InequalityValueRule extends ValueRestrictedRule { - InequalityValueRule(UsNationalPrivacySection privacySection, DataActivity value) { + InequalityValueRule(UsNationalPrivacySection privacySection, GppDataActivity value) { super(privacySection, value) } @@ -22,7 +23,7 @@ class InequalityValueRule extends ValueRestrictedRule { InequalityValueRule deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException { JsonNode node = jsonParser.getCodec().readTree(jsonParser) def privacySection = UsNationalPrivacySection.valueFromText(node?.get(0)?.get(JSON_LOGIC_VALUE_FIELD)?.textValue()) - def value = DataActivity.fromInt(node?.get(1)?.asInt()) + def value = GppDataActivity.fromInt(node?.get(1)?.asInt()) return new InequalityValueRule(privacySection, value) } } diff --git a/src/test/groovy/org/prebid/server/functional/model/config/ValueRestrictedRule.groovy b/src/test/groovy/org/prebid/server/functional/model/config/ValueRestrictedRule.groovy index 0e2c0051c7e..913ae586a4c 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/ValueRestrictedRule.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/ValueRestrictedRule.groovy @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.JsonSerializer import com.fasterxml.jackson.databind.SerializerProvider import com.fasterxml.jackson.databind.annotation.JsonSerialize import groovy.transform.ToString +import org.prebid.server.functional.model.privacy.gpp.GppDataActivity @ToString(includeNames = true, ignoreNulls = true) @JsonSerialize(using = ValueRestrictedRuleSerializer.class) @@ -13,13 +14,13 @@ import groovy.transform.ToString abstract class ValueRestrictedRule { protected UsNationalPrivacySection privacySection - protected DataActivity value + protected GppDataActivity value protected static final String JSON_LOGIC_VALUE_FIELD = "var" - ValueRestrictedRule(UsNationalPrivacySection privacySection, DataActivity dataActivity) { + ValueRestrictedRule(UsNationalPrivacySection privacySection, GppDataActivity value) { this.privacySection = privacySection - this.value = dataActivity + this.value = value } static class ValueRestrictedRuleSerializer extends JsonSerializer { @@ -30,7 +31,7 @@ abstract class ValueRestrictedRule { jsonGenerator.writeStartObject() jsonGenerator.writeStringField(JSON_LOGIC_VALUE_FIELD, valueRestrictedRule.privacySection.value) jsonGenerator.writeEndObject() - jsonGenerator.writeObject(valueRestrictedRule.value.dataActivityBits) + jsonGenerator.writeObject(valueRestrictedRule.value.value) jsonGenerator.writeEndArray() } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/GppDataActivity.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/GppDataActivity.groovy index 36a015bde7d..2ca99595248 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/GppDataActivity.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/GppDataActivity.groovy @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonValue enum GppDataActivity { + INVALID(-1), NOT_APPLICABLE(0), NO_CONSENT(1), CONSENT(2) @@ -14,4 +15,9 @@ enum GppDataActivity { GppDataActivity(int value) { this.value = value } + + static GppDataActivity fromInt(int dataActivityBits) { + values().find { it.value == dataActivityBits } + ?: { throw new IllegalArgumentException("Invalid dataActivityBits: ${dataActivityBits}") } as GppDataActivity + } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsCaliforniaV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsCaliforniaV1ChildSensitiveData.groovy index 92b9ddcc8db..8a456a5fb72 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsCaliforniaV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsCaliforniaV1ChildSensitiveData.groovy @@ -1,29 +1,20 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsCaliforniaV1ChildSensitiveData { - GppDataActivity childUnder13 - GppDataActivity childFrom13to16 + GppDataActivity toSellUnder16 + GppDataActivity toShareUnder16 static UsCaliforniaV1ChildSensitiveData getDefault(GppDataActivity childUnder13 = GppDataActivity.NOT_APPLICABLE, GppDataActivity childFrom13to16 = GppDataActivity.NOT_APPLICABLE) { new UsCaliforniaV1ChildSensitiveData().tap { - it.childUnder13 = childUnder13 - it.childFrom13to16 = childFrom13to16 - } - } - - static UsCaliforniaV1ChildSensitiveData getRandom(List excludedActivities) { - new UsCaliforniaV1ChildSensitiveData().tap { - it.childUnder13 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom13to16 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) + it.toSellUnder16 = childUnder13 + it.toShareUnder16 = childFrom13to16 } } List getContentList() { - [childFrom13to16, childUnder13]*.value.collect { it ?: 0 } + [toShareUnder16, toSellUnder16]*.value.collect { it ?: 0 } } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsColoradoV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsColoradoV1ChildSensitiveData.groovy index 72d40a316ad..659d514a9f0 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsColoradoV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsColoradoV1ChildSensitiveData.groovy @@ -1,7 +1,5 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsColoradoV1ChildSensitiveData { GppDataActivity childSensitive @@ -12,12 +10,6 @@ class UsColoradoV1ChildSensitiveData { } } - static UsColoradoV1ChildSensitiveData getRandom(List excludedActivities) { - new UsColoradoV1ChildSensitiveData().tap { - it.childSensitive = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - } - } - Integer getContentList() { this.childSensitive.value } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsConnecticutV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsConnecticutV1ChildSensitiveData.groovy index 78ec426efb5..0c9e2eae97c 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsConnecticutV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsConnecticutV1ChildSensitiveData.groovy @@ -1,12 +1,10 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsConnecticutV1ChildSensitiveData { GppDataActivity childUnder13 GppDataActivity childFrom13to16 - GppDataActivity childFrom16to18 + GppDataActivity childFrom13to16Targeted static UsConnecticutV1ChildSensitiveData getDefault(GppDataActivity childUnder13 = GppDataActivity.NOT_APPLICABLE, GppDataActivity childFrom13to16 = GppDataActivity.NOT_APPLICABLE, @@ -15,19 +13,11 @@ class UsConnecticutV1ChildSensitiveData { new UsConnecticutV1ChildSensitiveData().tap { it.childUnder13 = childUnder13 it.childFrom13to16 = childFrom13to16 - it.childFrom16to18 = childFrom16to18 - } - } - - static UsConnecticutV1ChildSensitiveData getRandom(List excludedActivities = []) { - new UsConnecticutV1ChildSensitiveData().tap { - it.childUnder13 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom13to16 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom16to18 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) + it.childFrom13to16Targeted = childFrom16to18 } } List getContentList() { - [childFrom13to16, childUnder13, childFrom16to18]*.value.collect { it ?: 0 } + [childUnder13, childFrom13to16, childFrom13to16Targeted]*.value.collect { it ?: 0 } } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV1ChildSensitiveData.groovy index ab2edc1d8ce..5a1c3fae625 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV1ChildSensitiveData.groovy @@ -1,7 +1,5 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsNationalV1ChildSensitiveData { GppDataActivity childUnder13 @@ -16,13 +14,6 @@ class UsNationalV1ChildSensitiveData { } } - static UsNationalV1ChildSensitiveData getRandom(List excludedActivities) { - new UsNationalV1ChildSensitiveData().tap { - it.childUnder13 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom13to16 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - } - } - List getContentList() { [childFrom13to16, childUnder13]*.value.collect { it ?: 0 } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV2ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV2ChildSensitiveData.groovy index 5edbd69b4d0..aaf325b93aa 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV2ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsNationalV2ChildSensitiveData.groovy @@ -1,7 +1,5 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsNationalV2ChildSensitiveData extends UsNationalV1ChildSensitiveData { GppDataActivity childFrom16to17 @@ -17,14 +15,6 @@ class UsNationalV2ChildSensitiveData extends UsNationalV1ChildSensitiveData { } } - static UsNationalV2ChildSensitiveData getRandom(List excludedActivities) { - new UsNationalV2ChildSensitiveData().tap { - it.childUnder13 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom13to16 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - it.childFrom16to17 = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - } - } - List getContentList() { [childFrom13to16, childUnder13, childFrom16to17]*.value.collect { it ?: 0 } } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsUtahV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsUtahV1ChildSensitiveData.groovy index 063899d850c..f0557652782 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsUtahV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsUtahV1ChildSensitiveData.groovy @@ -1,7 +1,5 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsUtahV1ChildSensitiveData { GppDataActivity childSensitive @@ -13,12 +11,6 @@ class UsUtahV1ChildSensitiveData { } } - static UsUtahV1ChildSensitiveData getRandom(List excludedActivities) { - new UsUtahV1ChildSensitiveData().tap { - it.childSensitive = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - } - } - Integer getContentList() { childSensitive.value } diff --git a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsVirginiaV1ChildSensitiveData.groovy b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsVirginiaV1ChildSensitiveData.groovy index 2cffb109ec9..4be70d3739d 100644 --- a/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsVirginiaV1ChildSensitiveData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/privacy/gpp/UsVirginiaV1ChildSensitiveData.groovy @@ -1,7 +1,5 @@ package org.prebid.server.functional.model.privacy.gpp -import org.prebid.server.functional.util.PBSUtils - class UsVirginiaV1ChildSensitiveData { GppDataActivity childSensitive @@ -13,12 +11,6 @@ class UsVirginiaV1ChildSensitiveData { } } - static UsVirginiaV1ChildSensitiveData getRandom(List excludedActivities = []) { - new UsVirginiaV1ChildSensitiveData().tap { - it.childSensitive = PBSUtils.getRandomEnum(GppDataActivity, excludedActivities) - } - } - Integer getContentList() { childSensitive.value } 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 8b9f0f5e4ad..d292bd9e6f1 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 @@ -8,15 +8,9 @@ import org.prebid.server.functional.model.config.InequalityValueRule import org.prebid.server.functional.model.config.LogicalRestrictedRule import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.db.StoredRequest -import org.prebid.server.functional.model.privacy.gpp.GppDataActivity import org.prebid.server.functional.model.privacy.gpp.MspaMode -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.auction.Activity import org.prebid.server.functional.model.request.auction.ActivityRule @@ -34,18 +28,14 @@ import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData import org.prebid.server.functional.util.privacy.gpp.v2.UsNatV2Consent import java.time.Instant import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED -import static org.prebid.server.functional.model.config.DataActivity.CONSENT -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_NOT_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOT_APPLICABLE -import static org.prebid.server.functional.model.config.DataActivity.NO_CONSENT +import static org.prebid.server.functional.model.config.ConfigCase.CAMEL_CASE +import static org.prebid.server.functional.model.config.ConfigCase.KEBAB_CASE +import static org.prebid.server.functional.model.config.ConfigCase.SNAKE_CASE import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.AND import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.CHILD_CONSENTS_BELOW_13 @@ -66,11 +56,14 @@ import static org.prebid.server.functional.model.config.UsNationalPrivacySection import static org.prebid.server.functional.model.config.UsNationalPrivacySection.SHARING_NOTICE import static org.prebid.server.functional.model.pricefloors.Country.CAN import static org.prebid.server.functional.model.pricefloors.Country.USA -import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.ACCOUNT_PROCESSED_RULES_COUNT -import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.PROCESSED_ACTIVITY_RULES_COUNT +import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.CONSENT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NOT_APPLICABLE +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NO_CONSENT import static org.prebid.server.functional.model.request.GppSectionId.USP_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 @@ -704,55 +697,55 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { gppConsent << [ new UsNatV2Consent.Builder().setSensitiveDataProcessing( new UsNationalV2SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT, - consumerHealthData: GppDataActivity.CONSENT, - crimeVictim: GppDataActivity.CONSENT, - nationalOrigin: GppDataActivity.CONSENT, - transgenderStatus: GppDataActivity.CONSENT + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT, + consumerHealthData: CONSENT, + crimeVictim: CONSENT, + nationalOrigin: CONSENT, + transgenderStatus: CONSENT )), new UsNatV2Consent.Builder().setSensitiveDataProcessing( new UsNationalV2SensitiveData( - racialEthnicOrigin: GppDataActivity.NO_CONSENT, - religiousBeliefs: GppDataActivity.NO_CONSENT, - healthInfo: GppDataActivity.NO_CONSENT, - orientation: GppDataActivity.NO_CONSENT, - citizenshipStatus: GppDataActivity.NO_CONSENT, - unionMembership: GppDataActivity.NO_CONSENT, - consumerHealthData: GppDataActivity.NO_CONSENT, - nationalOrigin: GppDataActivity.NO_CONSENT + racialEthnicOrigin: NO_CONSENT, + religiousBeliefs: NO_CONSENT, + healthInfo: NO_CONSENT, + orientation: NO_CONSENT, + citizenshipStatus: NO_CONSENT, + unionMembership: NO_CONSENT, + consumerHealthData: NO_CONSENT, + nationalOrigin: NO_CONSENT )), new UsNatV2Consent.Builder().setSensitiveDataProcessing( new UsNationalV2SensitiveData( - geneticId: GppDataActivity.NO_CONSENT, - biometricId: GppDataActivity.NO_CONSENT, - idNumbers: GppDataActivity.NO_CONSENT, - accountInfo: GppDataActivity.NO_CONSENT, - communicationContents: GppDataActivity.NO_CONSENT, - crimeVictim: GppDataActivity.NO_CONSENT, - transgenderStatus: GppDataActivity.NO_CONSENT + geneticId: NO_CONSENT, + biometricId: NO_CONSENT, + idNumbers: NO_CONSENT, + accountInfo: NO_CONSENT, + communicationContents: NO_CONSENT, + crimeVictim: NO_CONSENT, + transgenderStatus: NO_CONSENT )), new UsNatV2Consent.Builder().setSensitiveDataProcessing( new UsNationalV2SensitiveData( - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT, - crimeVictim: GppDataActivity.CONSENT, - transgenderStatus: GppDataActivity.CONSENT + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + communicationContents: CONSENT, + crimeVictim: CONSENT, + transgenderStatus: CONSENT )), new UsNatV2Consent.Builder().setKnownChildSensitiveDataConsents( - new UsNationalV2ChildSensitiveData(childFrom16to17: GppDataActivity.NO_CONSENT)) + new UsNationalV2ChildSensitiveData(childFrom16to17: NO_CONSENT)) ] } @@ -846,6 +839,8 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { def activities = AllowActivities.getDefaultAllowActivities(FETCH_BIDS, Activity.getDefaultActivity([rule])) and: "Account gpp configuration with sid skip" + def activityConfig = new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(operator, rulesList)) + def accountLogic = GppModuleConfig.getDefaultModuleConfig(activityConfig, [US_NAT_V1], false, caseType) def accountGppConfig = new AccountGppConfig().tap { it.code = IAB_US_CUSTOM_LOGIC it.enabled = true @@ -863,16 +858,21 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { assert bidder.getBidderRequest(bidRequest.id) where: - gpcValue | accountLogic - false | GppModuleConfig.getDefaultModuleConfig(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfig(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfig(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)])), [US_NAT_V1], false) - false | GppModuleConfig.getDefaultModuleConfigKebabCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfigKebabCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfigKebabCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)])), [US_NAT_V1], false) - false | GppModuleConfig.getDefaultModuleConfigSnakeCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfigSnakeCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)])), [US_NAT_V1], false) - true | GppModuleConfig.getDefaultModuleConfigSnakeCase(new ActivityConfig([FETCH_BIDS], LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)])), [US_NAT_V1], false) + gpcValue | operator | caseType | rulesList + false | OR | CAMEL_CASE | [new EqualityValueRule(GPC, NO_CONSENT)] + true | OR | CAMEL_CASE | [new InequalityValueRule(GPC, NO_CONSENT)] + true | AND | CAMEL_CASE | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)] + + false | OR | KEBAB_CASE | [new EqualityValueRule(GPC, NO_CONSENT)] + true | OR | KEBAB_CASE | [new InequalityValueRule(GPC, NO_CONSENT)] + true | AND | KEBAB_CASE | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)] + + false | OR | SNAKE_CASE | [new EqualityValueRule(GPC, NO_CONSENT)] + true | OR | SNAKE_CASE | [new InequalityValueRule(GPC, NO_CONSENT)] + true | AND | SNAKE_CASE | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)] } def "PBS auction call when privacy regulation match custom requirement should ignore call to bidder"() { @@ -909,14 +909,14 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { assert bidder.getBidderRequests(bidRequest.id).size() == 0 where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS auction call when custom privacy regulation empty and normalize is disabled should process request and emit error log"() { @@ -974,7 +974,7 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = BidRequest.defaultBidRequest.tap { regs.gppSid = [gppSid.intValue] - regs.gpp = gppStateConsent.build() + regs.gpp = gppStateConsent setAccountId(accountId) } @@ -1006,51 +1006,123 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS amp call when bidder allowed in activities should process bid request and proper metrics and update processed metrics"() { @@ -1587,10 +1659,10 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS amp call when privacy regulation match custom requirement should ignore call to bidder"() { @@ -1637,14 +1709,14 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { assert !bidder.getBidderRequests(ampStoredRequest.id).size() where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS amp call when custom privacy regulation empty and normalize is disabled should process request and emit error log"() { @@ -1717,7 +1789,7 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { def ampRequest = AmpRequest.defaultAmpRequest.tap { it.account = accountId it.gppSid = gppSid.intValue - it.consentString = gppStateConsent.build() + it.consentString = gppStateConsent it.consentType = GPP } @@ -1756,50 +1828,122 @@ class GppFetchBidActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppSyncUserActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppSyncUserActivitiesSpec.groovy index 3392bcf1bfd..87d23a3d740 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/GppSyncUserActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/GppSyncUserActivitiesSpec.groovy @@ -12,17 +12,10 @@ import org.prebid.server.functional.model.config.GppModuleConfig import org.prebid.server.functional.model.config.InequalityValueRule import org.prebid.server.functional.model.config.LogicalRestrictedRule import org.prebid.server.functional.model.db.Account -import org.prebid.server.functional.model.privacy.gpp.GppDataActivity import org.prebid.server.functional.model.privacy.gpp.MspaMode import org.prebid.server.functional.model.privacy.gpp.Notice import org.prebid.server.functional.model.privacy.gpp.OptOut -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsNationalV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData import org.prebid.server.functional.model.request.auction.Activity import org.prebid.server.functional.model.request.auction.ActivityRule import org.prebid.server.functional.model.request.auction.AllowActivities @@ -37,18 +30,11 @@ import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData import org.prebid.server.functional.util.privacy.gpp.v2.UsNatV2Consent import java.time.Instant import static org.prebid.server.functional.model.bidder.BidderName.GENERIC -import static org.prebid.server.functional.model.config.DataActivity.CONSENT -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_NOT_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOT_APPLICABLE -import static org.prebid.server.functional.model.config.DataActivity.NO_CONSENT import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.AND import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.CHILD_CONSENTS_BELOW_13 @@ -72,6 +58,10 @@ import static org.prebid.server.functional.model.pricefloors.Country.USA import static org.prebid.server.functional.model.privacy.Metric.PROCESSED_ACTIVITY_RULES_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.CONSENT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NOT_APPLICABLE +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NO_CONSENT +import static org.prebid.server.functional.model.privacy.gpp.UsNationalV1ChildSensitiveData.getDefault import static org.prebid.server.functional.model.request.GppSectionId.USP_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 @@ -129,8 +119,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: "Activities fields name in different case" activities << [AllowActivities.getDefaultAllowActivities(SYNC_USER, Activity.defaultActivity), new AllowActivities().tap { syncUserKebabCase = Activity.defaultActivity }, - new AllowActivities().tap { syncUserKebabCase = Activity.defaultActivity }, - ] + new AllowActivities().tap { syncUserKebabCase = Activity.defaultActivity },] } def "PBS cookie sync call when bidder rejected in activities should exclude bidders URLs with proper message and update disallowed metrics"() { @@ -161,8 +150,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: "Activities fields name in different case" activities << [AllowActivities.getDefaultAllowActivities(SYNC_USER, Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)])), new AllowActivities().tap { syncUserKebabCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) }, - new AllowActivities().tap { syncUserKebabCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) }, - ] + new AllowActivities().tap { syncUserKebabCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) },] } def "PBS cookie sync call when default activity setting set to false should exclude bidders URLs"() { @@ -413,66 +401,64 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert !response.bidderStatus.userSync.url where: - disallowGppLogic << [ - SIMPLE_GPC_DISALLOW_LOGIC, - new UsNatV1Consent.Builder() - .setMspaServiceProviderMode(MspaMode.YES) - .setMspaOptOutOptionMode(MspaMode.NO) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) - .build(), - new UsNatV1Consent.Builder() - .setSharingNotice(Notice.NOT_PROVIDED) - .setSharingOptOutNotice(Notice.PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setSharingNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) - .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build() - ] + disallowGppLogic << [SIMPLE_GPC_DISALLOW_LOGIC, + new UsNatV1Consent.Builder() + .setMspaServiceProviderMode(MspaMode.YES) + .setMspaOptOutOptionMode(MspaMode.NO) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(NOT_APPLICABLE, NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(NO_CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setPersonalDataConsents(CONSENT) + .build(), + new UsNatV1Consent.Builder() + .setSharingNotice(Notice.NOT_PROVIDED) + .setSharingOptOutNotice(Notice.PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setSharingNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) + .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build()] } def "PBS cookie sync call should exclude bidders URLs when privacy module contain opt out of disallow GPP logic"() { @@ -505,17 +491,15 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert !response.bidderStatus.userSync.url where: - disallowGppLogic << [ - new UsNatV2Consent.Builder() - .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.DID_NOT_OPT_OUT) - .build() - ] + disallowGppLogic << [new UsNatV2Consent.Builder() + .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.DID_NOT_OPT_OUT) + .build()] } def "PBS cookie sync call should exclude bidders URLs when privacy module contain disallow child sensitive data logic US nat v2 validation"() { @@ -526,7 +510,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { it.account = accountId it.gpp = new UsNatV2Consent.Builder() .setKnownChildSensitiveDataConsents(usNationalV2ChildSensitiveData) - .build() + .build() } and: "Activities set for cookie sync with allowing privacy regulation" @@ -550,11 +534,9 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert !response.bidderStatus.userSync.url where: - usNationalV2ChildSensitiveData << [ - new UsNationalV2ChildSensitiveData(childUnder13: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom13to16: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom16to17: GppDataActivity.NO_CONSENT) - ] + usNationalV2ChildSensitiveData << [new UsNationalV2ChildSensitiveData(childUnder13: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom13to16: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom16to17: NO_CONSENT)] } def "PBS cookie sync call should respond with required bidder URL and emit error log when privacy module contain invalid GPP segment"() { @@ -677,13 +659,13 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert !response.bidderStatus.userSync.url where: - gppConsent | gppSid + gppConsent | gppSid new UsNatV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_NAT_V1 - new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 - new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 - new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 - new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 - new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 + new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 + new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 + new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 + new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 + new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 } def "PBS cookie sync call when privacy modules contain allowing settings should include proper responded with bidders URLs"() { @@ -869,10 +851,10 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS cookie sync when privacy regulation match custom requirement should exclude bidders URLs"() { @@ -909,14 +891,14 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert !response.bidderStatus.userSync.url where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS cookie sync call when custom privacy regulation empty and normalize is disabled should respond with an error and update metric"() { @@ -974,7 +956,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.gppSid = gppSid.intValue it.account = accountId - it.gpp = gppStateConsent.build() + it.gpp = gppStateConsent } and: "Activities set for transmit ufpd with allowing privacy regulation" @@ -1005,51 +987,123 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS setuid request when bidder allowed in activities should respond with valid bidders UIDs cookies and update processed metrics"() { @@ -1399,66 +1453,64 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert exception.responseBody == INVALID_STATUS_MESSAGE where: - disallowGppLogic << [ - SIMPLE_GPC_DISALLOW_LOGIC, - new UsNatV1Consent.Builder() - .setMspaServiceProviderMode(MspaMode.YES) - .setMspaOptOutOptionMode(MspaMode.NO) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) - .build(), - new UsNatV1Consent.Builder() - .setSharingNotice(Notice.NOT_PROVIDED) - .setSharingOptOutNotice(Notice.PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setSharingNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) - .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build() - ] + disallowGppLogic << [SIMPLE_GPC_DISALLOW_LOGIC, + new UsNatV1Consent.Builder() + .setMspaServiceProviderMode(MspaMode.YES) + .setMspaOptOutOptionMode(MspaMode.NO) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(NOT_APPLICABLE, NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(getDefault(NO_CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setPersonalDataConsents(CONSENT) + .build(), + new UsNatV1Consent.Builder() + .setSharingNotice(Notice.NOT_PROVIDED) + .setSharingOptOutNotice(Notice.PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setSharingNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) + .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build()] } def "PBS setuid request should reject bidders with status code invalidStatusCode when privacy module contain opt out of disallow GPP UsNat v2 logic"() { @@ -1496,17 +1548,15 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert exception.responseBody == INVALID_STATUS_MESSAGE where: - disallowGppLogic << [ - new UsNatV2Consent.Builder() - .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.DID_NOT_OPT_OUT) - .build() - ] + disallowGppLogic << [new UsNatV2Consent.Builder() + .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.DID_NOT_OPT_OUT) + .build()] } def "PBS setuid request when privacy module contain invalid GPP segment should respond with valid bidders UIDs cookies"() { @@ -1635,13 +1685,13 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert exception.responseBody == INVALID_STATUS_MESSAGE where: - gppConsent | gppSid + gppConsent | gppSid new UsNatV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_NAT_V1 - new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 - new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 - new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 - new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 - new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 + new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 + new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 + new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 + new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 + new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 } def "PBS setuid request when privacy modules contain allowing settings should respond with valid bidders UIDs cookies"() { @@ -1677,8 +1727,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: accountGppConfig << [ new AccountGppConfig(code: IAB_US_GENERAL, enabled: false), - new AccountGppConfig(code: IAB_US_GENERAL, config: new GppModuleConfig(skipSids: [US_NAT_V1]), enabled: true), - + new AccountGppConfig(code: IAB_US_GENERAL, config: new GppModuleConfig(skipSids: [US_NAT_V1]), enabled: true) ] } @@ -1841,10 +1890,10 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS setuid call when privacy regulation match custom requirement should reject bidders with status code invalidStatusCode"() { @@ -1886,14 +1935,14 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { assert exception.responseBody == INVALID_STATUS_MESSAGE where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS setuid call when custom privacy regulation empty and normalize is disabled should respond with required UIDs cookies"() { @@ -1954,7 +2003,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def setuidRequest = SetuidRequest.defaultSetuidRequest.tap { it.gppSid = gppSid.intValue it.account = accountId - it.gpp = gppStateConsent.build() + it.gpp = gppStateConsent } and: "UIDs cookies" @@ -1990,58 +2039,129 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS cookie sync should process rule when geo doesn't intersection"() { given: "Pbs config with geo location" - def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + - ["geolocation.configurations.geo-info.[0].country": countyConfig, - "geolocation.configurations.geo-info.[0].region" : regionConfig] + def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + ["geolocation.configurations.geo-info.[0].country": countyConfig, + "geolocation.configurations.geo-info.[0].region" : regionConfig] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Cookie sync request with account connection" @@ -2095,9 +2215,8 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def "PBS setuid should process rule when geo doesn't intersection"() { given: "Pbs config with geo location" - def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + - ["geolocation.configurations.[0].geo-info.country": countyConfig, - "geolocation.configurations.[0].geo-info.region" : regionConfig] + def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + ["geolocation.configurations.[0].geo-info.country": countyConfig, + "geolocation.configurations.[0].geo-info.region" : regionConfig] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Default set uid request" @@ -2154,9 +2273,8 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def "PBS cookie sync should disallowed rule when device.geo intersection"() { given: "Pbs config with geo location" - def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + - ["geolocation.configurations.[0].geo-info.country": countyConfig, - "geolocation.configurations.[0].geo-info.region" : regionConfig] + def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + ["geolocation.configurations.[0].geo-info.country": countyConfig, + "geolocation.configurations.[0].geo-info.region" : regionConfig] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Cookie sync request with account connection" @@ -2209,9 +2327,8 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def "PBS setuid should disallowed rule when device.geo intersection"() { given: "Pbs config with geo location" - def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + - ["geolocation.configurations.[0].geo-info.country": countyConfig, - "geolocation.configurations.[0].geo-info.region" : regionConfig] + def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + ["geolocation.configurations.[0].geo-info.country": countyConfig, + "geolocation.configurations.[0].geo-info.region" : regionConfig] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Default set uid request" @@ -2263,9 +2380,8 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def "PBS cookie sync should fetch geo once when gpp sync user and account require geo look up"() { given: "Pbs config with geo location" - def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + - ["geolocation.configurations.[0].geo-info.country": USA.ISOAlpha3, - "geolocation.configurations.[0].geo-info.region" : ALABAMA.abbreviation] + def pbsConfig = GENERAL_PRIVACY_CONFIG + GEO_LOCATION + ["geolocation.configurations.[0].geo-info.country": USA.ISOAlpha3, + "geolocation.configurations.[0].geo-info.region" : ALABAMA.abbreviation] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Cookie sync request with account connection" @@ -2323,7 +2439,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.gppSid = US_NAT_V1.value it.account = accountId - it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for cookie sync with allowing privacy regulation" @@ -2356,7 +2472,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.gppSid = US_NAT_V1.value it.account = accountId - it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for cookie sync with allowing privacy regulation" @@ -2408,7 +2524,7 @@ class GppSyncUserActivitiesSpec extends PrivacyBaseSpec { def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.gppSid = US_NAT_V1.value it.account = accountId - it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + it.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for cookie sync with allowing privacy regulation" 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 4579ea1f7b6..1db77ef0b90 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 @@ -7,16 +7,11 @@ import org.prebid.server.functional.model.config.GppModuleConfig import org.prebid.server.functional.model.config.InequalityValueRule import org.prebid.server.functional.model.config.LogicalRestrictedRule import org.prebid.server.functional.model.db.StoredRequest -import org.prebid.server.functional.model.privacy.gpp.GppDataActivity import org.prebid.server.functional.model.privacy.gpp.MspaMode import org.prebid.server.functional.model.privacy.gpp.Notice import org.prebid.server.functional.model.privacy.gpp.OptOut -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsNationalV1SensitiveData import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.auction.Activity import org.prebid.server.functional.model.request.auction.ActivityRule @@ -33,19 +28,11 @@ import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsNationalV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData import org.prebid.server.functional.util.privacy.gpp.v2.UsNatV2Consent import java.time.Instant import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED -import static org.prebid.server.functional.model.config.DataActivity.CONSENT -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_NOT_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOT_APPLICABLE -import static org.prebid.server.functional.model.config.DataActivity.NO_CONSENT import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.AND import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.CHILD_CONSENTS_BELOW_13 @@ -71,6 +58,9 @@ import static org.prebid.server.functional.model.privacy.Metric.PROCESSED_ACTIVI import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.CONSENT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NOT_APPLICABLE +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NO_CONSENT import static org.prebid.server.functional.model.request.GppSectionId.USP_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 @@ -119,8 +109,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: "Activities fields name in different case" activities << [AllowActivities.getDefaultAllowActivities(TRANSMIT_EIDS, Activity.defaultActivity), new AllowActivities().tap { transmitEidsKebabCase = Activity.defaultActivity }, - new AllowActivities().tap { transmitEidsSnakeCase = Activity.defaultActivity }, - ] + new AllowActivities().tap { transmitEidsSnakeCase = Activity.defaultActivity },] } def "PBS auction call when transmit EIDS activities is rejecting requests should remove EIDS fields in request and update disallowed metrics"() { @@ -155,8 +144,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: "Activities fields name in different case" activities << [AllowActivities.getDefaultAllowActivities(TRANSMIT_EIDS, Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)])), new AllowActivities().tap { transmitEidsSnakeCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) }, - new AllowActivities().tap { transmitEidsKebabCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) }, - ] + new AllowActivities().tap { transmitEidsKebabCase = Activity.getDefaultActivity([ActivityRule.getDefaultActivityRule(Condition.baseCondition, false)]) },] } def "PBS auction call when default activity setting set to false should remove EIDS fields from request"() { @@ -205,8 +193,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { then: "Logs should contain error" def logs = activityPbsService.getLogsByTime(startTime) - assert getLogsByText(logs, "Activity configuration for account ${accountId} " + - "contains conditional rule with empty array").size() == 1 + assert getLogsByText(logs, "Activity configuration for account ${accountId} " + "contains conditional rule with empty array").size() == 1 where: conditions | isAllowed @@ -688,126 +675,126 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - disallowGppLogic << [ - SIMPLE_GPC_DISALLOW_LOGIC, - new UsNatV1Consent.Builder() - .setMspaServiceProviderMode(MspaMode.YES) - .setMspaOptOutOptionMode(MspaMode.NO) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingNotice(Notice.NOT_PROVIDED) - .setSharingOptOutNotice(Notice.PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setSharingNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) - .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) - .build(), - new UsNatV1Consent.Builder() - .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) - .build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.NO_CONSENT, - religiousBeliefs: GppDataActivity.NO_CONSENT, - healthInfo: GppDataActivity.NO_CONSENT, - orientation: GppDataActivity.NO_CONSENT, - citizenshipStatus: GppDataActivity.NO_CONSENT, - unionMembership: GppDataActivity.NO_CONSENT, - )).build(), - new UsNatV1Consent.Builder() - .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), - new UsNatV1Consent.Builder() - .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.NO_CONSENT, - biometricId: GppDataActivity.NO_CONSENT, - idNumbers: GppDataActivity.NO_CONSENT, - accountInfo: GppDataActivity.NO_CONSENT, - communicationContents: GppDataActivity.NO_CONSENT - )).build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build() - ] + disallowGppLogic << [SIMPLE_GPC_DISALLOW_LOGIC, + new UsNatV1Consent.Builder() + .setMspaServiceProviderMode(MspaMode.YES) + .setMspaOptOutOptionMode(MspaMode.NO) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingNotice(Notice.NOT_PROVIDED) + .setSharingOptOutNotice(Notice.PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setSharingNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) + .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setPersonalDataConsents(CONSENT) + .build(), + new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: NO_CONSENT, + religiousBeliefs: NO_CONSENT, + healthInfo: NO_CONSENT, + orientation: NO_CONSENT, + citizenshipStatus: NO_CONSENT, + unionMembership: NO_CONSENT,)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + geneticId: NO_CONSENT, + biometricId: NO_CONSENT, + idNumbers: NO_CONSENT, + accountInfo: NO_CONSENT, + communicationContents: NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + communicationContents: CONSENT)) + .build()] } def "PBS auction call should remove EIDS fields in request when privacy module contain opt out of disallow GPP UsNat v2 logic"() { @@ -842,20 +829,18 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { !genericBidderRequest.user?.ext?.eids } where: - disallowGppLogic << [ - new UsNatV2Consent.Builder() - .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.OPTED_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) - .build() - ] + disallowGppLogic << [new UsNatV2Consent.Builder() + .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.OPTED_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) + .build()] } def "PBS auction call shouldn't remove EIDS fields in request and emit error log when privacy module contain invalid GPP segment"() { @@ -907,8 +892,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { and: "Logs should contain error" def logs = activityPbsService.getLogsByTime(startTime) - assert getLogsByText(logs, "UsNat privacy module creation failed: Unable to decode UsNatCoreSegment " + - "'${INVALID_GPP_SEGMENT}'. Activity: TRANSMIT_EIDS. Section: ${US_NAT_V1.value}. Gpp: $INVALID_GPP_STRING").size() == 1 + assert getLogsByText(logs, "UsNat privacy module creation failed: Unable to decode UsNatCoreSegment " + "'${INVALID_GPP_SEGMENT}'. Activity: TRANSMIT_EIDS. Section: ${US_NAT_V1.value}. Gpp: $INVALID_GPP_STRING").size() == 1 } def "PBS auction call when privacy module contain invalid GPP string shouldn't remove EIDS fields in request and emit warning in response"() { @@ -989,13 +973,13 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | gppSid + gppConsent | gppSid new UsNatV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_NAT_V1 - new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 - new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 - new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 - new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 - new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 + new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 + new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 + new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 + new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 + new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 } def "PBS auction call when privacy modules contain allowing settings should leave EIDS fields in request"() { @@ -1182,10 +1166,10 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS auction call when privacy regulation match custom requirement should remove EIDS fields in request"() { @@ -1225,14 +1209,14 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS auction call when custom privacy regulation empty and normalize is disabled should leave EIDS fields in request and emit error log"() { @@ -1297,7 +1281,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def bidRequest = getBidRequestWithPersonalData(accountId).tap { ext.prebid.trace = VERBOSE regs.gppSid = [gppSid.intValue] - regs.gpp = gppStateConsent.build() + regs.gpp = gppStateConsent } and: "Activities set with privacy regulation" @@ -1332,51 +1316,123 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS amp call when transmit EIDS activities is allowing request should leave EIDS fields field in active request and update proper metrics"() { @@ -1520,8 +1576,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { then: "Logs should contain error" def logs = activityPbsService.getLogsByTime(startTime) - assert getLogsByText(logs, "Activity configuration for account ${accountId} " + - "contains conditional rule with empty array").size() == 1 + assert getLogsByText(logs, "Activity configuration for account ${accountId} " + "contains conditional rule with empty array").size() == 1 where: conditions | isAllowed @@ -1777,126 +1832,127 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - disallowGppLogic << [ - SIMPLE_GPC_DISALLOW_LOGIC, - new UsNatV1Consent.Builder() - .setMspaServiceProviderMode(MspaMode.YES) - .setMspaOptOutOptionMode(MspaMode.NO) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSaleOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingNotice(Notice.NOT_PROVIDED) - .setSharingOptOutNotice(Notice.PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .setSharingOptOut(OptOut.OPTED_OUT) - .setSharingNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) - .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) - .setSaleOptOut(OptOut.OPTED_OUT) - .setSaleOptOutNotice(Notice.PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) - .build(), - new UsNatV1Consent.Builder() - .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) - .setMspaServiceProviderMode(MspaMode.NO) - .setMspaOptOutOptionMode(MspaMode.YES) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) - .build(), - new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) - .build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.NO_CONSENT, - religiousBeliefs: GppDataActivity.NO_CONSENT, - healthInfo: GppDataActivity.NO_CONSENT, - orientation: GppDataActivity.NO_CONSENT, - citizenshipStatus: GppDataActivity.NO_CONSENT, - unionMembership: GppDataActivity.NO_CONSENT, - )).build(), - new UsNatV1Consent.Builder() - .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), - new UsNatV1Consent.Builder() - .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.NO_CONSENT, - biometricId: GppDataActivity.NO_CONSENT, - idNumbers: GppDataActivity.NO_CONSENT, - accountInfo: GppDataActivity.NO_CONSENT, - communicationContents: GppDataActivity.NO_CONSENT - )).build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build() - ] + disallowGppLogic << [SIMPLE_GPC_DISALLOW_LOGIC, + new UsNatV1Consent.Builder() + .setMspaServiceProviderMode(MspaMode.YES) + .setMspaOptOutOptionMode(MspaMode.NO) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSaleOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingNotice(Notice.NOT_PROVIDED) + .setSharingOptOutNotice(Notice.PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .setSharingOptOut(OptOut.OPTED_OUT) + .setSharingNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOutNotice(Notice.NOT_PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setTargetedAdvertisingOptOut(OptOut.OPTED_OUT) + .setTargetedAdvertisingOptOutNotice(Notice.PROVIDED) + .setSaleOptOut(OptOut.OPTED_OUT) + .setSaleOptOutNotice(Notice.PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) + .setMspaServiceProviderMode(MspaMode.NO) + .setMspaOptOutOptionMode(MspaMode.YES) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) + .build(), + new UsNatV1Consent.Builder() + .setPersonalDataConsents(CONSENT) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: NO_CONSENT, + religiousBeliefs: NO_CONSENT, + healthInfo: NO_CONSENT, + orientation: NO_CONSENT, + citizenshipStatus: NO_CONSENT, + unionMembership: NO_CONSENT,)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + geneticId: NO_CONSENT, + biometricId: NO_CONSENT, + idNumbers: NO_CONSENT, + accountInfo: NO_CONSENT, + communicationContents: NO_CONSENT)) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + communicationContents: CONSENT)) + .build()] } def "PBS amp call should remove EIDS fields in request when privacy module contain opt out of disallow GPP UsNat v2 logic"() { @@ -1940,20 +1996,18 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { !genericBidderRequest.user?.ext?.eids } where: - disallowGppLogic << [ - new UsNatV2Consent.Builder() - .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOutNotice(Notice.NOT_PROVIDED) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.OPTED_OUT) - .build(), - new UsNatV2Consent.Builder() - .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) - .build() - ] + disallowGppLogic << [new UsNatV2Consent.Builder() + .setSaleOptOut(OptOut.DID_NOT_OPT_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOutNotice(Notice.NOT_PROVIDED) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.OPTED_OUT) + .build(), + new UsNatV2Consent.Builder() + .setSharingOptOut(OptOut.DID_NOT_OPT_OUT) + .build()] } def "PBS amp call when privacy module contain invalid GPP segment shouldn't remove EIDS fields in request and emit error log"() { @@ -2013,8 +2067,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { "Response should contain error" def logs = activityPbsService.getLogsByTime(startTime) - assert getLogsByText(logs, "UsNat privacy module creation failed: Unable to decode UsNatCoreSegment " + - "'${INVALID_GPP_SEGMENT}'. Activity: TRANSMIT_EIDS. Section: ${US_NAT_V1.value}. Gpp: $INVALID_GPP_STRING").size() == 1 + assert getLogsByText(logs, "UsNat privacy module creation failed: Unable to decode UsNatCoreSegment " + "'${INVALID_GPP_SEGMENT}'. Activity: TRANSMIT_EIDS. Section: ${US_NAT_V1.value}. Gpp: $INVALID_GPP_STRING").size() == 1 } def "PBS amp call when privacy module contain invalid GPP string shouldn't remove EIDS fields in request and emit warning in response"() { @@ -2112,13 +2165,13 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | gppSid + gppConsent | gppSid new UsNatV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_NAT_V1 - new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 - new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 - new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 - new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 - new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 + new UsCaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CA_V1 + new UsVaV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_VA_V1 + new UsCoV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CO_V1 + new UsUtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_UT_V1 + new UsCtV1Consent.Builder().setMspaServiceProviderMode(MspaMode.YES).setMspaOptOutOptionMode(MspaMode.NO).build() | US_CT_V1 } def "PBS amp call when privacy modules contain allowing settings should leave EIDS fields in request"() { @@ -2398,10 +2451,10 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS amp call when privacy regulation match custom requirement should remove EIDS fields from request"() { @@ -2450,14 +2503,14 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS amp call when custom privacy regulation empty and normalize is disabled should leave EIDS fields in request and emit error log"() { @@ -2533,7 +2586,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def ampRequest = AmpRequest.defaultAmpRequest.tap { it.account = accountId it.gppSid = gppSid.intValue - it.consentString = gppStateConsent.build() + it.consentString = gppStateConsent it.consentType = GPP } @@ -2576,51 +2629,123 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS should remove EIDS fields in request when privacy regulation match and personalDataConsents is 2"() { @@ -2628,7 +2753,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitEIDS with rejecting privacy regulation" @@ -2659,7 +2784,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitEIDS with rejecting privacy regulation" @@ -2708,7 +2833,7 @@ class GppTransmitEidsActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitEIDS with rejecting privacy regulation" 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 9fd6b76e054..e3be1b13e98 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 @@ -7,16 +7,11 @@ import org.prebid.server.functional.model.config.GppModuleConfig import org.prebid.server.functional.model.config.InequalityValueRule import org.prebid.server.functional.model.config.LogicalRestrictedRule import org.prebid.server.functional.model.db.StoredRequest -import org.prebid.server.functional.model.privacy.gpp.GppDataActivity import org.prebid.server.functional.model.privacy.gpp.MspaMode import org.prebid.server.functional.model.privacy.gpp.Notice -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsNationalV1SensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.auction.Activity import org.prebid.server.functional.model.request.auction.ActivityRule @@ -32,19 +27,11 @@ import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsNationalV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData import org.prebid.server.functional.util.privacy.gpp.v2.UsNatV2Consent import java.time.Instant import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED -import static org.prebid.server.functional.model.config.DataActivity.CONSENT -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_NOT_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOT_APPLICABLE -import static org.prebid.server.functional.model.config.DataActivity.NO_CONSENT import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.AND import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.CHILD_CONSENTS_BELOW_13 @@ -65,11 +52,14 @@ import static org.prebid.server.functional.model.config.UsNationalPrivacySection import static org.prebid.server.functional.model.config.UsNationalPrivacySection.SHARING_NOTICE import static org.prebid.server.functional.model.pricefloors.Country.CAN import static org.prebid.server.functional.model.pricefloors.Country.USA -import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.ACCOUNT_PROCESSED_RULES_COUNT -import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.PROCESSED_ACTIVITY_RULES_COUNT +import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.CONSENT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NOT_APPLICABLE +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NO_CONSENT import static org.prebid.server.functional.model.request.GppSectionId.USP_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 @@ -1115,16 +1105,16 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) + .setPersonalDataConsents(CONSENT) .build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) @@ -1133,19 +1123,16 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { .build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.CONSENT - )).build(), + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: CONSENT)) + .build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.CONSENT - )).build(), + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: CONSENT)) + .build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.NO_CONSENT - )).build() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: NO_CONSENT)) + .build() ] } @@ -1208,9 +1195,9 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { where: usNationalV2ChildSensitiveData << [ - new UsNationalV2ChildSensitiveData(childUnder13: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom13to16: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom16to17: GppDataActivity.NO_CONSENT) + new UsNationalV2ChildSensitiveData(childUnder13: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom13to16: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom16to17: NO_CONSENT) ] } @@ -1539,10 +1526,10 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS auction call when privacy regulation match custom requirement should round lat/lon data to 2 digits"() { @@ -1606,14 +1593,14 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS auction call when custom privacy regulation empty and normalize is disabled should not round lat/lon data and emit error log"() { @@ -1696,7 +1683,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { ext.prebid.trace = VERBOSE regs.gppSid = [gppSid.intValue] - regs.gpp = gppStateConsent.build() + regs.gpp = gppStateConsent setAccountId(accountId) } @@ -1757,51 +1744,123 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS amp call with bidder allowed in activities should not round lat/lon data and update processed metrics"() { @@ -2422,16 +2481,16 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { .setSensitiveDataProcessingOptOutNotice(Notice.NOT_PROVIDED) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) + .setPersonalDataConsents(CONSENT) .build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_PROVIDED) @@ -2440,19 +2499,16 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { .build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.CONSENT - )).build(), + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: CONSENT)) + .build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.CONSENT - )).build(), + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: CONSENT)) + .build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) - .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geolocation: GppDataActivity.NO_CONSENT - )).build() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData(geolocation: NO_CONSENT)) + .build() ] } @@ -2828,10 +2884,10 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS amp call when privacy regulation match custom requirement should round lat/lon data to 2 digits"() { @@ -2905,14 +2961,14 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { } where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS amp call when custom privacy regulation empty and normalize is disabled should not round lat/lon data and emit error log"() { @@ -3007,7 +3063,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def ampRequest = AmpRequest.defaultAmpRequest.tap { it.account = accountId it.gppSid = gppSid.intValue - it.consentString = gppStateConsent.build() + it.consentString = gppStateConsent it.consentType = GPP } @@ -3072,51 +3128,123 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS auction should round lat/lon data to 2 digits call when privacy regulation match and personalDataConsents is 2"() { @@ -3125,7 +3253,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitPreciseGeo with rejecting privacy regulation" @@ -3181,7 +3309,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitPreciseGeo with rejecting privacy regulation" @@ -3255,7 +3383,7 @@ class GppTransmitPreciseGeoActivitiesSpec extends PrivacyBaseSpec { def bidRequest = bidRequestWithGeo.tap { it.setAccountId(accountId) regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitPreciseGeo with rejecting privacy regulation" 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 3af8bfe4d77..b648a4fe91c 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 @@ -11,18 +11,12 @@ import org.prebid.server.functional.model.config.Purpose import org.prebid.server.functional.model.config.PurposeConfig import org.prebid.server.functional.model.config.PurposeEid import org.prebid.server.functional.model.db.StoredRequest -import org.prebid.server.functional.model.privacy.gpp.GppDataActivity import org.prebid.server.functional.model.privacy.gpp.MspaMode import org.prebid.server.functional.model.privacy.gpp.Notice import org.prebid.server.functional.model.privacy.gpp.OptOut -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV1ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2ChildSensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV2SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData import org.prebid.server.functional.model.request.amp.AmpRequest import org.prebid.server.functional.model.request.auction.Activity import org.prebid.server.functional.model.request.auction.ActivityRule @@ -39,19 +33,12 @@ import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent -import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData import org.prebid.server.functional.model.privacy.gpp.UsNationalV1SensitiveData -import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData import org.prebid.server.functional.util.privacy.gpp.v2.UsNatV2Consent import java.time.Instant import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED -import static org.prebid.server.functional.model.config.DataActivity.CONSENT -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_NOT_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOTICE_PROVIDED -import static org.prebid.server.functional.model.config.DataActivity.NOT_APPLICABLE -import static org.prebid.server.functional.model.config.DataActivity.NO_CONSENT import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.AND import static org.prebid.server.functional.model.config.LogicalRestrictedRule.LogicalOperation.OR import static org.prebid.server.functional.model.config.UsNationalPrivacySection.CHILD_CONSENTS_BELOW_13 @@ -77,6 +64,9 @@ import static org.prebid.server.functional.model.privacy.Metric.PROCESSED_ACTIVI import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ACCOUNT_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_ADAPTER_DISALLOWED_COUNT import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST_DISALLOWED_COUNT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.CONSENT +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NOT_APPLICABLE +import static org.prebid.server.functional.model.privacy.gpp.GppDataActivity.NO_CONSENT import static org.prebid.server.functional.model.request.GppSectionId.USP_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 @@ -997,68 +987,68 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { .setMspaOptOutOptionMode(MspaMode.YES) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) + .setPersonalDataConsents(CONSENT) .build(), new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.NO_CONSENT, - religiousBeliefs: GppDataActivity.NO_CONSENT, - healthInfo: GppDataActivity.NO_CONSENT, - orientation: GppDataActivity.NO_CONSENT, - citizenshipStatus: GppDataActivity.NO_CONSENT, - unionMembership: GppDataActivity.NO_CONSENT, + racialEthnicOrigin: NO_CONSENT, + religiousBeliefs: NO_CONSENT, + healthInfo: NO_CONSENT, + orientation: NO_CONSENT, + citizenshipStatus: NO_CONSENT, + unionMembership: NO_CONSENT, )).build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT )).build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT )).build(), new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.NO_CONSENT, - biometricId: GppDataActivity.NO_CONSENT, - idNumbers: GppDataActivity.NO_CONSENT, - accountInfo: GppDataActivity.NO_CONSENT, - communicationContents: GppDataActivity.NO_CONSENT + geneticId: NO_CONSENT, + biometricId: NO_CONSENT, + idNumbers: NO_CONSENT, + accountInfo: NO_CONSENT, + communicationContents: NO_CONSENT )).build(), new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + communicationContents: CONSENT )).build() ] } @@ -1178,38 +1168,38 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: usNationalV2SensitiveData << [ - new UsNationalV2SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(religiousBeliefs: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(healthInfo: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(orientation: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(citizenshipStatus: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(geneticId: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(biometricId: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(idNumbers: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(accountInfo: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(unionMembership: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(communicationContents: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(consumerHealthData: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(crimeVictim: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(nationalOrigin: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(transgenderStatus: GppDataActivity.CONSENT), - - new UsNationalV2SensitiveData(racialEthnicOrigin: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(religiousBeliefs: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(healthInfo: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(orientation: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(citizenshipStatus: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(unionMembership: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(consumerHealthData: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(nationalOrigin: GppDataActivity.NO_CONSENT), - - new UsNationalV2SensitiveData(geneticId: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(biometricId: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(idNumbers: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(accountInfo: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(communicationContents: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(crimeVictim: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(transgenderStatus: GppDataActivity.NO_CONSENT) + new UsNationalV2SensitiveData(racialEthnicOrigin: CONSENT), + new UsNationalV2SensitiveData(religiousBeliefs: CONSENT), + new UsNationalV2SensitiveData(healthInfo: CONSENT), + new UsNationalV2SensitiveData(orientation: CONSENT), + new UsNationalV2SensitiveData(citizenshipStatus: CONSENT), + new UsNationalV2SensitiveData(geneticId: CONSENT), + new UsNationalV2SensitiveData(biometricId: CONSENT), + new UsNationalV2SensitiveData(idNumbers: CONSENT), + new UsNationalV2SensitiveData(accountInfo: CONSENT), + new UsNationalV2SensitiveData(unionMembership: CONSENT), + new UsNationalV2SensitiveData(communicationContents: CONSENT), + new UsNationalV2SensitiveData(consumerHealthData: CONSENT), + new UsNationalV2SensitiveData(crimeVictim: CONSENT), + new UsNationalV2SensitiveData(nationalOrigin: CONSENT), + new UsNationalV2SensitiveData(transgenderStatus: CONSENT), + + new UsNationalV2SensitiveData(racialEthnicOrigin: NO_CONSENT), + new UsNationalV2SensitiveData(religiousBeliefs: NO_CONSENT), + new UsNationalV2SensitiveData(healthInfo: NO_CONSENT), + new UsNationalV2SensitiveData(orientation: NO_CONSENT), + new UsNationalV2SensitiveData(citizenshipStatus: NO_CONSENT), + new UsNationalV2SensitiveData(unionMembership: NO_CONSENT), + new UsNationalV2SensitiveData(consumerHealthData: NO_CONSENT), + new UsNationalV2SensitiveData(nationalOrigin: NO_CONSENT), + + new UsNationalV2SensitiveData(geneticId: NO_CONSENT), + new UsNationalV2SensitiveData(biometricId: NO_CONSENT), + new UsNationalV2SensitiveData(idNumbers: NO_CONSENT), + new UsNationalV2SensitiveData(accountInfo: NO_CONSENT), + new UsNationalV2SensitiveData(communicationContents: NO_CONSENT), + new UsNationalV2SensitiveData(crimeVictim: NO_CONSENT), + new UsNationalV2SensitiveData(transgenderStatus: NO_CONSENT) ] } @@ -1263,9 +1253,9 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: usNationalV2ChildSensitiveData << [ - new UsNationalV2ChildSensitiveData(childUnder13: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom13to16: GppDataActivity.NO_CONSENT), - new UsNationalV2ChildSensitiveData(childFrom16to17: GppDataActivity.NO_CONSENT) + new UsNationalV2ChildSensitiveData(childUnder13: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom13to16: NO_CONSENT), + new UsNationalV2ChildSensitiveData(childFrom16to17: NO_CONSENT) ] } @@ -1724,10 +1714,10 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS auction call when privacy regulation match custom requirement should remove UFPD fields in request"() { @@ -1782,14 +1772,14 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { assert bidderRequest.user.eids == bidRequest.user.eids where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS auction call when custom privacy regulation empty and normalize is disabled should leave UFPD fields in request and emit error log"() { @@ -1874,7 +1864,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def bidRequest = getBidRequestWithPersonalData(accountId).tap { ext.prebid.trace = VERBOSE regs.gppSid = [gppSid.intValue] - regs.gpp = gppStateConsent.build() + regs.gpp = gppStateConsent } and: "Activities set with privacy regulation" @@ -1924,51 +1914,123 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS amp call when transmit UFPD activities is allowing request should leave UFPD fields field in active request and update proper metrics"() { @@ -2521,38 +2583,38 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: usNationalV2SensitiveData << [ - new UsNationalV2SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(religiousBeliefs: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(healthInfo: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(orientation: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(citizenshipStatus: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(geneticId: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(biometricId: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(idNumbers: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(accountInfo: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(unionMembership: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(communicationContents: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(consumerHealthData: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(crimeVictim: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(nationalOrigin: GppDataActivity.CONSENT), - new UsNationalV2SensitiveData(transgenderStatus: GppDataActivity.CONSENT), - - new UsNationalV2SensitiveData(racialEthnicOrigin: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(religiousBeliefs: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(healthInfo: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(orientation: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(citizenshipStatus: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(unionMembership: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(consumerHealthData: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(nationalOrigin: GppDataActivity.NO_CONSENT), - - new UsNationalV2SensitiveData(geneticId: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(biometricId: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(idNumbers: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(accountInfo: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(communicationContents: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(crimeVictim: GppDataActivity.NO_CONSENT), - new UsNationalV2SensitiveData(transgenderStatus: GppDataActivity.NO_CONSENT) + new UsNationalV2SensitiveData(racialEthnicOrigin: CONSENT), + new UsNationalV2SensitiveData(religiousBeliefs: CONSENT), + new UsNationalV2SensitiveData(healthInfo: CONSENT), + new UsNationalV2SensitiveData(orientation: CONSENT), + new UsNationalV2SensitiveData(citizenshipStatus: CONSENT), + new UsNationalV2SensitiveData(geneticId: CONSENT), + new UsNationalV2SensitiveData(biometricId: CONSENT), + new UsNationalV2SensitiveData(idNumbers: CONSENT), + new UsNationalV2SensitiveData(accountInfo: CONSENT), + new UsNationalV2SensitiveData(unionMembership: CONSENT), + new UsNationalV2SensitiveData(communicationContents: CONSENT), + new UsNationalV2SensitiveData(consumerHealthData: CONSENT), + new UsNationalV2SensitiveData(crimeVictim: CONSENT), + new UsNationalV2SensitiveData(nationalOrigin: CONSENT), + new UsNationalV2SensitiveData(transgenderStatus: CONSENT), + + new UsNationalV2SensitiveData(racialEthnicOrigin: NO_CONSENT), + new UsNationalV2SensitiveData(religiousBeliefs: NO_CONSENT), + new UsNationalV2SensitiveData(healthInfo: NO_CONSENT), + new UsNationalV2SensitiveData(orientation: NO_CONSENT), + new UsNationalV2SensitiveData(citizenshipStatus: NO_CONSENT), + new UsNationalV2SensitiveData(unionMembership: NO_CONSENT), + new UsNationalV2SensitiveData(consumerHealthData: NO_CONSENT), + new UsNationalV2SensitiveData(nationalOrigin: NO_CONSENT), + + new UsNationalV2SensitiveData(geneticId: NO_CONSENT), + new UsNationalV2SensitiveData(biometricId: NO_CONSENT), + new UsNationalV2SensitiveData(idNumbers: NO_CONSENT), + new UsNationalV2SensitiveData(accountInfo: NO_CONSENT), + new UsNationalV2SensitiveData(communicationContents: NO_CONSENT), + new UsNationalV2SensitiveData(crimeVictim: NO_CONSENT), + new UsNationalV2SensitiveData(transgenderStatus: NO_CONSENT) ] } @@ -2669,69 +2731,70 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { .setMspaOptOutOptionMode(MspaMode.YES) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NOT_APPLICABLE, GppDataActivity.NO_CONSENT)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NOT_APPLICABLE, NO_CONSENT)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(GppDataActivity.NO_CONSENT, GppDataActivity.NOT_APPLICABLE)) + .setKnownChildSensitiveDataConsents(UsNationalV1ChildSensitiveData.getDefault(NO_CONSENT, NOT_APPLICABLE)) .build(), new UsNatV1Consent.Builder() - .setPersonalDataConsents(GppDataActivity.CONSENT) + .setPersonalDataConsents(CONSENT) + .build(), + new UsNatV1Consent.Builder() + .setSensitiveDataProcessing(new UsNationalV1SensitiveData( + racialEthnicOrigin: NO_CONSENT, + religiousBeliefs: NO_CONSENT, + healthInfo: NO_CONSENT, + orientation: NO_CONSENT, + citizenshipStatus: NO_CONSENT, + unionMembership: NO_CONSENT)) .build(), - new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.NO_CONSENT, - religiousBeliefs: GppDataActivity.NO_CONSENT, - healthInfo: GppDataActivity.NO_CONSENT, - orientation: GppDataActivity.NO_CONSENT, - citizenshipStatus: GppDataActivity.NO_CONSENT, - unionMembership: GppDataActivity.NO_CONSENT, - )).build(), new UsNatV1Consent.Builder() .setSensitiveDataLimitUseNotice(Notice.NOT_APPLICABLE) .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), new UsNatV1Consent.Builder() .setSensitiveDataProcessingOptOutNotice(Notice.NOT_APPLICABLE) .setSensitiveDataProcessing(new UsNationalV1SensitiveData( - racialEthnicOrigin: GppDataActivity.CONSENT, - religiousBeliefs: GppDataActivity.CONSENT, - healthInfo: GppDataActivity.CONSENT, - orientation: GppDataActivity.CONSENT, - citizenshipStatus: GppDataActivity.CONSENT, - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - unionMembership: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build(), + racialEthnicOrigin: CONSENT, + religiousBeliefs: CONSENT, + healthInfo: CONSENT, + orientation: CONSENT, + citizenshipStatus: CONSENT, + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + unionMembership: CONSENT, + communicationContents: CONSENT)) + .build(), new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.NO_CONSENT, - biometricId: GppDataActivity.NO_CONSENT, - idNumbers: GppDataActivity.NO_CONSENT, - accountInfo: GppDataActivity.NO_CONSENT, - communicationContents: GppDataActivity.NO_CONSENT - )).build(), + geneticId: NO_CONSENT, + biometricId: NO_CONSENT, + idNumbers: NO_CONSENT, + accountInfo: NO_CONSENT, + communicationContents: NO_CONSENT)) + .build(), new UsNatV1Consent.Builder().setSensitiveDataProcessing(new UsNationalV1SensitiveData( - geneticId: GppDataActivity.CONSENT, - biometricId: GppDataActivity.CONSENT, - idNumbers: GppDataActivity.CONSENT, - accountInfo: GppDataActivity.CONSENT, - communicationContents: GppDataActivity.CONSENT - )).build() + geneticId: CONSENT, + biometricId: CONSENT, + idNumbers: CONSENT, + accountInfo: CONSENT, + communicationContents: CONSENT)) + .build() ] } @@ -3396,10 +3459,10 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: gpcValue | accountLogic - false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NOTICE_PROVIDED)]) - true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_PROVIDED)]) + false | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new EqualityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(OR, [new InequalityValueRule(GPC, NO_CONSENT)]) + true | LogicalRestrictedRule.generateSingleRestrictedRule(AND, [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, NO_CONSENT)]) } def "PBS amp call when privacy regulation match custom requirement should remove UFPD fields from request"() { @@ -3463,14 +3526,14 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { assert bidderRequest.user.eids == ampStoredRequest.user.eids where: - gppConsent | valueRules - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NOTICE_PROVIDED)] - new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(SHARING_NOTICE, NOTICE_NOT_PROVIDED)] - new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() | [new EqualityValueRule(GPC, NOTICE_PROVIDED), - new EqualityValueRule(PERSONAL_DATA_CONSENTS, NOTICE_NOT_PROVIDED)] + gppConsent | valueRules + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(false).build() | [new InequalityValueRule(GPC, NO_CONSENT)] + new UsNatV1Consent.Builder().setGpc(true).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(SHARING_NOTICE, CONSENT)] + new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() | [new EqualityValueRule(GPC, NO_CONSENT), + new EqualityValueRule(PERSONAL_DATA_CONSENTS, CONSENT)] } def "PBS amp call when custom privacy regulation empty and normalize is disabled should leave UFPD fields in request and emit error log"() { @@ -3564,7 +3627,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def ampRequest = AmpRequest.defaultAmpRequest.tap { it.account = accountId it.gppSid = gppSid.intValue - it.consentString = gppStateConsent.build() + it.consentString = gppStateConsent it.consentType = GPP } @@ -3622,51 +3685,123 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { where: gppSid | equalityValueRules | gppStateConsent - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(idNumbers: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(accountInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geolocation: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(communicationContents: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsCaV1Consent.Builder().setSensitiveDataProcessing(new UsCaliforniaV1SensitiveData(orientation: GppDataActivity.CONSENT)) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ID_NUMBERS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [idNumbers: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ACCOUNT_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [accountInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geolocation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_CA_V1, [racialEthnicOrigin: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_COMMUNICATION_CONTENTS, CONSENT)] | generateSensitiveGpp(US_CA_V1, [communicationContents: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [geneticId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_CA_V1, [biometricId: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_CA_V1, [healthInfo: CONSENT]) + US_CA_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_CA_V1, [orientation: CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [NO_CONSENT, CONSENT]) US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, NO_CONSENT]) + US_CA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [NO_CONSENT, CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, NO_CONSENT]) + US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_VA_V1, [CONSENT, CONSENT]) US_VA_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsVaV1Consent.Builder().setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_VA_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [NO_CONSENT, CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, NO_CONSENT]) + US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CO_V1, [CONSENT, CONSENT]) US_CO_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCoV1Consent.Builder().setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.default) - - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(racialEthnicOrigin: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(religiousBeliefs: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(orientation: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(citizenshipStatus: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(healthInfo: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geneticId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(biometricId: GppDataActivity.CONSENT)) - US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | new UsUtV1Consent.Builder().setSensitiveDataProcessing(new UsUtahV1SensitiveData(geolocation: GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CO_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) + + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RACIAL_ETHNIC_ORIGIN, CONSENT)] | generateSensitiveGpp(US_UT_V1, [racialEthnicOrigin: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_RELIGIOUS_BELIEFS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [religiousBeliefs: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_ORIENTATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [orientation: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_CITIZENSHIP_STATUS, CONSENT)] | generateSensitiveGpp(US_UT_V1, [citizenshipStatus: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_HEALTH_INFO, CONSENT)] | generateSensitiveGpp(US_UT_V1, [healthInfo: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GENETIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geneticId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_BIOMETRIC_ID, CONSENT)] | generateSensitiveGpp(US_UT_V1, [biometricId: CONSENT]) + US_UT_V1 | [new EqualityValueRule(SENSITIVE_DATA_GEOLOCATION, CONSENT)] | generateSensitiveGpp(US_UT_V1, [geolocation: CONSENT]) + + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [NO_CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getRandom([GppDataActivity.NOT_APPLICABLE])) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, NO_CONSENT]) + US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_UT_V1, [CONSENT, CONSENT]) US_UT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsUtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_UT_V1, [NOT_APPLICABLE, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NOT_APPLICABLE), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.default) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NOT_APPLICABLE)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NOT_APPLICABLE, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, NO_CONSENT, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [NO_CONSENT, CONSENT, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, NO_CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NOT_APPLICABLE, CONSENT]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NOT_APPLICABLE]) + US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, NO_CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(GppDataActivity.CONSENT, GppDataActivity.NOT_APPLICABLE, GppDataActivity.CONSENT)) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, NO_CONSENT, CONSENT]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom16to18 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NOT_APPLICABLE]) US_CT_V1 | [new EqualityValueRule(CHILD_CONSENTS_BELOW_13, NO_CONSENT), - new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | new UsCtV1Consent.Builder().setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getRandom().tap { it.childFrom13to16 = GppDataActivity.NO_CONSENT }) + new EqualityValueRule(CHILD_CONSENTS_FROM_13_TO_16, NO_CONSENT)] | generateChildSensitiveGpp(US_CT_V1, [CONSENT, CONSENT, NO_CONSENT]) } def "PBS auction call when transmit UFPD activities is rejecting requests with activityTransition false should remove only UFPD fields in request"() { @@ -3729,7 +3864,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitUfpd with rejecting privacy regulation" @@ -3777,7 +3912,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitUfpd with rejecting privacy regulation" @@ -3843,7 +3978,7 @@ class GppTransmitUfpdActivitiesSpec extends PrivacyBaseSpec { def accountId = PBSUtils.randomNumber as String def bidRequest = getBidRequestWithPersonalData(accountId).tap { regs.gppSid = [US_NAT_V1.intValue] - regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(GppDataActivity.CONSENT).build() + regs.gpp = new UsNatV1Consent.Builder().setPersonalDataConsents(CONSENT).build() } and: "Activities set for transmitUfpd with rejecting privacy regulation" 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 34756f703ca..7d8ed79de7d 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 @@ -12,6 +12,18 @@ import org.prebid.server.functional.model.config.Purpose import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.mock.services.vendorlist.VendorListResponse import org.prebid.server.functional.model.privacy.EnforcementRequirement +import org.prebid.server.functional.model.privacy.gpp.GppDataActivity +import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsCaliforniaV1SensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsColoradoV1SensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsConnecticutV1SensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsUtahV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsUtahV1SensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1ChildSensitiveData +import org.prebid.server.functional.model.privacy.gpp.UsVirginiaV1SensitiveData +import org.prebid.server.functional.model.request.GppSectionId 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.AllowActivities @@ -33,7 +45,12 @@ import org.prebid.server.functional.util.PBSUtils import org.prebid.server.functional.util.privacy.ConsentString import org.prebid.server.functional.util.privacy.TcfConsent import org.prebid.server.functional.util.privacy.gpp.GppConsent +import org.prebid.server.functional.util.privacy.gpp.v1.UsCaV1Consent +import org.prebid.server.functional.util.privacy.gpp.v1.UsCoV1Consent +import org.prebid.server.functional.util.privacy.gpp.v1.UsCtV1Consent import org.prebid.server.functional.util.privacy.gpp.v1.UsNatV1Consent +import org.prebid.server.functional.util.privacy.gpp.v1.UsUtV1Consent +import org.prebid.server.functional.util.privacy.gpp.v1.UsVaV1Consent import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.OPENX @@ -43,6 +60,11 @@ import static org.prebid.server.functional.model.config.PurposeEnforcement.NO import static org.prebid.server.functional.model.mock.services.vendorlist.VendorListResponse.getDefaultVendorListResponse import static org.prebid.server.functional.model.pricefloors.Country.USA import static org.prebid.server.functional.model.pricefloors.Country.BULGARIA +import static org.prebid.server.functional.model.request.GppSectionId.US_CA_V1 +import static org.prebid.server.functional.model.request.GppSectionId.US_CO_V1 +import static org.prebid.server.functional.model.request.GppSectionId.US_CT_V1 +import static org.prebid.server.functional.model.request.GppSectionId.US_UT_V1 +import static org.prebid.server.functional.model.request.GppSectionId.US_VA_V1 import static org.prebid.server.functional.model.request.amp.ConsentType.GPP import static org.prebid.server.functional.model.request.amp.ConsentType.TCF_2 import static org.prebid.server.functional.model.request.amp.ConsentType.US_PRIVACY @@ -561,6 +583,73 @@ abstract class PrivacyBaseSpec extends BaseSpec { enforceVendor: false)] } + protected static String generateSensitiveGpp(GppSectionId sectionId, Map fieldsMap) { + Object sensitiveData + Object consentBuilder + + switch (sectionId) { + case US_CA_V1: + sensitiveData = new UsCaliforniaV1SensitiveData() + consentBuilder = new UsCaV1Consent.Builder() + break + case US_VA_V1: + sensitiveData = new UsVirginiaV1SensitiveData() + consentBuilder = new UsVaV1Consent.Builder() + break + case US_CO_V1: + sensitiveData = new UsColoradoV1SensitiveData() + consentBuilder = new UsCoV1Consent.Builder() + break + case US_UT_V1: + sensitiveData = new UsUtahV1SensitiveData() + consentBuilder = new UsUtV1Consent.Builder() + break + case US_CT_V1: + sensitiveData = new UsConnecticutV1SensitiveData() + consentBuilder = new UsCtV1Consent.Builder() + break + default: + throw new IllegalArgumentException("Unsupported Section ID for Sensitive Data: $sectionId") + } + + fieldsMap.each { fieldName, value -> + sensitiveData.setProperty("$fieldName", value) + } + + consentBuilder.setSensitiveDataProcessing(sensitiveData).build().toString() + } + + protected static String generateChildSensitiveGpp(GppSectionId sectionId, List fields) { + switch (sectionId) { + case US_CA_V1: + return new UsCaV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsCaliforniaV1ChildSensitiveData.getDefault(*fields)) + .build().toString() + + case US_VA_V1: + return new UsVaV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsVirginiaV1ChildSensitiveData.getDefault(fields.first)) + .build().toString() + + case US_CO_V1: + return new UsCoV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsColoradoV1ChildSensitiveData.getDefault(fields.first)) + .build().toString() + + case US_UT_V1: + return new UsUtV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsUtahV1ChildSensitiveData.getDefault(fields.first)) + .build().toString() + + case US_CT_V1: + return new UsCtV1Consent.Builder() + .setKnownChildSensitiveDataConsents(UsConnecticutV1ChildSensitiveData.getDefault(*fields)) + .build().toString() + default: + throw new IllegalArgumentException("Unsupported Section ID for Child Data: $sectionId") + } + } + protected static List getFullTcfCompanyEnforcementRequirementsRandomlyWithExcludePurpose(Purpose purpose) { getFullTcfCompanyEnforcementRequirements(purpose, true) }