Skip to content

Commit 99d5370

Browse files
committed
fix(parser): apigw v2 body and QS can be null
1 parent 1b5494f commit 99d5370

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

aws_lambda_powertools/utilities/parser/models/apigwv2.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ class APIGatewayProxyEventV2Model(BaseModel):
6363
rawQueryString: str
6464
cookies: Optional[List[str]]
6565
headers: Dict[str, str]
66-
queryStringParameters: Dict[str, str]
66+
queryStringParameters: Optional[Dict[str, str]]
6767
pathParameters: Optional[Dict[str, str]]
6868
stageVariables: Optional[Dict[str, str]]
6969
requestContext: RequestContextV2
70-
body: str
70+
body: Optional[str]
7171
isBase64Encoded: bool

tests/functional/parser/test_apigwv2.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from aws_lambda_powertools.utilities.parser import envelopes, event_parser
1+
from aws_lambda_powertools.utilities.parser import envelopes, event_parser, parse
22
from aws_lambda_powertools.utilities.parser.models import (
33
APIGatewayProxyEventV2Model,
44
RequestContextV2,
@@ -90,3 +90,16 @@ def test_api_gateway_proxy_v2_event_iam_authorizer():
9090
assert iam.principalOrgId == "AwsOrgId"
9191
assert iam.userArn == "arn:aws:iam::1234567890:user/Admin"
9292
assert iam.userId == "AROA2ZJZYVRE7Y3TUXHH6"
93+
94+
95+
def test_apigw_event_empty_body():
96+
event = load_event("apiGatewayProxyV2Event.json")
97+
event.pop("body") # API GW v2 removes certain keys when no data is passed
98+
parse(event=event, model=APIGatewayProxyEventV2Model)
99+
100+
101+
def test_apigw_event_empty_query_strings():
102+
event = load_event("apiGatewayProxyV2Event.json")
103+
event["rawQueryString"] = ""
104+
event.pop("queryStringParameters") # API GW v2 removes certain keys when no data is passed
105+
parse(event=event, model=APIGatewayProxyEventV2Model)

0 commit comments

Comments
 (0)