Skip to content

Commit 3dd03df

Browse files
committed
test_s3_event
1 parent 20595f0 commit 3dd03df

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import unittest
2+
from common.aws_lambda_event import AwsEventType
3+
from common.s3_event import S3Event
4+
5+
6+
class TestS3Event(unittest.TestCase):
7+
8+
def setUp(self):
9+
"""Set up test fixtures"""
10+
self.s3_record_dict = {
11+
"eventVersion": "2.1",
12+
"eventSource": "aws:s3",
13+
"awsRegion": "us-west-2",
14+
"eventTime": "1970-01-01T00:00:00.000Z",
15+
"eventName": "ObjectCreated:Put",
16+
"userIdentity": {
17+
"principalId": "my-example-user"
18+
},
19+
"requestParameters": {
20+
"sourceIPAddress": "172.16.0.1"
21+
},
22+
"responseElements": {
23+
"x-amz-request-id": "C3D13FE58DE4C810",
24+
"x-amz-id-2": "FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
25+
},
26+
"s3": {
27+
"s3SchemaVersion": "1.0",
28+
"configurationId": "my-test-config",
29+
"bucket": {
30+
"name": "my-test-bucket",
31+
"ownerIdentity": {
32+
"principalId": "my-example-id"
33+
},
34+
"arn": "arn:aws:s3:::my-test-bucket"
35+
},
36+
"object": {
37+
"key": "my-test-key.csv",
38+
"size": 1024,
39+
"eTag": "d41d8cd98f00b204e9800998ecf8427e",
40+
"versionId": "096fKKXTRTtl3on89fVO.nfljtsv6qko",
41+
"sequencer": "0055AED6DCD90281E5"
42+
}
43+
}
44+
}
45+
46+
def test_s3_event(self):
47+
"""Test initialization with S3 event"""
48+
event = {
49+
'Records': [self.s3_record_dict],
50+
'eventSource': 'aws:s3'
51+
}
52+
53+
s3_event = S3Event(event)
54+
55+
self.assertEqual(s3_event.event_type, AwsEventType.S3)
56+
self.assertEqual(len(s3_event.records), 1)
57+
58+
s3_records = s3_event.get_s3_records()
59+
self.assertEqual(len(s3_records), 1)
60+
self.assertEqual(s3_records[0].get_bucket_name(), "my-test-bucket")
61+
self.assertEqual(s3_records[0].get_object_key(), "my-test-key.csv")
62+
63+
def test_s3_event_with_multiple_records(self):
64+
"""Test initialization with multiple s3 records"""
65+
s3_record_2 = self.s3_record_dict.copy()
66+
s3_record_2['s3']['bucket']['name'] = 'my-second-test-bucket'
67+
68+
event = {
69+
'Records': [self.s3_record_dict, s3_record_2],
70+
'eventSource': 'aws:s3'
71+
}
72+
73+
s3_event = S3Event(event)
74+
75+
self.assertEqual(s3_event.event_type, AwsEventType.S3)
76+
self.assertEqual(len(s3_event.records), 2)
77+
78+
s3_records = s3_event.get_s3_records()
79+
self.assertEqual(len(s3_records), 2)
80+
self.assertEqual(s3_records[1].get_bucket_name(), "my-second-test-bucket")
81+
82+
def test_s3_event_with_no_records(self):
83+
"""Test initialization with no s3 records"""
84+
event = {
85+
'Records': [],
86+
'eventSource': 'aws:s3'
87+
}
88+
89+
s3_event = S3Event(event)
90+
91+
self.assertEqual(s3_event.event_type, AwsEventType.S3)
92+
self.assertEqual(len(s3_event.records), 0)
93+
94+
s3_records = s3_event.get_s3_records()
95+
self.assertEqual(len(s3_records), 0)

0 commit comments

Comments
 (0)