"""Test handler.""" import handler import pytest import requests import sentry_sdk from botocore.errorfactory import ClientError from daemon_asset_copy import config from daemon_asset_copy.logic import task_worker def test_handler(mocker): """Test handler.""" mocker.patch.object(task_worker, 'entrypoint', autospec=True) mocker.patch.object(sentry_sdk, 'init', autospec=True) mocker.patch.object(requests, 'get', autospec=True) config.SENTRY_DSN = 'test_sentry_dsn' config.MAX_WAIT_READY_SECONDS_DATADOG = '123' config.URL_DATADOG = 'some url' handler.main() task_worker.entrypoint.assert_called_once_with() sentry_sdk.init.assert_called_once_with( 'test_sentry_dsn', before_send=handler.before_send_exception_to_sentry ) clienterror_timeout_code = ClientError({'Error': {'Code': 'TaskTimedOut'}}, 'asdf') clienterror_no_code = ClientError({}, 'asdf') clienterror_non_timeout_code = ClientError( {'Error': {'Code': 'NotTaskTimedOutWhateves'}}, 'asdf' ) exception = Exception test_event = 'test_event' @pytest.mark.parametrize( ('raised_exception', 'expected_return'), [ (clienterror_timeout_code, None), (clienterror_no_code, test_event), (clienterror_non_timeout_code, test_event), (exception, test_event), ], ) def test_before_send_exception_to_sentry(raised_exception, expected_return): """Test before_send_exception_to_sentry.""" assert ( handler.before_send_exception_to_sentry( 'test_event', {'exc_info': ('blah', raised_exception, 'blah blah')}, ) == expected_return )