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 28
28
path ("message" , views .message , name = "message" ),
29
29
path ("mylogin" , views .mylogin , name = "mylogin" ),
30
30
]
31
+
32
+ handler500 = views .handler500
Original file line number Diff line number Diff line change 1
1
from django .contrib .auth import login
2
2
from django .contrib .auth .models import User
3
- from django .http import HttpResponse
3
+ from django .http import HttpResponse , HttpResponseServerError
4
4
5
5
import sentry_sdk
6
6
@@ -19,3 +19,7 @@ def mylogin(request):
19
19
user .backend = "django.contrib.auth.backends.ModelBackend"
20
20
login (request , user )
21
21
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 12
12
except ImportError :
13
13
from django .core .urlresolvers import reverse
14
14
15
- from sentry_sdk import Hub
15
+ from sentry_sdk import Hub , last_event_id
16
16
17
17
from tests .integrations .django .myapp .wsgi import application
18
18
@@ -77,6 +77,17 @@ def test_404(client):
77
77
assert status .lower () == "404 not found"
78
78
79
79
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
+
80
91
def test_management_command_raises ():
81
92
# This just checks for our assumption that Django passes through all
82
93
# exceptions by default, so our excepthook can be used for management
Original file line number Diff line number Diff line change 9
9
10
10
from flask_login import LoginManager , login_user
11
11
12
- from sentry_sdk import capture_message , capture_exception
12
+ from sentry_sdk import capture_message , capture_exception , last_event_id
13
13
from sentry_sdk .integrations .logging import LoggingIntegration
14
14
import sentry_sdk .integrations .flask as flask_sentry
15
15
@@ -361,3 +361,26 @@ def wsgi_app(environ, start_response):
361
361
error , = exceptions
362
362
363
363
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