File tree 4 files changed +66
-5
lines changed
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 1
1
import base64
2
2
import json
3
3
import zlib
4
- from typing import List
4
+ from typing import Any , List
5
5
6
6
import pytest
7
7
@@ -69,6 +69,14 @@ def test_handle_cloudwatch_trigger_event_no_envelope():
69
69
handle_cloudwatch_logs_no_envelope (event_dict , LambdaContext ())
70
70
71
71
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
+
72
80
def test_handle_invalid_event_with_envelope ():
73
81
with pytest .raises (ValidationError ):
74
82
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():
413
413
assert event .object_key == tricky_name
414
414
415
415
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
+
416
421
def test_s3_glacier_event ():
417
422
example_event = {
418
423
"Records" : [
@@ -434,6 +439,14 @@ def test_s3_glacier_event():
434
439
assert glacier_event_data .restore_event_data .lifecycle_restore_storage_class == "standard"
435
440
436
441
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
+
437
450
def test_ses_trigger_event ():
438
451
event = SESEvent (load_event ("sesEvent.json" ))
439
452
Original file line number Diff line number Diff line change @@ -57,19 +57,19 @@ def reset_tracing_config(mocker):
57
57
58
58
@pytest .fixture
59
59
def in_subsegment_mock ():
60
- class Async_context_manager (mock .MagicMock ):
60
+ class AsyncContextManager (mock .MagicMock ):
61
61
async def __aenter__ (self , * args , ** kwargs ):
62
62
return self .__enter__ ()
63
63
64
64
async def __aexit__ (self , * args , ** kwargs ):
65
65
return self .__exit__ (* args , ** kwargs )
66
66
67
- class In_subsegment (NamedTuple ):
68
- in_subsegment : mock .MagicMock = Async_context_manager ()
67
+ class InSubsegment (NamedTuple ):
68
+ in_subsegment : mock .MagicMock = AsyncContextManager ()
69
69
put_annotation : mock .MagicMock = mock .MagicMock ()
70
70
put_metadata : mock .MagicMock = mock .MagicMock ()
71
71
72
- in_subsegment = In_subsegment ()
72
+ in_subsegment = InSubsegment ()
73
73
in_subsegment .in_subsegment .return_value .__enter__ .return_value .put_annotation = in_subsegment .put_annotation
74
74
in_subsegment .in_subsegment .return_value .__enter__ .return_value .put_metadata = in_subsegment .put_metadata
75
75
You can’t perform that action at this time.
0 commit comments