Skip to content

Commit 3269543

Browse files
mitsuhikountitaker
authored andcommitted
test: Added tests for Flask and Django for last event id (#53)
1 parent 5bdbd24 commit 3269543

File tree

4 files changed

+43
-3
lines changed

4 files changed

+43
-3
lines changed

tests/integrations/django/myapp/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@
2828
path("message", views.message, name="message"),
2929
path("mylogin", views.mylogin, name="mylogin"),
3030
]
31+
32+
handler500 = views.handler500

tests/integrations/django/myapp/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.contrib.auth import login
22
from django.contrib.auth.models import User
3-
from django.http import HttpResponse
3+
from django.http import HttpResponse, HttpResponseServerError
44

55
import 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())

tests/integrations/django/test_basic.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
except 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

1717
from 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+
8091
def 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

tests/integrations/flask/test_flask.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from 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
1313
from sentry_sdk.integrations.logging import LoggingIntegration
1414
import 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"]

0 commit comments

Comments
 (0)