123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- import copy
- import pytest
- from sentry.datascrubbing import scrub_data
- from sentry.testutils.pytest.fixtures import django_db_all
- def merge_pii_configs(prefixes_and_configs):
- from sentry.datascrubbing import _merge_pii_configs as f
- prefixes_and_configs_bak = copy.deepcopy(prefixes_and_configs)
- rv = f(prefixes_and_configs)
- # No accidental mutation
- assert prefixes_and_configs == prefixes_and_configs_bak
- return rv
- @django_db_all
- @pytest.mark.parametrize("field", ["ooo", "oöö", "o o", "o\no", "o'o"])
- def test_scrub_data(field, default_project):
- project = default_project
- organization = project.organization
- organization.update_option(
- "sentry:relay_pii_config",
- """
- {
- "applications": {
- "debug_meta.images.*.code_file": ["@userpath:replace"],
- "debug_meta.images.*.debug_file": ["@userpath:replace"]
- }
- }
- """,
- )
- organization.update_option("sentry:safe_fields", [])
- organization.update_option("sentry:sensitive_fields", ["o"])
- organization.update_option("sentry:scrub_ip_address", False)
- organization.update_option("sentry:require_scrub_data", True)
- event = {
- "extra": {field: "pls remove"},
- "debug_meta": {
- "images": [
- {"type": "symbolic", "debug_file": "/Users/foo/bar", "code_file": "/Users/foo/bar"}
- ]
- },
- }
- new_event = scrub_data(project, event)
- assert new_event == (
- {
- "_meta": {
- "debug_meta": {
- "images": {
- "0": {
- "code_file": {
- "": {"len": 10, "rem": [["@userpath:replace", "s", 7, 13]]}
- },
- "debug_file": {
- "": {"len": 10, "rem": [["@userpath:replace", "s", 7, 13]]}
- },
- }
- }
- },
- "extra": {field: {"": {"len": 10, "rem": [["strip-fields", "s", 0, 10]]}}},
- },
- "debug_meta": {
- "images": [
- {
- "code_file": "/Users/[user]/bar",
- "debug_file": "/Users/[user]/bar",
- "type": "symbolic",
- }
- ]
- },
- "extra": {field: "[Filtered]"},
- }
- )
- def test_merge_pii_configs_simple():
- assert merge_pii_configs([("p:", {}), ("o:", {})]) == {}
- assert merge_pii_configs(
- [("p:", {"applications": {"$string": ["@ip:remove"]}}), ("o:", {})]
- ) == {"applications": {"$string": ["@ip:remove"]}}
- def test_merge_pii_configs_rule_references():
- my_rules = {
- "remove_ips_alias": {
- "type": "alias",
- "rule": "@ip",
- "hide_rule": False,
- "redaction": {"method": "remove"},
- },
- "remove_ips_and_macs": {
- "type": "multiple",
- "rules": ["remove_ips_alias", "@mac"],
- "hide_rule": False,
- "redaction": {"method": "remove"},
- },
- }
- assert merge_pii_configs(
- [
- ("o:", {"rules": my_rules, "applications": {"$string": ["remove_ips_and_macs"]}}),
- ("p:", {"rules": my_rules, "applications": {"$string": ["remove_ips_alias"]}}),
- ]
- ) == {
- "applications": {"$string": ["o:remove_ips_and_macs", "p:remove_ips_alias"]},
- "rules": {
- "o:remove_ips_and_macs": {
- "hide_rule": False,
- "redaction": {"method": "remove"},
- "rules": ["o:remove_ips_alias", "@mac"],
- "type": "multiple",
- },
- "o:remove_ips_alias": {
- "hide_rule": False,
- "redaction": {"method": "remove"},
- "rule": "@ip",
- "type": "alias",
- },
- "p:remove_ips_and_macs": {
- "hide_rule": False,
- "redaction": {"method": "remove"},
- "rules": ["p:remove_ips_alias", "@mac"],
- "type": "multiple",
- },
- "p:remove_ips_alias": {
- "hide_rule": False,
- "redaction": {"method": "remove"},
- "rule": "@ip",
- "type": "alias",
- },
- },
- }
|