def test_event_post_data_sanitized(self, names, url, post_data, expected_post_data): """Request POST data are sanitized of sensitive values.""" event = {"request": {"url": url, "data": deepcopy(post_data)}} processed = get_before_send()(event, {}) expected = {"request": {"url": url, "data": expected_post_data}} assert processed == expected
def test_event_headers_sanitized(self, names, url, headers, expected_headers): """Request headers are sanitized of sensitive values.""" event = {"request": {"url": url, "headers": deepcopy(headers)}} processed = get_before_send()(event, {}) expected = {"request": {"url": url, "headers": expected_headers}} assert processed == expected
def test_breadcrumb_queries_truncated(self): """Query breadcrumbs are truncated on sensitive column names.""" event = {'breadcrumbs': []} expected = {'breadcrumbs': []} for sql in TestSanitizeSQLQueryCrumb.CASES.values(): event['breadcrumbs'].append({'category': 'query', 'message': sql}) expected['breadcrumbs'].append({'category': 'query', 'message': '[filtered]'}) processed = get_before_send()(event, {}) assert processed == expected
def test_event_querystring_sanitized(self, names, url, query_string, expected_query_string): """Request querystrings are sanitized of sensitive values.""" event = {"request": {"url": url, "query_string": query_string}} processed = get_before_send()(event, {}) expected = { "request": { "url": url, "query_string": expected_query_string } } assert processed == expected
def test_breadcrumb_queries_truncated(self): """Query breadcrumbs are truncated on sensitive column names.""" event = {"breadcrumbs": []} expected = {"breadcrumbs": []} for sql in TestSanitizeSQLQueryCrumb.CASES.values(): event["breadcrumbs"].append({"category": "query", "message": sql}) expected["breadcrumbs"].append({ "category": "query", "message": "[filtered]" }) processed = get_before_send()(event, {}) assert processed == expected
SOCORRO_REVISION = get_version() # Comma-separated list of urls that serve version information in JSON format OVERVIEW_VERSION_URLS = config("OVERVIEW_VERSION_URLS", "") # Sentry aggregates reports of uncaught errors and other events SENTRY_DSN = config("SENTRY_DSN", "") SENTRY_DEBUG = config("SENTRY_DEBUG", False) # Be noisy at init and processing events if SENTRY_DSN: sentry_sdk.init( dsn=SENTRY_DSN, release=SOCORRO_REVISION, send_default_pii=False, integrations=[DjangoIntegration()], debug=SENTRY_DEBUG, before_send=get_before_send(), ) # Do not generate events for some logs (ERROR or above) ignore_logger(SENTRY_LOG_NAME) # avoid infinite logging loops ignore_logger( "django.security.DisallowedHost" ) # no fix needed, the system is working if SENTRY_DEBUG: # Add a DEBUG level handler for sentry processing messages LOGGING["handlers"]["sentry"] = { "level": "DEBUG", "class": "logging.StreamHandler", "formatter": "socorroapp", }
def test_repr(self): """The sanitizer has a useful repr without crashes.""" before_send = get_before_send() assert "SentrySanitizer" in repr(before_send)