File tree Expand file tree Collapse file tree 4 files changed +43
-3
lines changed
Expand file tree Collapse file tree 4 files changed +43
-3
lines changed Original file line number Diff line number Diff line change 2828 path ("message" , views .message , name = "message" ),
2929 path ("mylogin" , views .mylogin , name = "mylogin" ),
3030]
31+
32+ handler500 = views .handler500
Original file line number Diff line number Diff line change 11from django .contrib .auth import login
22from django .contrib .auth .models import User
3- from django .http import HttpResponse
3+ from django .http import HttpResponse , HttpResponseServerError
44
55import sentry_sdk
66
@@ -19,3 +19,7 @@ def mylogin(request):
1919 user .backend = "django.contrib.auth.backends.ModelBackend"
2020 login (request , user )
2121 return HttpResponse ("ok" )
22+
23+
24+ def handler500 (request ):
25+ return HttpResponseServerError ("Sentry error: %s" % sentry_sdk .last_event_id ())
Original file line number Diff line number Diff line change 1212except ImportError :
1313 from django .core .urlresolvers import reverse
1414
15- from sentry_sdk import Hub
15+ from sentry_sdk import Hub , last_event_id
1616
1717from tests .integrations .django .myapp .wsgi import application
1818
@@ -77,6 +77,17 @@ def test_404(client):
7777 assert status .lower () == "404 not found"
7878
7979
80+ def test_500 (client ):
81+ old_event_id = last_event_id ()
82+ content , status , headers = client .get ("/view-exc" )
83+ assert status .lower () == "500 internal server error"
84+ content = b"" .join (content ).decode ("utf-8" )
85+ event_id = last_event_id ()
86+ assert content == "Sentry error: %s" % event_id
87+ assert event_id is not None
88+ assert old_event_id != event_id
89+
90+
8091def test_management_command_raises ():
8192 # This just checks for our assumption that Django passes through all
8293 # exceptions by default, so our excepthook can be used for management
Original file line number Diff line number Diff line change 99
1010from flask_login import LoginManager , login_user
1111
12- from sentry_sdk import capture_message , capture_exception
12+ from sentry_sdk import capture_message , capture_exception , last_event_id
1313from sentry_sdk .integrations .logging import LoggingIntegration
1414import sentry_sdk .integrations .flask as flask_sentry
1515
@@ -361,3 +361,26 @@ def wsgi_app(environ, start_response):
361361 error , = exceptions
362362
363363 assert error is exc .value
364+
365+
366+ def test_500 (sentry_init , capture_events , app ):
367+ sentry_init (integrations = [flask_sentry .FlaskIntegration ()])
368+
369+ app .debug = False
370+ app .testing = False
371+
372+ @app .route ("/" )
373+ def index ():
374+ 1 / 0
375+
376+ @app .errorhandler (500 )
377+ def error_handler (err ):
378+ return "Sentry error: %s" % last_event_id ()
379+
380+ events = capture_events ()
381+
382+ client = app .test_client ()
383+ response = client .get ("/" )
384+
385+ event , = events
386+ assert response .data .decode ("utf-8" ) == "Sentry error: %s" % event ["event_id" ]
You can’t perform that action at this time.
0 commit comments