Skip to content

Commit fb0be61

Browse files
committed
Added unit tests
1 parent ab594f1 commit fb0be61

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
from aws_lambda_powertools.utilities.data_classes import S3Event, SQSEvent, SNSEvent, EventBridgeEvent, KinesisFirehoseEvent
2+
from aws_lambda_powertools.utilities.data_classes.sns_event import SNSMessage
3+
from aws_lambda_powertools.utilities.data_classes.ses_event import SESEventRecord
4+
from aws_lambda_powertools.utilities.data_classes.s3_event import S3EventBridgeNotificationDetail
5+
import aws_lambda_powertools.utilities.data_classes.nested_test_events as nested_test_events
6+
7+
def test_sqs_s3(): # sqs(s3)
8+
raw_event = nested_test_events.sqs_s3_event
9+
parsed_event = SQSEvent(raw_event)
10+
11+
records = list(parsed_event.records)
12+
assert len(records) == 1
13+
record = records[0]
14+
record_raw = raw_event["Records"][0]
15+
assert record.aws_region == record_raw["awsRegion"]
16+
17+
s3_event = parsed_event.decode_nested_events(S3Event)
18+
for rec in s3_event:
19+
assert rec.bucket_name == "sqs-s3-unwrap-bucket-683517028648"
20+
21+
def test_sqs_s3_single(): # sqs(s3)
22+
raw_event = nested_test_events.sqs_s3_event
23+
parsed_event = SQSEvent(raw_event)
24+
25+
s3_event = parsed_event.decode_nested_event(S3Event)
26+
assert s3_event.bucket_name == "sqs-s3-unwrap-bucket-683517028648"
27+
28+
def test_sqs_sns(): # sqs(sns)
29+
raw_event = nested_test_events.sqs_sns_event
30+
parsed_event = SQSEvent(raw_event)
31+
32+
sns_event = parsed_event.decode_nested_events(SNSMessage)
33+
for rec in sns_event:
34+
assert rec.message == "from sns"
35+
36+
def test_sns_s3(): # sns(s3)
37+
raw_event = nested_test_events.sns_s3_event
38+
parsed_event = SNSEvent(raw_event)
39+
40+
s3_event = parsed_event.decode_nested_events(S3Event)
41+
for rec in s3_event:
42+
assert rec.bucket_name == "s3-sns-unwrap-bucket-683517028648"
43+
44+
def test_sqs_s3_multiple_events(): # sqs(s3, s3)
45+
raw_event = nested_test_events.sqs_s3_multi_event
46+
parsed_event = SQSEvent(raw_event)
47+
48+
s3_event = parsed_event.decode_nested_events(S3Event)
49+
for rec in s3_event:
50+
print('sqs_s3_multi_event bucket:', rec.bucket_name) #TODO:
51+
52+
def test_sqs_sns_s3_direct(): # sqs(sns(s3))
53+
raw_event = nested_test_events.sqs_sns_s3_event
54+
parsed_event = SQSEvent(raw_event)
55+
56+
sns_event = parsed_event.decode_nested_event(SNSMessage)
57+
s3_event = sns_event.decode_nested_event(S3Event)
58+
assert s3_event.bucket_name == "unwraptestevents-bucket-683517028648"
59+
60+
def test_sqs_sns_s3(): # sqs(sns(s3))
61+
raw_event = nested_test_events.sqs_sns_s3_event
62+
parsed_event = SQSEvent(raw_event)
63+
64+
sns_event = parsed_event.decode_nested_events(SNSMessage)
65+
for rec in sns_event:
66+
s3_event = rec.decode_nested_events(S3Event)
67+
for r in s3_event:
68+
assert r.bucket_name == "unwraptestevents-bucket-683517028648"
69+
70+
def test_sns_ses(): # sns(ses)
71+
raw_event = nested_test_events.sns_ses_event
72+
parsed_event = SNSEvent(raw_event)
73+
ses_event = parsed_event.decode_nested_events(SESEventRecord)
74+
for rec in ses_event:
75+
assert rec.get("mail").get('source') == "[email protected]"
76+
# print('rec:', rec.mail) #but can't do rec.mail bc no "SES" key
77+
78+
def test_eb_s3(): # eventbridge(s3)
79+
raw_event = nested_test_events.eb_s3_event
80+
parsed_event = EventBridgeEvent(raw_event)
81+
s3_event = parsed_event.decode_nested_events(S3EventBridgeNotificationDetail)
82+
for rec in s3_event:
83+
assert rec.bucket.name == "s3-eb-unwrap-sourcebucket-7mop1gqlyrzu"
84+
85+
86+
def test_sqs_eb_s3(): # sqs(eventbridge(s3))
87+
raw_event = nested_test_events.sqs_eb_s3_event
88+
parsed_event = SQSEvent(raw_event)
89+
90+
eb_event = parsed_event.decode_nested_events(EventBridgeEvent)
91+
for rec in eb_event:
92+
s3_event = rec.decode_nested_events(S3EventBridgeNotificationDetail)
93+
for r in s3_event:
94+
assert r.bucket.name == "s3-eb-unwrap-sourcebucket-7mop1gqlyrzu"
95+
96+
def test_firehose_sns_event(event = nested_test_events.firehose_sns_event): # firehose(sns)
97+
raw_event = nested_test_events.firehose_sns_event
98+
parsed_event = KinesisFirehoseEvent(raw_event)
99+
100+
sns_event = parsed_event.decode_nested_events(SNSMessage) #TODO: add a flag to auto decode?
101+
for rec in sns_event:
102+
assert rec.message == "message from sns"
103+
104+
def test_firehose_cw_event(): # firehose(cw)
105+
raw_event = nested_test_events.firehose_cw_event
106+
parsed_event = KinesisFirehoseEvent(raw_event)
107+
108+
# cw_event = parsed_event.decode_nested_events(CloudWatchLogsLogEvent) #TODO: gives back encrypted data, and can't be decoded w b64
109+
# for rec in cw_event:
110+
# print('type:', type(rec), rec)

0 commit comments

Comments
 (0)