コード例 #1
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_exception(app, client, sentry_calls, sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    @app.route('/test')
    def simple(request):
        raise Exception

    response = await client.get('/test')
    assert response.status == 500

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 1
    assert sentry_calls[0][0] == 'api/1/store/'
    assert sentry_calls[0][1] == 'application/octet-stream'
    assert sentry_calls[0][2]['level'] == 40
    assert sentry_calls[0][2]['tags'] == {}
    assert sentry_calls[0][2]['project'] == '1'
    assert sentry_calls[0][2]['repos'] == {}
    assert set(sentry_calls[0][2]['extra'].keys()) == {
        'sys.argv', 'pathname', 'filename', 'stack_info', 'lineno', 'thread',
        'threadName', 'processName', 'process', 'asctime'
    }
    assert len(sentry_calls[0][2]['breadcrumbs']['values']) == 1
    assert sentry_calls[0][2]['breadcrumbs']['values'][0]['data'] == {}
    assert 'python' in sentry_calls[0][2]['modules']
コード例 #2
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_simple(app, client, sentry_url, sentry_calls):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    @app.route('/test')
    def simple(request):
        return sanic.response.text('text')

    response = await client.get('/test')
    assert response.status == 200
    response_text = await response.text()
    assert response_text == 'text'
    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 0
コード例 #3
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_websocket(app, websocket_client, sentry_calls, sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    @app.websocket('/test')
    async def simple(request, ws):
        await ws.send('text')

    ws_conn = await websocket_client.ws_connect('/test')
    msg = await ws_conn.receive()
    assert msg.data == 'text'
    await ws_conn.close()

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 0
コード例 #4
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_websocket_exception(app, websocket_client, sentry_calls,
                                   sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    @app.websocket('/test')
    async def simple(request, ws):
        raise Exception

    ws_conn = await websocket_client.ws_connect('/test')
    msg = await ws_conn.receive()
    assert msg.type.value == 258
    await ws_conn.close()

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 1
コード例 #5
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_warning_not_sent(app, client, sentry_calls, sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    @app.route('/test')
    def simple(request):
        logging.getLogger('sanic').warning('SOMETHING bad happen')
        return sanic.response.text('text')

    response = await client.get('/test')
    assert response.status == 200
    response_text = await response.text()
    assert response_text == 'text'

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 0
コード例 #6
0
ファイル: tests.py プロジェクト: ekampf/sanic-sentry
async def test_exception_in_error_handler(app, client, sentry_calls,
                                          sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    sanic_sentry.SanicSentry(app)

    class CustomException(Exception):
        pass

    @app.route('/test')
    def simple(request):
        raise CustomException

    @app.exception(CustomException)
    def handle_custom(request, exception):
        raise Exception

    response = await client.get('/test')
    assert response.status == 500

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 1
コード例 #7
0
async def test_warning(app, client, sentry_calls, sentry_url):
    app.config['SENTRY_DSN'] = sentry_url
    app.config['SENTRY_LEVEL'] = logging.WARNING
    sanic_sentry.SanicSentry(app)

    @app.route('/test')
    def simple(request):
        try:
            from sanic.log import logger
        except ImportError:
            logger = logging.getLogger('sanic')
        logger.warning('SOMETHING bad happen')
        return sanic.response.text('text')

    response = await client.get('/test')
    assert response.status == 200
    response_text = await response.text()
    assert response_text == 'text'

    await asyncio.sleep(0.01)
    assert len(sentry_calls) == 1
    assert sentry_calls[0][2]['level'] == 30