From 3452faeba241dd40dc936e4b6bfab5cb265c2eb7 Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Fri, 2 Oct 2026 13:52:58 +0200 Subject: [PATCH] ref(django): Drop `send_default_pii` support --- tests/integrations/django/test_basic.py | 41 +++++++----- .../django/test_data_scrubbing.py | 66 ++++--------------- .../integrations/django/test_db_query_data.py | 16 ++--- .../django/test_db_transactions.py | 10 +-- 4 files changed, 48 insertions(+), 85 deletions(-) diff --git a/tests/integrations/django/test_basic.py b/tests/integrations/django/test_basic.py index ef1b455516..6655462be6 100644 --- a/tests/integrations/django/test_basic.py +++ b/tests/integrations/django/test_basic.py @@ -56,7 +56,7 @@ def test_view_exceptions( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) exceptions = capture_exceptions() items = capture_items("event") @@ -85,7 +85,7 @@ def test_ensures_x_forwarded_header_is_honored_in_sdk_when_enabled_in_django( sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) exceptions = capture_exceptions() items = capture_items("event") @@ -111,7 +111,7 @@ def test_ensures_x_forwarded_header_is_not_honored_when_unenabled_in_django( """ sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) exceptions = capture_exceptions() items = capture_items("event") @@ -125,7 +125,7 @@ def test_ensures_x_forwarded_header_is_not_honored_when_unenabled_in_django( def test_middleware_exceptions(sentry_init, client, capture_exceptions): - sentry_init(integrations=[DjangoIntegration()], send_default_pii=True) + sentry_init(integrations=[DjangoIntegration()], data_collection={}) exceptions = capture_exceptions() client.get(reverse("middleware_exc")) @@ -313,7 +313,7 @@ def test_user_captured( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) items = capture_items("event") content, status, headers = unpack_werkzeug_response(client.get(reverse("mylogin"))) @@ -343,7 +343,7 @@ def test_materialized_user_captured( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) @@ -446,7 +446,7 @@ def test_custom_error_handler_request_context( def test_500(sentry_init, client): - sentry_init(integrations=[DjangoIntegration()], send_default_pii=True) + sentry_init(integrations=[DjangoIntegration()], data_collection={}) content, status, headers = unpack_werkzeug_response(client.get("/view-exc")) assert status.lower() == "500 internal server error" @@ -474,7 +474,7 @@ def test_sql_queries( ): sentry_init( integrations=[DjangoIntegration()] if with_integration else [], - send_default_pii=True, + data_collection={}, _experiments={"record_sql_params": True}, ) @@ -509,7 +509,7 @@ def test_sql_dict_query_params( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, _experiments={"record_sql_params": True}, ) @@ -586,7 +586,7 @@ def test_sql_psycopg2_string_composition( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, _experiments={ "record_sql_params": True, }, @@ -624,7 +624,7 @@ def test_sql_psycopg2_placeholders( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, _experiments={ "record_sql_params": True, }, @@ -695,7 +695,7 @@ def test_django_connect_trace( """ sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) @@ -736,7 +736,7 @@ def test_django_connect_breadcrumbs( """ sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) from django.db import connections @@ -761,7 +761,12 @@ def test_django_connect_breadcrumbs( assert event["breadcrumbs"]["values"][-2:] == [ {"message": "connect", "category": "query", "type": "default"}, - {"message": "select 1", "category": "query", "data": {}, "type": "default"}, + { + "message": "select 1", + "category": "query", + "data": {"db.paramstyle": "format"}, + "type": "default", + }, ] @@ -774,7 +779,7 @@ def test_db_connection_span_data( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) @@ -851,7 +856,7 @@ def test_segment_name( sentry_init( integrations=[DjangoIntegration()], traces_sample_rate=1.0, - send_default_pii=True, + data_collection={}, ) items = capture_items("event", "span") @@ -887,7 +892,7 @@ def test_segment_name_tracing_disabled( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) items = capture_items("event") @@ -1221,7 +1226,7 @@ def test_rest_framework_basic( pytest.importorskip("rest_framework") sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, ) exceptions = capture_exceptions() items = capture_items("event") diff --git a/tests/integrations/django/test_data_scrubbing.py b/tests/integrations/django/test_data_scrubbing.py index 52b16a1922..1202ca300f 100644 --- a/tests/integrations/django/test_data_scrubbing.py +++ b/tests/integrations/django/test_data_scrubbing.py @@ -117,34 +117,20 @@ def test_data_collection_cookies( @pytest.mark.forked @pytest_mark_django_db_decorator() @pytest.mark.parametrize( - "init_kwargs, expected_query_string", + "data_collection, expected_query_string", [ pytest.param( - {"send_default_pii": True}, - "toy=tennisball&color=red&auth=secret", - id="legacy_send_default_pii_true", - ), - pytest.param( - {"send_default_pii": False}, - "toy=tennisball&color=red&auth=secret", - id="legacy_send_default_pii_false", - ), - pytest.param( - {"data_collection": {}}, + {}, "toy=tennisball&color=red&auth=%5BFiltered%5D", id="data_collection_denylist_default", ), pytest.param( - { - "data_collection": { - "url_query_params": {"mode": "allowlist", "terms": ["toy"]} - } - }, + {"url_query_params": {"mode": "allowlist", "terms": ["toy"]}}, "toy=tennisball&color=%5BFiltered%5D&auth=%5BFiltered%5D", id="data_collection_allowlist", ), pytest.param( - {"data_collection": {"url_query_params": {"mode": "off"}}}, + {"url_query_params": {"mode": "off"}}, None, id="data_collection_off", ), @@ -154,10 +140,10 @@ def test_query_string_data_collection( sentry_init, client, capture_events, - init_kwargs, + data_collection, expected_query_string, ): - sentry_init(integrations=[DjangoIntegration()], **init_kwargs) + sentry_init(integrations=[DjangoIntegration()], data_collection=data_collection) events = capture_events() client.get(reverse("view_exc") + "?" + QUERY_STRING) @@ -173,34 +159,20 @@ def test_query_string_data_collection( @pytest.mark.forked @pytest_mark_django_db_decorator() @pytest.mark.parametrize( - "init_kwargs, expected_query", + "data_collection, expected_query", [ pytest.param( - {"send_default_pii": True}, - "toy=tennisball&color=red&auth=secret", - id="legacy_send_default_pii_true", - ), - pytest.param( - {"send_default_pii": False}, - None, - id="legacy_send_default_pii_false", - ), - pytest.param( - {"data_collection": {}}, + {}, "toy=tennisball&color=red&auth=%5BFiltered%5D", id="data_collection_denylist_default", ), pytest.param( - { - "data_collection": { - "url_query_params": {"mode": "allowlist", "terms": ["toy"]} - } - }, + {"url_query_params": {"mode": "allowlist", "terms": ["toy"]}}, "toy=tennisball&color=%5BFiltered%5D&auth=%5BFiltered%5D", id="data_collection_allowlist", ), pytest.param( - {"data_collection": {"url_query_params": {"mode": "off"}}}, + {"url_query_params": {"mode": "off"}}, None, id="data_collection_off", ), @@ -210,13 +182,13 @@ def test_span_http_query_data_collection( sentry_init, client, capture_items, - init_kwargs, + data_collection, expected_query, ): sentry_init( integrations=[DjangoIntegration()], traces_sample_rate=1.0, - **init_kwargs, + data_collection=data_collection, ) items = capture_items("span") @@ -234,20 +206,6 @@ def test_span_http_query_data_collection( assert root_span["attributes"][SPANDATA.HTTP_QUERY] == expected_query -@pytest.mark.forked -@pytest_mark_django_db_decorator() -def test_query_string_empty_legacy_emits_empty_string( - sentry_init, client, capture_events -): - sentry_init(integrations=[DjangoIntegration()], send_default_pii=True) - events = capture_events() - - client.get(reverse("view_exc")) - - (event,) = events - assert event["request"]["query_string"] == "" - - @pytest.mark.forked @pytest_mark_django_db_decorator() def test_empty_query_string_is_dropped_with_data_collection( diff --git a/tests/integrations/django/test_db_query_data.py b/tests/integrations/django/test_db_query_data.py index b20a1600f1..0435d8ef1c 100644 --- a/tests/integrations/django/test_db_query_data.py +++ b/tests/integrations/django/test_db_query_data.py @@ -38,7 +38,7 @@ def test_query_source_disabled( ): sentry_options = { "integrations": [DjangoIntegration()], - "send_default_pii": True, + "data_collection": {}, "traces_sample_rate": 1.0, "enable_db_query_source": False, "db_query_source_threshold_ms": 0, @@ -86,7 +86,7 @@ def test_query_source_enabled( ): sentry_options = { "integrations": [DjangoIntegration()], - "send_default_pii": True, + "data_collection": {}, "traces_sample_rate": 1.0, "db_query_source_threshold_ms": 0, } @@ -134,7 +134,7 @@ def test_query_source( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=0, @@ -199,7 +199,7 @@ def test_query_source_with_module_in_search_path( sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=0, @@ -255,7 +255,7 @@ def test_query_source_with_in_app_exclude( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=0, @@ -325,7 +325,7 @@ def test_query_source_with_in_app_include( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=0, @@ -382,7 +382,7 @@ def test_no_query_source_if_duration_too_short( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=100, @@ -451,7 +451,7 @@ def test_query_source_if_duration_over_threshold( ): sentry_init( integrations=[DjangoIntegration()], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, enable_db_query_source=True, db_query_source_threshold_ms=100, diff --git a/tests/integrations/django/test_db_transactions.py b/tests/integrations/django/test_db_transactions.py index 743a329325..c7c6febacf 100644 --- a/tests/integrations/django/test_db_transactions.py +++ b/tests/integrations/django/test_db_transactions.py @@ -645,7 +645,7 @@ def test_db_atomic_executemany( ): sentry_init( integrations=[DjangoIntegration(db_transaction_spans=True)], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) items = capture_items("span") @@ -729,7 +729,7 @@ def test_db_atomic_rollback_execute( ): sentry_init( integrations=[DjangoIntegration(db_transaction_spans=True)], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) @@ -793,7 +793,7 @@ def test_db_atomic_rollback_executemany( ): sentry_init( integrations=[DjangoIntegration(db_transaction_spans=True)], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) items = capture_items("span") @@ -879,7 +879,7 @@ def test_db_atomic_execute_exception( ): sentry_init( integrations=[DjangoIntegration(db_transaction_spans=True)], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) @@ -942,7 +942,7 @@ def test_db_atomic_executemany_exception( ): sentry_init( integrations=[DjangoIntegration(db_transaction_spans=True)], - send_default_pii=True, + data_collection={}, traces_sample_rate=1.0, ) items = capture_items("span")