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 15, 2020
1 parent 2f3b421 commit 6d5e838
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"type": "string"
},
"emailAddress3": {
"type": ["string", "null"]
"type": "string"
}
},
"required": ["emailAddress", "emailAddress2"],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
"description": "Schema for acme stuff",
"self": {
"vendor": "com.acme",
"name": "email_sent",
"format": "jsonschema",
"version": "1-1-0"
},
"type": "object",
"properties": {
"emailAddress": {
"type": "string"
},
"emailAddress2": {
"type": "string"
},
"emailAddress3": {
"type": ["string", "null"]
}
},
"required": ["emailAddress", "emailAddress2"],
"additionalProperties": false
}
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ class EnrichmentManagerSpec extends Specification with EitherMatchers {
{
"schema":"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",
"data":{
"schema":"iglu:com.acme/email_sent/jsonschema/1-0-0",
"schema":"iglu:com.acme/email_sent/jsonschema/2-0-0",
"data": {
"emailAddress": "hello@world.com",
"emailAddress2": "foo@bar.org",
Expand Down Expand Up @@ -389,6 +389,66 @@ class EnrichmentManagerSpec extends Specification with EitherMatchers {
enriched.value must beRight
}

"fail to emit an EnrichedEvent if a 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"
}
}
]
}
""",
"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("unstruct_event"),
schemaCriterion = SchemaCriterion("com.acme", "email_sent", "jsonschema", 1, 0, 0),
jsonPath = "$.emailAddress3"
)
),
false,
PiiStrategyPseudonymize(
"MD5",
hashFunction = DigestUtils.sha256Hex(_: Array[Byte]),
"pepper123"
)
).some
)
val 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 6d5e838

Please sign in to comment.