8000 test(django): Add tests for permission denied handling (#482) · etherscan-io/sentry-python@ebc00b2 · GitHub
[go: up one dir, main page]

Skip to content

Commit ebc00b2

Browse files
authored
test(django): Add tests for permission denied handling (getsentry#482)
* test(django): Add tests for permission denied handling * fix: Skip drf test when drf not installed
1 parent 1042ecb commit ebc00b2

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

tests/integrations/django/myapp/urls.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@
3535
path("classbased", views.ClassBasedView.as_view(), name="classbased"),
3636
path("post-echo", views.post_echo, name="post_echo"),
3737
path("template-exc", views.template_exc, name="template_exc"),
38+
path(
39+
"permission-denied-exc",
40+
views.permission_denied_exc,
41+
name="permission_denied_exc",
42+
),
3843
]
3944

4045

@@ -50,6 +55,13 @@
5055
)
5156
)
5257
urlpatterns.append(path("rest-hello", views.rest_hello, name="rest_hello"))
58+
urlpatterns.append(
59+
path(
60+
"rest-permission-denied-exc",
61+
views.rest_permission_denied_exc,
62+
name="rest_permission_denied_exc",
63+
)
64+
)
5365
except AttributeError:
5466
pass
5567

tests/integrations/django/myapp/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.contrib.auth import login
22
from django.contrib.auth.models import User
3+
< 8000 span class=pl-k>from django.core.exceptions import PermissionDenied
34
from django.http import HttpResponse, HttpResponseServerError, HttpResponseNotFound
45
from django.shortcuts import render
56
from django.views.generic import ListView
@@ -20,6 +21,10 @@ def rest_framework_read_body_and_exc(request):
2021
def rest_hello(request):
2122
return HttpResponse("ok")
2223

24+
@api_view(["GET"])
25+
def rest_permission_denied_exc(request):
26+
raise PermissionDenied("bye")
27+
2328

2429
except ImportError:
2530
pass
@@ -73,3 +78,7 @@ def handler404(*args, **kwargs):
7378

7479
def template_exc(request, *args, **kwargs):
7580
return render(request, "error.html")
81+
82+
83+
def permission_denied_exc(*args, **kwargs):
84+
raise PermissionDenied("bye")

tests/integrations/django/test_basic.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,3 +479,19 @@ def test_rest_framework_basic(
479479
assert event["exception"]["values"][0]["mechanism"]["type"] == "django"
480480

481481
assert event["request"] == event_request(route)
482+
483+
484+
@pytest.mark.parametrize(
485+
"endpoint", ["rest_permission_denied_exc", "permission_denied_exc"]
486+
)
487+
def test_does_not_capture_403(sentry_init, client, capture_events, endpoint):
488+
if endpoint == "rest_permission_denied_exc":
489+
pytest.importorskip("rest_framework")
490+
491+
sentry_init(integrations=[DjangoIntegration()])
492+
events = capture_events()
493+
494+
_content, status, _headers = client.get(reverse(endpoint))
495+
assert status.lower() == "403 forbidden"
496+
497+
assert not events

0 commit comments

Comments
 (0)
0