-
Notifications
You must be signed in to change notification settings - Fork 90
fix: envelope is not taken into account with built-in types #960
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
3c8019a
ee7b512
4bd8305
e54c4d9
38fa03f
1864050
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
* Copyright 2020 Amazon.com, Inc. or its affiliates. | ||
* Licensed under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* | ||
*/ | ||
package software.amazon.lambda.powertools.validation.handlers; | ||
|
||
import com.amazonaws.services.lambda.runtime.Context; | ||
import com.amazonaws.services.lambda.runtime.RequestHandler; | ||
import com.amazonaws.services.lambda.runtime.events.SQSEvent; | ||
import software.amazon.lambda.powertools.validation.Validation; | ||
|
||
public class SQSWithCustomEnvelopeHandler implements RequestHandler<SQSEvent, String> { | ||
|
||
@Override | ||
@Validation(inboundSchema = "classpath:/schema_v7.json", envelope = "records[*].powertools_json(body).powertools_json(Message)") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. One last thing, notices how records in the envelope JMSPath starts with a lower-case There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are actually right, the issue is that using the aws-lambda-java-events library, SQSEvent has a "records" (r) field while the true event has a "Records" (R). The validation library uses the event library, which is actually wrong when talking about JMESPath which looks at the real JSON... The test should have There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hi Jerome, In any case, I don't think this is related to this PR, so I think this PR does need to be updated. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually I was thinking about correcting the code to match the truth (R) and make the test with R pass. Small r should not work as the real event has big R... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree with you @jeromevdl There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see e54c4d9 Maybe not related to the PR, but we have to fix it anyway |
||
public String handleRequest(SQSEvent input, Context context) { | ||
return "OK"; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{ | ||
"Records": [ | ||
{ | ||
"messageId": "d9144555-9a4f-4ec3-99a0-fc4e625a8db2", | ||
"receiptHandle": "7kam5bfzbDsjtcjElvhSbxeLJbeey3A==", | ||
"body": "{\n \"Message\": \"{\\n \\\"id\\\": 43242,\\n \\\"name\\\": \\\"FooBar XY\\\",\\n \\\"price\\\": 258\\n}\"}", | ||
"attributes": { | ||
"ApproximateReceiveCount": "1", | ||
"SentTimestamp": "1601975709495", | ||
"SenderId": "AROAIFU457DVZ5L2J53F2", | ||
"ApproximateFirstReceiveTimestamp": "1601975709499" | ||
}, | ||
"messageAttributes": { | ||
|
||
}, | ||
"md5OfBody": "0f96e88a291edb4429f2f7b9fdc3df96", | ||
"eventSource": "aws:sqs", | ||
"eventSourceARN": "arn:aws:sqs:eu-central-1:123456789012:TestLambda", | ||
"awsRegion": "eu-central-1" | ||
} | ||
] | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could there be cases where customer functionality changes because of this reordering?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potentially, if they have an envelope specified (which is not used today). It will be used after update.