Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions tests/integrations/django/myapp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@
path("message", views.message, name="message"),
path("mylogin", views.mylogin, name="mylogin"),
]

handler500 = views.handler500
6 changes: 5 additions & 1 deletion tests/integrations/django/myapp/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib.auth import login
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.http import HttpResponse, HttpResponseServerError

import sentry_sdk

Expand All @@ -19,3 +19,7 @@ def mylogin(request):
user.backend = "django.contrib.auth.backends.ModelBackend"
login(request, user)
return HttpResponse("ok")


def handler500(request):
return HttpResponseServerError("Sentry error: %s" % sentry_sdk.last_event_id())
13 changes: 12 additions & 1 deletion tests/integrations/django/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
except ImportError:
from django.core.urlresolvers import reverse

from sentry_sdk import Hub
from sentry_sdk import Hub, last_event_id

from tests.integrations.django.myapp.wsgi import application

Expand Down Expand Up @@ -77,6 +77,17 @@ def test_404(client):
assert status.lower() == "404 not found"


def test_500(client):
old_event_id = last_event_id()
content, status, headers = client.get("/view-exc")
assert status.lower() == "500 internal server error"
content = b"".join(content).decode("utf-8")
event_id = last_event_id()
assert content == "Sentry error: %s" % event_id
assert event_id is not None
assert old_event_id != event_id


def test_management_command_raises():
# This just checks for our assumption that Django passes through all
# exceptions by default, so our excepthook can be used for management
Expand Down
25 changes: 24 additions & 1 deletion tests/integrations/flask/test_flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from flask_login import LoginManager, login_user

from sentry_sdk import capture_message, capture_exception
from sentry_sdk import capture_message, capture_exception, last_event_id
from sentry_sdk.integrations.logging import LoggingIntegration
import sentry_sdk.integrations.flask as flask_sentry

Expand Down Expand Up @@ -361,3 +361,26 @@ def wsgi_app(environ, start_response):
error, = exceptions

assert error is exc.value


def test_500(sentry_init, capture_events, app):
sentry_init(integrations=[flask_sentry.FlaskIntegration()])

app.debug = False
app.testing = False

@app.route("/")
def index():
1 / 0

@app.errorhandler(500)
def error_handler(err):
return "Sentry error: %s" % last_event_id()

events = capture_events()

client = app.test_client()
response = client.get("/")

event, = events
assert response.data.decode("utf-8") == "Sentry error: %s" % event["event_id"]