fix: simulate lambda behavior for empty payload #834
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When you invoke a function with no payload the Lambda service passes
{}
(an empty json object) to your handler input parameter. The LambdaTestTool currently sends a null parameter not matching the way the service works.For example, the function below is configured with
DefaultLambdaJsonSerializer
. If you invoke with an empty payload in the LambdaTestTool the input parameter is null. Doing the the same in the Lambda service the input parameter is{}
deserialized, which gives you an instance ofAPIGatewayProxyRequest
with none of the properties set.public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest input, ILambdaContext context)
Description of changes:
LambdaExecutor.cs
- BuildParameters now passes{}
for an empty payloadInvokeFunctionTests.cs
- WithEventParameterTest tests a method that takes anS3Event
with an empty payloadFunctionSignatureExamples.csproj
- added reference toAmazon.Lambda.S3Events
InstanceMethods.cs
- added method that take anS3Event