Skip to content

Commit b051aa3

Browse files
committed
coverage
1 parent e016ba8 commit b051aa3

File tree

2 files changed

+13
-96
lines changed

2 files changed

+13
-96
lines changed
Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from typing import Dict, Any
22
from enum import Enum
33
from common.aws_lambda_sqs_event_record import AwsLambdaSqsEventRecord
4-
from common.clients import logger
54

65

76
class AwsEventType(Enum):
@@ -13,25 +12,17 @@ class AwsEventType(Enum):
1312

1413
class AwsLambdaEvent:
1514

16-
def __init__(self):
15+
def __init__(self, event: Dict[str, Any]):
1716
self.event_source = None
18-
self.records = []
1917
self.event_type = AwsEventType.UNKNOWN
20-
21-
def load_event(self, event: Dict[str, Any]) -> None:
2218
self.event_source = event.get('eventSource')
2319
if self.event_source in [e.value for e in AwsEventType]:
2420
self.event_type = AwsEventType(self.event_source)
25-
else:
26-
self.event_type = AwsEventType.UNKNOWN
2721

22+
self.records = []
2823
if "Records" in event:
2924
records_dict = event.get('Records', [])
3025
if self.event_type == AwsEventType.SQS:
3126
self.records = [AwsLambdaSqsEventRecord(record) for record in records_dict]
3227
else:
33-
# not handled retain as Dict
3428
self.records = records_dict
35-
else:
36-
self.records = []
37-
logger.info("No records found in event")
Lines changed: 11 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import unittest
2-
from unittest.mock import patch
32
from common.aws_lambda_event import AwsLambdaEvent, AwsEventType
43
from common.aws_lambda_sqs_event_record import AwsLambdaSqsEventRecord
54

@@ -23,72 +22,20 @@ def setUp(self):
2322
'awsRegion': 'us-east-1'
2423
}
2524

26-
self.s3_record_dict = {
27-
'eventVersion': '2.1',
28-
'eventSource': 'aws:s3',
29-
'eventName': 'ObjectCreated:Put',
30-
'eventTime': '2023-01-01T12:00:00.000Z',
31-
's3': {
32-
'bucket': {'name': 'test-bucket'},
33-
'object': {'key': 'test-file.txt'}
34-
}
35-
}
36-
37-
self.sns_record_dict = {
38-
'eventSource': 'aws:sns',
39-
'eventVersion': '1.0',
40-
'eventSubscriptionArn': 'arn:aws:sns:us-east-1:123456789012:test-topic',
41-
'Sns': {
42-
'Message': 'Test message',
43-
'Subject': 'Test subject'
44-
}
45-
}
46-
4725
def test_init_with_sqs_event(self):
4826
"""Test initialization with SQS event"""
4927
event = {
5028
'Records': [self.sqs_record_dict],
5129
'eventSource': 'aws:sqs'
5230
}
5331

54-
lambda_event = AwsLambdaEvent()
55-
lambda_event.load_event(event)
32+
lambda_event = AwsLambdaEvent(event)
5633

5734
self.assertEqual(lambda_event.event_type, AwsEventType.SQS)
5835
self.assertEqual(len(lambda_event.records), 1)
5936
self.assertIsInstance(lambda_event.records[0], AwsLambdaSqsEventRecord)
6037
self.assertEqual(lambda_event.records[0].message_id, '12345-abcde-67890')
6138

62-
def test_init_with_s3_event(self):
63-
"""Test initialization with S3 event"""
64-
event = {
65-
'Records': [self.s3_record_dict],
66-
'eventSource': 'aws:s3'
67-
}
68-
69-
lambda_event = AwsLambdaEvent()
70-
lambda_event.load_event(event)
71-
72-
self.assertEqual(lambda_event.event_type, AwsEventType.S3)
73-
self.assertEqual(len(lambda_event.records), 1)
74-
self.assertIsInstance(lambda_event.records[0], dict)
75-
self.assertEqual(lambda_event.records[0]['eventSource'], 'aws:s3')
76-
77-
def test_init_with_sns_event(self):
78-
"""Test initialization with SNS event"""
79-
event = {
80-
'Records': [self.sns_record_dict],
81-
'eventSource': 'aws:sns'
82-
}
83-
84-
lambda_event = AwsLambdaEvent()
85-
lambda_event.load_event(event)
86-
87-
self.assertEqual(lambda_event.event_type, AwsEventType.SNS)
88-
self.assertEqual(len(lambda_event.records), 1)
89-
self.assertIsInstance(lambda_event.records[0], dict)
90-
self.assertEqual(lambda_event.records[0]['eventSource'], 'aws:sns')
91-
9239
def test_init_with_multiple_sqs_records(self):
9340
"""Test initialization with multiple SQS records"""
9441
sqs_record_2 = self.sqs_record_dict.copy()
@@ -99,8 +46,7 @@ def test_init_with_multiple_sqs_records(self):
9946
'eventSource': 'aws:sqs'
10047
}
10148

102-
lambda_event = AwsLambdaEvent()
103-
lambda_event.load_event(event)
49+
lambda_event = AwsLambdaEvent(event)
10450

10551
self.assertEqual(lambda_event.event_type, AwsEventType.SQS)
10652
self.assertEqual(len(lambda_event.records), 2)
@@ -115,39 +61,23 @@ def test_init_with_empty_records(self):
11561
'Records': []
11662
}
11763

118-
lambda_event = AwsLambdaEvent()
119-
lambda_event.load_event(event)
64+
lambda_event = AwsLambdaEvent(event)
12065

12166
self.assertEqual(lambda_event.event_type, AwsEventType.UNKNOWN)
12267
self.assertEqual(len(lambda_event.records), 0)
12368

124-
@patch('common.aws_lambda_event.logger')
125-
def test_init_without_records(self, mock_logger):
69+
def test_init_without_records(self):
12670
"""Test initialization without Records key"""
12771
event = {
12872
'some_other_key': 'value'
12973
}
13074

131-
lambda_event = AwsLambdaEvent()
132-
lambda_event.load_event(event)
75+
lambda_event = AwsLambdaEvent(event)
13376

13477
self.assertEqual(lambda_event.event_type, AwsEventType.UNKNOWN)
13578
self.assertEqual(len(lambda_event.records), 0)
13679

137-
def test_init_with_top_level_event_source(self):
138-
"""Test initialization with eventSource at top level"""
139-
event = {
140-
'eventSource': 'aws:s3',
141-
'Records': [self.s3_record_dict]
142-
}
143-
144-
lambda_event = AwsLambdaEvent()
145-
lambda_event.load_event(event)
146-
147-
self.assertEqual(lambda_event.event_type, AwsEventType.S3)
148-
149-
@patch('common.aws_lambda_event.logger')
150-
def test_init_with_unknown_event_source(self, mock_logger):
80+
def test_init_with_unknown_event_source(self):
15181
"""Test initialization with unknown event source"""
15282
unknown_record = {
15383
'eventSource': 'aws:unknown-service',
@@ -157,8 +87,7 @@ def test_init_with_unknown_event_source(self, mock_logger):
15787
'Records': [unknown_record]
15888
}
15989

160-
lambda_event = AwsLambdaEvent()
161-
lambda_event.load_event(event)
90+
lambda_event = AwsLambdaEvent(event)
16291

16392
self.assertEqual(lambda_event.event_type, AwsEventType.UNKNOWN)
16493
self.assertEqual(len(lambda_event.records), 1)
@@ -173,8 +102,7 @@ def test_init_with_missing_event_source(self):
173102
'Records': [record_without_source]
174103
}
175104

176-
lambda_event = AwsLambdaEvent()
177-
lambda_event.load_event(event)
105+
lambda_event = AwsLambdaEvent(event)
178106

179107
self.assertEqual(lambda_event.event_type, AwsEventType.UNKNOWN)
180108

@@ -187,11 +115,10 @@ def test_enum_values(self):
187115

188116
def test_mixed_multiple_records(self):
189117
"""Test that mixed event sources uses the first record's type"""
190-
mixed_records = [self.sqs_record_dict, self.s3_record_dict]
118+
mixed_records = [self.sqs_record_dict, {}]
191119
event = {'Records': mixed_records, 'eventSource': 'aws:sqs'}
192120

193-
lambda_event = AwsLambdaEvent()
194-
lambda_event.load_event(event)
121+
lambda_event = AwsLambdaEvent(event)
195122

196123
self.assertEqual(lambda_event.event_type, AwsEventType.SQS)
197124
self.assertEqual(len(lambda_event.records), 2)
@@ -200,8 +127,7 @@ def test_empty_records(self):
200127
"""Test empty records"""
201128
event = {'Records': []}
202129

203-
lambda_event = AwsLambdaEvent()
204-
lambda_event.load_event(event)
130+
lambda_event = AwsLambdaEvent(event)
205131

206132
self.assertEqual(lambda_event.event_type, AwsEventType.UNKNOWN)
207133
self.assertEqual(len(lambda_event.records), 0)

0 commit comments

Comments
 (0)