Skip to content

Commit

Permalink
Common: fix PiiPseudonymizerEnrichment for arrays and improve unit te…
Browse files Browse the repository at this point in the history
…sts coverage (close #334)
  • Loading branch information
dilyand committed Sep 16, 2020
1 parent 6d5e838 commit b7e893f
Showing 1 changed file with 128 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,134 @@ class EnrichmentManagerSpec extends Specification with EitherMatchers {
enriched.value must beLeft
}

"fail to emit an EnrichedEvent if a context PII value that needs to be hashed is an empty object" >> {
val parameters = Map(
"e" -> "ue",
"tv" -> "js-0.13.1",
"p" -> "web",
"co" -> """
{
"schema": "iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",
"data": [
{
"schema":"iglu:com.acme/email_sent/jsonschema/1-0-0",
"data": {
"emailAddress": "hello@world.com",
"emailAddress2": "foo@bar.org",
"emailAddress3": {}
}
}
]
}
""",
"ue_pr" -> """
{
"schema":"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",
"data":{
"schema":"iglu:com.acme/email_sent/jsonschema/1-0-0",
"data": {
"emailAddress": "hello@world.com",
"emailAddress2": "foo@bar.org"
}
}
}"""
)
val rawEvent = RawEvent(api, parameters, None, source, context)
val enrichmentReg = EnrichmentRegistry[Id](
piiPseudonymizer = PiiPseudonymizerEnrichment(
List(
PiiJson(
fieldMutator = JsonMutators("contexts"),
schemaCriterion = SchemaCriterion("com.acme", "email_sent", "jsonschema", 1, 0, 0),
jsonPath = "$.emailAddress3"
)
),
false,
PiiStrategyPseudonymize(
"MD5",
hashFunction = DigestUtils.sha256Hex(_: Array[Byte]),
"pepper123"
)
).some
)
def enriched =
EnrichmentManager.enrichEvent(
enrichmentReg,
client,
processor,
timestamp,
rawEvent
)
enriched.value must beLeft
}

"fail to emit an EnrichedEvent if a PII value needs to be hashed in both co and ue and is invalid in one of them" >> {
val parameters = Map(
"e" -> "ue",
"tv" -> "js-0.13.1",
"p" -> "web",
"co" -> """
{
"schema": "iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",
"data": [
{
"schema":"iglu:com.acme/email_sent/jsonschema/1-0-0",
"data": {
"emailAddress": "hello@world.com",
"emailAddress2": "foo@bar.org",
"emailAddress3": {}
}
}
]
}
""",
"ue_pr" -> """
{
"schema":"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",
"data":{
"schema":"iglu:com.acme/email_sent/jsonschema/1-0-0",
"data": {
"emailAddress": "hello@world.com",
"emailAddress2": "foo@bar.org",
"emailAddress3": ""
}
}
}"""
)
val rawEvent = RawEvent(api, parameters, None, source, context)
val enrichmentReg = EnrichmentRegistry[Id](
piiPseudonymizer = PiiPseudonymizerEnrichment(
List(
PiiJson(
fieldMutator = JsonMutators("contexts"),
schemaCriterion = SchemaCriterion("com.acme", "email_sent", "jsonschema", 1, 0, 0),
jsonPath = "$.emailAddress3"
),
PiiJson(
fieldMutator = JsonMutators("unstruct_event"),
schemaCriterion = SchemaCriterion("com.acme", "email_sent", "jsonschema", 1, 0, 0),
jsonPath = "$.emailAddress3"
)
),
false,
PiiStrategyPseudonymize(
"MD5",
hashFunction = DigestUtils.sha256Hex(_: Array[Byte]),
"pepper123"
)
).some
)
def enriched =
EnrichmentManager.enrichEvent(
enrichmentReg,
client,
processor,
timestamp,
rawEvent
)
enriched.value must beLeft
}

"have a preference of 'ua' query string parameter over user agent of HTTP header" >> {
val qs_ua = "Mozilla/5.0 (X11; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0"
val parameters = Map(
Expand Down

0 comments on commit b7e893f

Please sign in to comment.