def test_before_send(): SentryReporter.thread_strategy.set(None) # default scrubber = SentryScrubber() SentryReporter.init('', scrubber=scrubber) # pylint: disable=protected-access SentryReporter.last_event = None assert SentryReporter._before_send({}, {}) == {} assert SentryReporter._before_send(None, {}) is None assert SentryReporter._before_send(None, None) is None SentryReporter.global_strategy = SentryStrategy.SEND_SUPPRESSED assert SentryReporter.last_event is None # check that an event is stored assert SentryReporter._before_send({'a': 'b'}, None) is None assert SentryReporter.last_event == {'a': 'b'} # check an event has been processed SentryReporter.global_strategy = SentryStrategy.SEND_ALLOWED assert SentryReporter._before_send({'c': 'd'}, None) == {'c': 'd'} assert SentryReporter.last_event == {'a': 'b'} # check that event can be ignored assert SentryReporter._before_send( {'a': 'b'}, {'exc_info': [KeyboardInterrupt]}) is None # check information has been scrubbed assert SentryReporter._before_send( {'contexts': { 'reporter': { '_stacktrace': ['/Users/username/'] } }}, None) == { 'contexts': { 'reporter': { '_stacktrace': [f'/Users/{scrubber.placeholder_user}/'] } } } # check release assert SentryReporter._before_send({'release': '7.6.0'}, None) == { 'release': '7.6.0' } assert SentryReporter._before_send({'release': '7.6.0-GIT'}, None) == { 'release': None } # check confirmation SentryReporter.global_strategy = SentryStrategy.SEND_ALLOWED_WITH_CONFIRMATION SentryReporter.get_confirmation = lambda e: False assert SentryReporter._before_send({'a': 'b'}, None) is None SentryReporter.get_confirmation = lambda e: True assert SentryReporter._before_send({'a': 'b'}, None) == {'a': 'b'}
def test_init(mocked_init: Mock, sentry_reporter: SentryReporter): # test that `init` method set all necessary variables and calls `sentry_sdk.init()` sentry_reporter.init(sentry_url='url', release_version='release', scrubber=SentryScrubber(), strategy=SentryStrategy.SEND_SUPPRESSED) assert sentry_reporter.scrubber assert sentry_reporter.global_strategy == SentryStrategy.SEND_SUPPRESSED mocked_init.assert_called_once()
def init_sentry_reporter(): """ Initialise sentry reporter We use `sentry_url` as a URL for normal tribler mode and TEST_SENTRY_URL as a URL for sending sentry's reports while a Tribler client running in test mode """ test_sentry_url = os.environ.get('TEST_SENTRY_URL', None) if not test_sentry_url: SentryReporter.init( sentry_url=sentry_url, release_version=version_id, scrubber=SentryScrubber(), strategy=SentryStrategy.SEND_ALLOWED_WITH_CONFIRMATION) logger.info('Sentry has been initialised in normal mode') else: SentryReporter.init(sentry_url=test_sentry_url, release_version=version_id, scrubber=None, strategy=SentryStrategy.SEND_ALLOWED) logger.info('Sentry has been initialised in debug mode')
def test_init(): assert SentryReporter.init('')