diff --git a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Runtime/LambdaExecutor.cs b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Runtime/LambdaExecutor.cs index 19ee1dd83..c31b14892 100644 --- a/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Runtime/LambdaExecutor.cs +++ b/Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/Runtime/LambdaExecutor.cs @@ -194,9 +194,10 @@ public static object[] BuildParameters(ExecutionRequest request, ILambdaContext { parmValues[i] = context; } - else if(request.Payload != null) + else { - var stream = new MemoryStream(Encoding.UTF8.GetBytes(request.Payload)); + var bytes = Encoding.UTF8.GetBytes((request.Payload != null) ? request.Payload : "{}"); + var stream = new MemoryStream(bytes); if (request.Function.Serializer != null) { var genericMethodInfo = request.Function.Serializer.GetType() diff --git a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests.Shared/InvokeFunctionTests.cs b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests.Shared/InvokeFunctionTests.cs index eb4782be1..4b167c4be 100644 --- a/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests.Shared/InvokeFunctionTests.cs +++ b/Tools/LambdaTestTool/tests/Amazon.Lambda.TestTool.Tests.Shared/InvokeFunctionTests.cs @@ -86,6 +86,18 @@ public async Task WithGenericParameterTest() Assert.Equal("\"Value1,Value2\"", response.Response); } + [Fact] + public async Task WithEventParameterTest() + { + + var response = await ExecuteFunctionAsync( + "FunctionSignatureExamples::FunctionSignatureExamples.InstanceMethods::WithEventParameter", + null); + + Assert.True(response.IsSuccess); + Assert.Equal("\"WithEventParameter-event-not-null\"", response.Response); + } + [Fact] public async Task TaskWithNoResultTest() { diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/FunctionSignatureExamples.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/FunctionSignatureExamples.csproj index f84ad50f0..05a705b79 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/FunctionSignatureExamples.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/FunctionSignatureExamples.csproj @@ -6,6 +6,7 @@ + diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/InstanceMethods.cs b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/InstanceMethods.cs index 397185bbc..fe21726f3 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/InstanceMethods.cs +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore21/FunctionSignatureExamples/InstanceMethods.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Amazon.Lambda.Core; +using Amazon.Lambda.S3Events; // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] @@ -44,5 +45,11 @@ public string WithGenericParameter(List values, ILambdaContext context) context.Logger.LogLine("Calling WithGenericParameter"); return string.Join(',', values.ToArray()); } + + public string WithEventParameter(S3Event evnt, ILambdaContext context) + { + context.Logger.LogLine("Calling WithEventParameter"); + return "WithEventParameter-" + ((evnt != null) ? "event-not-null" : "event-null"); + } } } diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/FunctionSignatureExamples.csproj b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/FunctionSignatureExamples.csproj index ab5f4904d..eea78b7d1 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/FunctionSignatureExamples.csproj +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/FunctionSignatureExamples.csproj @@ -6,6 +6,7 @@ + diff --git a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/InstanceMethods.cs b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/InstanceMethods.cs index 397185bbc..fe21726f3 100644 --- a/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/InstanceMethods.cs +++ b/Tools/LambdaTestTool/tests/LambdaFunctions/netcore31/FunctionSignatureExamples/InstanceMethods.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Amazon.Lambda.Core; +using Amazon.Lambda.S3Events; // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] @@ -44,5 +45,11 @@ public string WithGenericParameter(List values, ILambdaContext context) context.Logger.LogLine("Calling WithGenericParameter"); return string.Join(',', values.ToArray()); } + + public string WithEventParameter(S3Event evnt, ILambdaContext context) + { + context.Logger.LogLine("Calling WithEventParameter"); + return "WithEventParameter-" + ((evnt != null) ? "event-not-null" : "event-null"); + } } }