@@ -532,9 +532,11 @@ def test_middleware_spans(sentry_init, client, capture_events, render_span_tree)
532532 - op="http.server": description=null
533533 - op="django.middleware": description="django.contrib.sessions.middleware.SessionMiddleware.__call__"
534534 - op="django.middleware": description="django.contrib.auth.middleware.AuthenticationMiddleware.__call__"
535- - op="django.middleware": description="tests.integrations.django.myapp.settings.TestMiddleware.__call__"
536- - op="django.middleware": description="tests.integrations.django.myapp.settings.TestFunctionMiddleware.__call__"
537- - op="django.view": description="message"\
535+ - op="django.middleware": description="django.middleware.csrf.CsrfViewMiddleware.__call__"
536+ - op="django.middleware": description="tests.integrations.django.myapp.settings.TestMiddleware.__call__"
537+ - op="django.middleware": description="tests.integrations.django.myapp.settings.TestFunctionMiddleware.__call__"
538+ - op="django.middleware": description="django.middleware.csrf.CsrfViewMiddleware.process_view"
539+ - op="django.view": description="message"\
538540 """
539541 )
540542
@@ -546,8 +548,10 @@ def test_middleware_spans(sentry_init, client, capture_events, render_span_tree)
546548 - op="django.middleware": description="django.contrib.sessions.middleware.SessionMiddleware.process_request"
547549 - op="django.middleware": description="django.contrib.auth.middleware.AuthenticationMiddleware.process_request"
548550 - op="django.middleware": description="tests.integrations.django.myapp.settings.TestMiddleware.process_request"
551+ - op="django.middleware": description="django.middleware.csrf.CsrfViewMiddleware.process_view"
549552 - op="django.view": description="message"
550553 - op="django.middleware": description="tests.integrations.django.myapp.settings.TestMiddleware.process_response"
554+ - op="django.middleware": description="django.middleware.csrf.CsrfViewMiddleware.process_response"
551555 - op="django.middleware": description="django.contrib.sessions.middleware.SessionMiddleware.process_response"\
552556 """
553557 )
@@ -566,3 +570,30 @@ def test_middleware_spans_disabled(sentry_init, client, capture_events):
566570 assert message ["message" ] == "hi"
567571
568572 assert not transaction ["spans" ]
573+
574+
575+ def test_csrf (sentry_init , client ):
576+ """
577+ Assert that CSRF view decorator works even with the view wrapped in our own
578+ callable.
579+ """
580+
581+ sentry_init (integrations = [DjangoIntegration ()])
582+
583+ content , status , _headers = client .post (reverse ("csrf_hello_not_exempt" ))
584+ assert status .lower () == "403 forbidden"
585+
586+ content , status , _headers = client .post (reverse ("sentryclass_csrf" ))
587+ assert status .lower () == "403 forbidden"
588+
589+ content , status , _headers = client .post (reverse ("sentryclass" ))
590+ assert status .lower () == "200 ok"
591+ assert b"" .join (content ) == b"ok"
592+
593+ content , status , _headers = client .post (reverse ("classbased" ))
594+ assert status .lower () == "200 ok"
595+ assert b"" .join (content ) == b"ok"
596+
597+ content , status , _headers = client .post (reverse ("message" ))
598+ assert status .lower () == "200 ok"
599+ assert b"" .join (content ) == b"ok"
0 commit comments