"""Tests for the AWS Step Function connector.""" import json from unittest.mock import patch from timed_release.connectors import sfn @patch( 'timed_release.connectors.sfn.boto3.client', return_value='step_function_client' ) def test_get_step_function_client(mock_boto_client): """Test getting boto3.client.""" step_function_client = sfn.get_step_function_client() mock_boto_client.assert_called_with( 'stepfunctions', region_name='us-east-1') assert step_function_client == 'step_function_client' @patch('timed_release.connectors.sfn.boto3.client.start_execution') @patch('timed_release.connectors.sfn.boto3.client') def test_start_execution(mock_boto_client, mock_start_execution): """Test boto3.client.start_execution() success.""" product_id = 1234 value = 'return value' arn = 'something:arn:group:region:idk' name = 'look at me!' mock_boto_client.return_value = mock_boto_client mock_start_execution.return_value = value result = sfn.execute_step_function( arn=arn, name=name, product_id=product_id) assert result == value mock_boto_client.start_execution.assert_called_once_with( stateMachineArn=arn, name=name, input=json.dumps({'product_id': product_id}) )