@@ -274,6 +274,40 @@ def lambda_handler(event, context):
274
274
stubber .assert_no_pending_responses ()
275
275
stubber .deactivate ()
276
276
277
+ @pytest .mark .parametrize ("idempotency_config" , [{"use_local_cache" : False }, {"use_local_cache" : True }], indirect = True )
278
+ def test_idempotent_lambda_first_execution_event_mutation (
279
+ idempotency_config : IdempotencyConfig ,
280
+ persistence_store : DynamoDBPersistenceLayer ,
281
+ lambda_apigw_event ,
282
+ expected_params_update_item ,
283
+ expected_params_put_item ,
284
+ lambda_response ,
285
+ serialized_lambda_response ,
286
+ deserialized_lambda_response ,
287
+ hashed_idempotency_key ,
288
+ lambda_context ,
289
+ ):
290
+ """
291
+ Test idempotent decorator where lambda_handler is mutates the event
292
+ """
293
+
294
+ stubber = stub .Stubber (persistence_store .table .meta .client )
295
+ ddb_response = {}
296
+
297
+ stubber .add_response ("put_item" , ddb_response , expected_params_put_item )
298
+ stubber .add_response ("update_item" , ddb_response , expected_params_update_item )
299
+ stubber .activate ()
300
+
301
+ @idempotent (config = idempotency_config , persistence_store = persistence_store )
302
+ def lambda_handler (event , context ):
303
+ event .popitem ()
304
+ return lambda_response
305
+
306
+ lambda_handler (lambda_apigw_event , lambda_context )
307
+
308
+ stubber .assert_no_pending_responses ()
309
+ stubber .deactivate ()
310
+
277
311
278
312
@pytest .mark .parametrize ("idempotency_config" , [{"use_local_cache" : False }, {"use_local_cache" : True }], indirect = True )
279
313
def test_idempotent_lambda_expired (
0 commit comments