"""Lambda test module.""" import pytest from src import app as index class TestHandler: """Test handler class.""" @pytest.fixture def max_retries(self): """Mock max retries.""" return 3 @pytest.fixture def backoff_interval_s(self): """Mock backoff interval seconds.""" return 300 @pytest.fixture def backoff_rate(self): """Mock backoff rate.""" return 2 @pytest.fixture def max_retries_config(self, mocker, max_retries): """Mock max retries config.""" return mocker.patch.object(index.config, 'MAX_RETRIES', max_retries) @pytest.fixture def backoff_interval_config(self, mocker, backoff_interval_s): """Mock backoff interval config.""" return mocker.patch.object(index.config, 'BACKOFF_INTERVAL_S', backoff_interval_s) @pytest.fixture def backoff_rate_config(self, mocker, backoff_rate): """Mock backoff rate config.""" return mocker.patch.object(index.config, 'BACKOFF_RATE', backoff_rate) def test_handler_retry_failure(self, max_retries): """Test handler function retry failure.""" event = {'retries': max_retries + 1} with pytest.raises(index.RetryException): index.handler(event, None) @pytest.mark.parametrize('retries, expected_result', [ (0, {'status': 'OK', 'retries': 1, 'backoff_time_s': 300}), (1, {'status': 'OK', 'retries': 2, 'backoff_time_s': 900}), (2, {'status': 'OK', 'retries': 3, 'backoff_time_s': 2100}), ]) def test_handler( self, max_retries_config, retries, backoff_interval_config, backoff_rate_config, expected_result ): """Test handler function success.""" event = {'retries': retries} result = index.handler(event, None) assert result == expected_result