From d8e8860a421506a7e0b4f70a6167586035b02f85 Mon Sep 17 00:00:00 2001 From: Dave O <114431827+dave-dotnet-overall@users.noreply.github.com> Date: Sun, 6 Apr 2025 07:29:42 +0100 Subject: [PATCH 1/2] Added 2 new properties for querystring parameters and multi value querystring parameters. --- .../utilities/data_classes/api_gateway_websocket_event.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py b/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py index f71e236f874..bb93cac7fe2 100644 --- a/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +++ b/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py @@ -123,6 +123,14 @@ def headers(self) -> dict[str, str]: def multi_value_headers(self) -> dict[str, list[str]]: return CaseInsensitiveDict(self.get("multiValueHeaders")) + @property + def query_string_parameters(self) -> dict[str, str]: + return CaseInsensitiveDict(self.get("queryStringParameters")) + + @property + def multi_value_query_string_parameters(self) -> dict[str, list[str]]: + return CaseInsensitiveDict(self.get("multiValueQueryStringParameters")) + @property def request_context(self) -> APIGatewayWebSocketEventRequestContext: return APIGatewayWebSocketEventRequestContext(self["requestContext"]) From 6e649e0100fc4103700fc1add83a73829ec92c54 Mon Sep 17 00:00:00 2001 From: Dave O <114431827+dave-dotnet-overall@users.noreply.github.com> Date: Mon, 7 Apr 2025 05:55:07 +0100 Subject: [PATCH 2/2] Added missing test cases for querystring properties --- tests/events/apiGatewayWebSocketApiConnect.json | 9 +++++++++ tests/events/apiGatewayWebSocketApiDisconnect.json | 9 +++++++++ .../test_api_gateway_websocket_event.py | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/tests/events/apiGatewayWebSocketApiConnect.json b/tests/events/apiGatewayWebSocketApiConnect.json index 27f8794c9bd..188d5869326 100644 --- a/tests/events/apiGatewayWebSocketApiConnect.json +++ b/tests/events/apiGatewayWebSocketApiConnect.json @@ -19,6 +19,15 @@ "X-Forwarded-Port": ["443"], "X-Forwarded-Proto": ["https"] }, + "queryStringParameters": { + "userId": "user123", + "token": "abc.def.ghi" + }, + "multiValueQueryStringParameters": { + "userId": ["123"], + "token": ["abc.def.ghi"], + "filter": ["new", "unread"] + }, "requestContext": { "routeKey": "$connect", "eventType": "CONNECT", diff --git a/tests/events/apiGatewayWebSocketApiDisconnect.json b/tests/events/apiGatewayWebSocketApiDisconnect.json index f4624562ef6..4c72f44149f 100644 --- a/tests/events/apiGatewayWebSocketApiDisconnect.json +++ b/tests/events/apiGatewayWebSocketApiDisconnect.json @@ -11,6 +11,15 @@ "X-Forwarded-For": [""], "x-restapi": [""] }, + "queryStringParameters": { + "userId": "user123", + "token": "abc.def.ghi" + }, + "multiValueQueryStringParameters": { + "userId": ["123"], + "token": ["abc.def.ghi"], + "filter": ["new", "unread"] + }, "requestContext": { "routeKey": "$disconnect", "disconnectStatusCode": 1005, diff --git a/tests/unit/data_classes/required_dependencies/test_api_gateway_websocket_event.py b/tests/unit/data_classes/required_dependencies/test_api_gateway_websocket_event.py index faee5b17289..e06c72b8d4a 100644 --- a/tests/unit/data_classes/required_dependencies/test_api_gateway_websocket_event.py +++ b/tests/unit/data_classes/required_dependencies/test_api_gateway_websocket_event.py @@ -14,6 +14,8 @@ def test_connect_api_gateway_websocket_event(): assert parsed_event.json_body is None assert parsed_event.headers == raw_event["headers"] assert parsed_event.multi_value_headers == raw_event["multiValueHeaders"] + assert parsed_event.query_string_parameters == raw_event["queryStringParameters"] + assert parsed_event.multi_value_query_string_parameters == raw_event["multiValueQueryStringParameters"] request_context = parsed_event.request_context request_context_raw = raw_event["requestContext"] @@ -84,6 +86,8 @@ def test_message_api_gateway_websocket_event(): assert parsed_event.json_body == json.loads(raw_event["body"]) assert parsed_event.headers == {} assert parsed_event.multi_value_headers == {} + assert parsed_event.query_string_parameters == {} + assert parsed_event.multi_value_query_string_parameters == {} request_context = parsed_event.request_context request_context_raw = raw_event["requestContext"]