"""Test OrchLambdaHook.""" from unittest.mock import MagicMock from hooks.lambda_hook import OrchLambdaHook def test_lambda_successful_invocation(lambda_response_success, monkeypatch): """Test a successful invocation.""" mock_conn = MagicMock() mock_conn.invoke.return_value = lambda_response_success monkeypatch.setattr(OrchLambdaHook, 'conn', mock_conn) mock_hook = OrchLambdaHook('foo') result = mock_hook.invoke_lambda('{}') assert result.function_response.succeeded assert result.status_code == 200 assert result.error_message is None assert result.function_response.payload == { 'statusCode': 200, 'body': 'Hello from Lambda!' } def test_lambda_error_invocation(lambda_response_error, monkeypatch): """Test an error invocation.""" mock_conn = MagicMock() mock_conn.invoke.return_value = lambda_response_error monkeypatch.setattr(OrchLambdaHook, 'conn', mock_conn) mock_hook = OrchLambdaHook('foo') result = mock_hook.invoke_lambda('{}') assert not result.function_response.succeeded assert result.status_code == 200 assert result.error_message == 'function error' assert result.function_response.error.type == 'ValueError' assert result.function_response.error.message == 'This did not work' def test_constructor_calls_super_successful(monkeypatch): """Test that OrchLambdaHook constructor calls super with args.""" called_args = {} def mock_super_init(self, *args, **kwargs): called_args['args'] = args called_args['kwargs'] = kwargs monkeypatch.setattr('airflow.providers.amazon.aws.hooks.lambda_function.LambdaHook.__init__', mock_super_init) # noqa: E501 aws_conn_id = 'my_conn_id' OrchLambdaHook('foo', aws_conn_id=aws_conn_id) assert called_args['kwargs']['aws_conn_id'] == aws_conn_id assert 'region_name' in called_args['kwargs'] assert called_args['kwargs']['region_name'] == 'us-east-1' assert 'config' in called_args['kwargs'] def test_constructor_calls_super_defaults(monkeypatch): """Test that OrchLambdaHook constructor calls super with default args.""" called_args = {} def mock_super_init(self, *args, **kwargs): called_args['args'] = args called_args['kwargs'] = kwargs monkeypatch.setattr('airflow.providers.amazon.aws.hooks.lambda_function.LambdaHook.__init__', mock_super_init) # noqa: E501 monkeypatch.delenv('AWS_DEFAULT_REGION', raising=False) OrchLambdaHook('foo') assert 'region_name' in called_args['kwargs'] assert called_args['kwargs']['region_name'] == 'us-east-1' assert 'config' in called_args['kwargs']