aws / aws/aws-lambda-java-libs

EventLoader unable to correctly deserialize posted json body data for APIGateway events

Đang mở
#432 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
548
Fork
241
Merge trung bình
2 ngày 5 phút
Pull request đã merge (30 ngày)
11

Mô tả

Using aws-lambda-java-tests v 1.1.1 and attempting to write a unit test for my lambda function handler (integrated with API Gateway).

Here is a snippet from my junit test - attempting to load a test event to pass to the handler function:
```
APIGatewayV2HTTPEvent event = EventLoader.loadApiGatewayHttpEvent("events/broken.json");

//proceed to pass the event to the function handler

```
The contents of the file 'broken.json' are as follows :
```
{
"version": "2.0",
"headers": {
"content-type":"application/json"
},
"requestContext": {
"accountId": "123456789012",
"apiId": "api-id"
}
,
"body": {
"firstName":"John",
"lastName":"Doe",
"nickName":"Jonny D"
},
"isBase64Encoded": false
}
```
All the documentation and examples I've found only use a string as the body, but this is a fairly common use case (an HTTP API accepting json data into a POST for updating information). From above, the body has a simple json object structure representing a person. Because the APIGatewayV2HTTPEvent defines the body as a string, the EventLoader fails with the following exception:
```
java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (BufferedInputStream); line: 11, column: 11] (through reference chain: com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent["body"])
```

What am I missing here? Is this a deficiency in the EventLoader class, or am I attempting to test this behavior in the wrong way?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.