File tree Expand file tree Collapse file tree 4 files changed +66
-5
lines changed Expand file tree Collapse file tree 4 files changed +66
-5
lines changed Original file line number Diff line number Diff line change 1+ {
2+ "Records" : [
3+ {
4+ "eventVersion" : " 2.0" ,
5+ "eventSource" : " aws:s3" ,
6+ "awsRegion" : " us-east-1" ,
7+ "eventTime" : " 1970-01-01T00:00:00.123Z" ,
8+ "eventName" : " ObjectCreated:Put" ,
9+ "userIdentity" : {
10+ "principalId" : " EXAMPLE"
11+ },
12+ "requestParameters" : {
13+ "sourceIPAddress" : " 127.0.0.1"
14+ },
15+ "responseElements" : {
16+ "x-amz-request-id" : " C3D13FE58DE4C810" ,
17+ "x-amz-id-2" : " FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18+ },
19+ "s3" : {
20+ "s3SchemaVersion" : " 1.0" ,
21+ "configurationId" : " testConfigRule" ,
22+ "bucket" : {
23+ "name" : " sourcebucket" ,
24+ "ownerIdentity" : {
25+ "principalId" : " EXAMPLE"
26+ },
27+ "arn" : " arn:aws:s3:::mybucket"
28+ },
29+ "object" : {
30+ "key" : " Happy%20Face.jpg" ,
31+ "urlDecodedKey" : " Happy Face.jpg" ,
32+ "size" : 1024 ,
33+ "versionId" : " version" ,
34+ "eTag" : " d41d8cd98f00b204e9800998ecf8427e" ,
35+ "sequencer" : " Happy Sequencer"
36+ }
37+ }
38+ }
39+ ]
40+ }
Original file line number Diff line number Diff line change 11import base64
22import json
33import zlib
4- from typing import List
4+ from typing import Any , List
55
66import pytest
77
@@ -69,6 +69,14 @@ def test_handle_cloudwatch_trigger_event_no_envelope():
6969 handle_cloudwatch_logs_no_envelope (event_dict , LambdaContext ())
7070
7171
72+ def test_handle_invalid_cloudwatch_trigger_event_no_envelope ():
73+ event_dict : Any = {"awslogs" : {"data" : "invalid_data" }}
74+ with pytest .raises (ValidationError ) as context :
75+ handle_cloudwatch_logs_no_envelope (event_dict , LambdaContext ())
76+
77+ assert context .value .errors ()[0 ]["msg" ] == "unable to decompress data"
78+
79+
7280def test_handle_invalid_event_with_envelope ():
7381 with pytest .raises (ValidationError ):
7482 handle_cloudwatch_logs (event = {}, context = LambdaContext ())
Original file line number Diff line number Diff line change @@ -413,6 +413,11 @@ def test_s3_key_unquote_plus():
413413 assert event .object_key == tricky_name
414414
415415
416+ def test_s3_key_url_decoded_key ():
417+ event = S3Event (load_event ("s3EventDecodedKey.json" ))
418+ assert event .object_key == event .record ["s3" ]["object" ]["urlDecodedKey" ]
419+
420+
416421def test_s3_glacier_event ():
417422 example_event = {
418423 "Records" : [
@@ -434,6 +439,14 @@ def test_s3_glacier_event():
434439 assert glacier_event_data .restore_event_data .lifecycle_restore_storage_class == "standard"
435440
436441
442+ def test_s3_glacier_event_json ():
443+ event = S3Event (load_event ("s3EventGlacier.json" ))
444+ glacier_event_data = event .record .glacier_event_data
445+ assert glacier_event_data is not None
446+ assert glacier_event_data .restore_event_data .lifecycle_restoration_expiry_time == "1970-01-01T00:01:00.000Z"
447+ assert glacier_event_data .restore_event_data .lifecycle_restore_storage_class == "standard"
448+
449+
437450def test_ses_trigger_event ():
438451 event = SESEvent (load_event ("sesEvent.json" ))
439452
Original file line number Diff line number Diff line change @@ -57,19 +57,19 @@ def reset_tracing_config(mocker):
5757
5858@pytest .fixture
5959def in_subsegment_mock ():
60- class Async_context_manager (mock .MagicMock ):
60+ class AsyncContextManager (mock .MagicMock ):
6161 async def __aenter__ (self , * args , ** kwargs ):
6262 return self .__enter__ ()
6363
6464 async def __aexit__ (self , * args , ** kwargs ):
6565 return self .__exit__ (* args , ** kwargs )
6666
67- class In_subsegment (NamedTuple ):
68- in_subsegment : mock .MagicMock = Async_context_manager ()
67+ class InSubsegment (NamedTuple ):
68+ in_subsegment : mock .MagicMock = AsyncContextManager ()
6969 put_annotation : mock .MagicMock = mock .MagicMock ()
7070 put_metadata : mock .MagicMock = mock .MagicMock ()
7171
72- in_subsegment = In_subsegment ()
72+ in_subsegment = InSubsegment ()
7373 in_subsegment .in_subsegment .return_value .__enter__ .return_value .put_annotation = in_subsegment .put_annotation
7474 in_subsegment .in_subsegment .return_value .__enter__ .return_value .put_metadata = in_subsegment .put_metadata
7575
You can’t perform that action at this time.
0 commit comments