1+ from typing import Any
2+
13import pytest
24
35from aws_lambda_powertools .utilities .parser import ValidationError , envelopes , parse
@@ -86,8 +88,26 @@ def test_validate_event_does_not_conform_with_model():
8688 parse (event = raw_event , model = MyDynamoBusiness , envelope = envelopes .DynamoDBStreamEnvelope )
8789
8890
89- def test_dynamo_db_stream_lambda_invocation_event ():
91+ @pytest .mark .parametrize (
92+ "response_context" ,
93+ [
94+ pytest .param (
95+ {"statusCode" : 200 , "executedVersion" : "$LATEST" },
96+ id = "without function error" ,
97+ ),
98+ pytest .param (
99+ {"statusCode" : 200 , "executedVersion" : "$LATEST" , "functionError" : None },
100+ id = "with null function error" ,
101+ ),
102+ pytest .param (
103+ {"statusCode" : 200 , "executedVersion" : "$LATEST" , "functionError" : "Unhandled" },
104+ id = "with function error" ,
105+ ),
106+ ],
107+ )
108+ def test_dynamo_db_stream_lambda_invocation_event (response_context : dict [str , Any ]):
90109 raw_event = load_event ("dynamoStreamLambdaInvocationEvent.json" )
110+ raw_event ["responseContext" ] = response_context
91111 parsed_event : DynamoDBStreamLambdaOnFailureDestinationModel = parse (
92112 event = raw_event ,
93113 model = DynamoDBStreamLambdaOnFailureDestinationModel ,
@@ -111,6 +131,8 @@ def test_dynamo_db_stream_lambda_invocation_event():
111131 )
112132 assert parsed_event .ddb_stream_batch_info .stream_arn == raw_event ["DDBStreamBatchInfo" ]["streamArn" ]
113133 assert parsed_event .request_context .model_dump (by_alias = True ) == raw_event ["requestContext" ]
114- assert parsed_event .response_context .model_dump (by_alias = True ) == raw_event ["responseContext" ]
134+ assert parsed_event .response_context .status_code == response_context ["statusCode" ]
135+ assert parsed_event .response_context .executed_version == response_context ["executedVersion" ]
136+ assert parsed_event .response_context .function_error == response_context .get ("functionError" )
115137 assert parsed_event .timestamp .strftime ("%Y-%m-%dT%H:%M:%SZ" ) == raw_event ["timestamp" ]
116138 assert parsed_event .version == raw_event ["version" ]
0 commit comments