"""Lambda test module.""" import pytest import exceptions @pytest.mark.parametrize( 'exc_cls, expected_to_capture', ( # Expected to capture Exception instances: (ValueError, True), (ZeroDivisionError, True), (Exception, True), # Expected not to capture anything else: (KeyboardInterrupt, False), (SystemExit, False), ) ) def test_sentry_capture_exception(exc_cls, expected_to_capture, mocker): """Test decorator sending errors to Sentry on exception.""" @exceptions.sentry_capture_exception def func_that_raises(): raise exc_cls() mock_sentry_client = mocker.patch('connectors.sentry.sentry_client') with pytest.raises(exc_cls): func_that_raises() if expected_to_capture: assert mock_sentry_client.captureException.called is True else: assert mock_sentry_client.captureException.called is False def test_sentry_capture_exception_noop(mocker): """Test decorator not modifying return value on successful execution.""" @exceptions.sentry_capture_exception def func_that_does_not_raise(): return True mock_sentry_client = mocker.patch('connectors.sentry.sentry_client') assert func_that_does_not_raise() is True assert mock_sentry_client.captureException.called is False