104 lines
2.6 KiB
Python
104 lines
2.6 KiB
Python
from aiohttp import web
|
|
|
|
from sentry_sdk.integrations.aiohttp import AioHttpIntegration
|
|
|
|
|
|
async def test_basic(sentry_init, aiohttp_client, loop, capture_events):
|
|
sentry_init(integrations=[AioHttpIntegration()])
|
|
|
|
async def hello(request):
|
|
1 / 0
|
|
|
|
app = web.Application()
|
|
app.router.add_get("/", hello)
|
|
|
|
events = capture_events()
|
|
|
|
client = await aiohttp_client(app)
|
|
resp = await client.get("/")
|
|
assert resp.status == 500
|
|
|
|
event, = events
|
|
|
|
assert (
|
|
event["transaction"]
|
|
== "tests.integrations.aiohttp.test_aiohttp.test_basic.<locals>.hello"
|
|
)
|
|
|
|
exception, = event["exception"]["values"]
|
|
assert exception["type"] == "ZeroDivisionError"
|
|
request = event["request"]
|
|
host = request["headers"]["Host"]
|
|
|
|
assert request["env"] == {"REMOTE_ADDR": "127.0.0.1"}
|
|
assert request["method"] == "GET"
|
|
assert request["query_string"] == ""
|
|
assert request["url"] == "http://{host}/".format(host=host)
|
|
assert request["headers"] == {
|
|
"Accept": "*/*",
|
|
"Accept-Encoding": "gzip, deflate",
|
|
"Host": host,
|
|
"User-Agent": request["headers"]["User-Agent"],
|
|
}
|
|
|
|
|
|
async def test_403_not_captured(sentry_init, aiohttp_client, loop, capture_events):
|
|
sentry_init(integrations=[AioHttpIntegration()])
|
|
|
|
async def hello(request):
|
|
raise web.HTTPForbidden()
|
|
|
|
app = web.Application()
|
|
app.router.add_get("/", hello)
|
|
|
|
events = capture_events()
|
|
|
|
client = await aiohttp_client(app)
|
|
resp = await client.get("/")
|
|
assert resp.status == 403
|
|
|
|
assert not events
|
|
|
|
|
|
async def test_half_initialized(sentry_init, aiohttp_client, loop, capture_events):
|
|
sentry_init(integrations=[AioHttpIntegration()])
|
|
sentry_init()
|
|
|
|
async def hello(request):
|
|
return web.Response(text="hello")
|
|
|
|
app = web.Application()
|
|
app.router.add_get("/", hello)
|
|
|
|
events = capture_events()
|
|
|
|
client = await aiohttp_client(app)
|
|
resp = await client.get("/")
|
|
assert resp.status == 200
|
|
|
|
assert events == []
|
|
|
|
|
|
async def test_tracing(sentry_init, aiohttp_client, loop, capture_events):
|
|
sentry_init(integrations=[AioHttpIntegration()], traces_sample_rate=1.0)
|
|
|
|
async def hello(request):
|
|
return web.Response(text="hello")
|
|
|
|
app = web.Application()
|
|
app.router.add_get("/", hello)
|
|
|
|
events = capture_events()
|
|
|
|
client = await aiohttp_client(app)
|
|
resp = await client.get("/")
|
|
assert resp.status == 200
|
|
|
|
event, = events
|
|
|
|
assert event["type"] == "transaction"
|
|
assert (
|
|
event["transaction"]
|
|
== "tests.integrations.aiohttp.test_aiohttp.test_tracing.<locals>.hello"
|
|
)
|