"""Tests for step function logic.""" from unittest.mock import MagicMock from unittest.mock import patch import boto3 import pytest @patch('src.logic.step_function.get_sfn_client') def test_trigger_sfn(mock_get_sfn_client, mock_sfn_execution_arn): """Test trigger_sfn.""" from src.logic.step_function import trigger_sfn mock_client = MagicMock() mock_client.start_execution.return_value = mock_sfn_execution_arn mock_get_sfn_client.return_value = mock_client response = trigger_sfn({'data': {'indexing_inputs': [1, 2, 3]}}) assert response == mock_sfn_execution_arn @patch('src.logic.step_function.get_sfn_client') def test_execution_already_exists_handling(mock_get_sfn_client): """Test handling an exception when an execution already exists.""" from src.logic.step_function import trigger_sfn fake_client = boto3.client('stepfunctions', 'us-east-1') mock_client = MagicMock() mock_client.exceptions = fake_client.exceptions mock_client.start_execution.side_effect = fake_client.exceptions.ExecutionAlreadyExists( {'Error': {'Code': 'foo', 'Message': 'test'}}, 'op') mock_get_sfn_client.return_value = mock_client with pytest.raises(Exception) as er: trigger_sfn({'data': {'indexing_inputs': [1, 2, 3]}}) assert str(getattr(er, 'value', None)) == \ 'Failed to start step function: An error occurred (foo) when calling the op operation: ' \ "test, input: {'data': {'indexing_inputs': [1, 2, 3]}}"