Skip to content

Commit a50116c

Browse files
committed
chore: begin functional to unit test migration
1 parent d5baff6 commit a50116c

File tree

3 files changed

+108
-147
lines changed

3 files changed

+108
-147
lines changed

tests/functional/parser/test_s3.py

Lines changed: 1 addition & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
from datetime import datetime
2-
31
import pytest
42

53
from aws_lambda_powertools.utilities.parser import ValidationError, event_parser, parse
6-
from aws_lambda_powertools.utilities.parser.models import (
7-
S3EventNotificationEventBridgeModel,
8-
S3Model,
9-
S3RecordModel,
10-
)
4+
from aws_lambda_powertools.utilities.parser.models import S3Model, S3RecordModel
115
from aws_lambda_powertools.utilities.typing import LambdaContext
126
from tests.functional.utils import load_event
137

@@ -117,26 +111,6 @@ def test_s3_none_etag_value_failed_validation():
117111
parse(event=event_dict, model=S3Model)
118112

119113

120-
def test_s3_eventbridge_notification_object_created_event():
121-
event_dict = load_event("s3EventBridgeNotificationObjectCreatedEvent.json")
122-
handle_s3_eventbridge_object_created(event_dict, LambdaContext())
123-
124-
125-
def test_s3_eventbridge_notification_object_deleted_event():
126-
event_dict = load_event("s3EventBridgeNotificationObjectDeletedEvent.json")
127-
handle_s3_eventbridge_object_deleted(event_dict, LambdaContext())
128-
129-
130-
def test_s3_eventbridge_notification_object_expired_event():
131-
event_dict = load_event("s3EventBridgeNotificationObjectExpiredEvent.json")
132-
handle_s3_eventbridge_object_expired(event_dict, LambdaContext())
133-
134-
135-
def test_s3_eventbridge_notification_object_restore_completed_event():
136-
event_dict = load_event("s3EventBridgeNotificationObjectRestoreCompletedEvent.json")
137-
handle_s3_eventbridge_object_restore_completed(event_dict, LambdaContext())
138-
139-
140114
@event_parser(model=S3Model)
141115
def handle_s3_delete_object(event: S3Model, _: LambdaContext):
142116
records = list(event.Records)
@@ -175,123 +149,3 @@ def handle_s3_delete_object(event: S3Model, _: LambdaContext):
175149
def test_s3_trigger_event_delete_object():
176150
event_dict = load_event("s3EventDeleteObject.json")
177151
handle_s3_delete_object(event_dict, LambdaContext())
178-
179-
180-
@event_parser(model=S3EventNotificationEventBridgeModel)
181-
def handle_s3_eventbridge_object_created(event: S3EventNotificationEventBridgeModel, _: LambdaContext):
182-
"""
183-
Tests that the `S3EventNotificationEventBridgeModel` parses events from
184-
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html
185-
"""
186-
187-
raw_event = load_event("s3EventBridgeNotificationObjectCreatedEvent.json")
188-
189-
assert event.version == raw_event["version"]
190-
assert event.id == raw_event["id"]
191-
assert event.detail_type == raw_event["detail-type"]
192-
assert event.source == raw_event["source"]
193-
assert event.account == raw_event["account"]
194-
assert event.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
195-
assert event.region == raw_event["region"]
196-
assert event.resources == raw_event["resources"]
197-
198-
assert event.detail.version == raw_event["detail"]["version"]
199-
assert event.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
200-
assert event.detail.object.key == raw_event["detail"]["object"]["key"]
201-
assert event.detail.object.size == raw_event["detail"]["object"]["size"]
202-
assert event.detail.object.etag == raw_event["detail"]["object"]["etag"]
203-
assert event.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
204-
assert event.detail.request_id == raw_event["detail"]["request-id"]
205-
assert event.detail.requester == raw_event["detail"]["requester"]
206-
assert event.detail.source_ip_address == raw_event["detail"]["source-ip-address"]
207-
assert event.detail.reason == raw_event["detail"]["reason"]
208-
209-
210-
@event_parser(model=S3EventNotificationEventBridgeModel)
211-
def handle_s3_eventbridge_object_deleted(event: S3EventNotificationEventBridgeModel, _: LambdaContext):
212-
"""
213-
Tests that the `S3EventNotificationEventBridgeModel` parses events from
214-
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html
215-
"""
216-
raw_event = load_event("s3EventBridgeNotificationObjectDeletedEvent.json")
217-
218-
assert event.version == raw_event["version"]
219-
assert event.id == raw_event["id"]
220-
assert event.detail_type == raw_event["detail-type"]
221-
assert event.source == raw_event["source"]
222-
assert event.account == raw_event["account"]
223-
assert event.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
224-
assert event.region == raw_event["region"]
225-
assert event.resources == raw_event["resources"]
226-
227-
assert event.detail.version == raw_event["detail"]["version"]
228-
assert event.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
229-
assert event.detail.object.key == raw_event["detail"]["object"]["key"]
230-
assert event.detail.object.size == raw_event["detail"]["object"]["size"]
231-
assert event.detail.object.etag == raw_event["detail"]["object"]["etag"]
232-
assert event.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
233-
assert event.detail.request_id == raw_event["detail"]["request-id"]
234-
assert event.detail.requester == raw_event["detail"]["requester"]
235-
assert event.detail.source_ip_address == raw_event["detail"]["source-ip-address"]
236-
assert event.detail.reason == raw_event["detail"]["reason"]
237-
assert event.detail.deletion_type == raw_event["detail"]["deletion-type"]
238-
239-
240-
@event_parser(model=S3EventNotificationEventBridgeModel)
241-
def handle_s3_eventbridge_object_expired(event: S3EventNotificationEventBridgeModel, _: LambdaContext):
242-
"""
243-
Tests that the `S3EventNotificationEventBridgeModel` parses events from
244-
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html
245-
"""
246-
247-
raw_event = load_event("s3EventBridgeNotificationObjectExpiredEvent.json")
248-
249-
assert event.version == raw_event["version"]
250-
assert event.id == raw_event["id"]
251-
assert event.detail_type == raw_event["detail-type"]
252-
assert event.source == raw_event["source"]
253-
assert event.account == raw_event["account"]
254-
assert event.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
255-
assert event.region == raw_event["region"]
256-
assert event.resources == raw_event["resources"]
257-
258-
assert event.detail.version == raw_event["detail"]["version"]
259-
assert event.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
260-
assert event.detail.object.key == raw_event["detail"]["object"]["key"]
261-
assert event.detail.object.size == raw_event["detail"]["object"]["size"]
262-
assert event.detail.object.etag == raw_event["detail"]["object"]["etag"]
263-
assert event.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
264-
assert event.detail.request_id == raw_event["detail"]["request-id"]
265-
assert event.detail.requester == raw_event["detail"]["requester"]
266-
assert event.detail.reason == raw_event["detail"]["reason"]
267-
assert event.detail.deletion_type == raw_event["detail"]["deletion-type"]
268-
269-
270-
@event_parser(model=S3EventNotificationEventBridgeModel)
271-
def handle_s3_eventbridge_object_restore_completed(event: S3EventNotificationEventBridgeModel, _: LambdaContext):
272-
"""
273-
Tests that the `S3EventNotificationEventBridgeModel` parses events from
274-
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html
275-
"""
276-
277-
raw_event = load_event("s3EventBridgeNotificationObjectRestoreCompletedEvent.json")
278-
279-
assert event.version == raw_event["version"]
280-
assert event.id == raw_event["id"]
281-
assert event.detail_type == raw_event["detail-type"]
282-
assert event.source == raw_event["source"]
283-
assert event.account == raw_event["account"]
284-
assert event.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
285-
assert event.region == raw_event["region"]
286-
assert event.resources == raw_event["resources"]
287-
288-
assert event.detail.version == raw_event["detail"]["version"]
289-
assert event.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
290-
assert event.detail.object.key == raw_event["detail"]["object"]["key"]
291-
assert event.detail.object.size == raw_event["detail"]["object"]["size"]
292-
assert event.detail.object.etag == raw_event["detail"]["object"]["etag"]
293-
assert event.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
294-
assert event.detail.request_id == raw_event["detail"]["request-id"]
295-
assert event.detail.requester == raw_event["detail"]["requester"]
296-
assert event.detail.restore_expiry_time == raw_event["detail"]["restore-expiry-time"]
297-
assert event.detail.source_storage_class == raw_event["detail"]["source-storage-class"]

tests/unit/parser/__init__.py

Whitespace-only changes.

tests/unit/parser/test_s3.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
from datetime import datetime
2+
3+
from aws_lambda_powertools.utilities.parser.models import (
4+
S3EventNotificationEventBridgeModel,
5+
)
6+
from tests.functional.utils import load_event
7+
8+
9+
def test_s3_eventbridge_notification_object_created_event():
10+
raw_event = load_event("s3EventBridgeNotificationObjectCreatedEvent.json")
11+
model = S3EventNotificationEventBridgeModel(**raw_event)
12+
13+
assert model.version == raw_event["version"]
14+
assert model.id == raw_event["id"]
15+
assert model.detail_type == raw_event["detail-type"]
16+
assert model.source == raw_event["source"]
17+
assert model.account == raw_event["account"]
18+
assert model.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
19+
assert model.region == raw_event["region"]
20+
assert model.resources == raw_event["resources"]
21+
22+
assert model.detail.version == raw_event["detail"]["version"]
23+
assert model.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
24+
assert model.detail.object.key == raw_event["detail"]["object"]["key"]
25+
assert model.detail.object.size == raw_event["detail"]["object"]["size"]
26+
assert model.detail.object.etag == raw_event["detail"]["object"]["etag"]
27+
assert model.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
28+
assert model.detail.request_id == raw_event["detail"]["request-id"]
29+
assert model.detail.requester == raw_event["detail"]["requester"]
30+
assert model.detail.source_ip_address == raw_event["detail"]["source-ip-address"]
31+
assert model.detail.reason == raw_event["detail"]["reason"]
32+
33+
34+
def test_s3_eventbridge_notification_object_deleted_event():
35+
raw_event = load_event("s3EventBridgeNotificationObjectDeletedEvent.json")
36+
model = S3EventNotificationEventBridgeModel(**raw_event)
37+
38+
assert model.version == raw_event["version"]
39+
assert model.id == raw_event["id"]
40+
assert model.detail_type == raw_event["detail-type"]
41+
assert model.source == raw_event["source"]
42+
assert model.account == raw_event["account"]
43+
assert model.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
44+
assert model.region == raw_event["region"]
45+
assert model.resources == raw_event["resources"]
46+
47+
assert model.detail.version == raw_event["detail"]["version"]
48+
assert model.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
49+
assert model.detail.object.key == raw_event["detail"]["object"]["key"]
50+
assert model.detail.object.size == raw_event["detail"]["object"]["size"]
51+
assert model.detail.object.etag == raw_event["detail"]["object"]["etag"]
52+
assert model.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
53+
assert model.detail.request_id == raw_event["detail"]["request-id"]
54+
assert model.detail.requester == raw_event["detail"]["requester"]
55+
assert model.detail.source_ip_address == raw_event["detail"]["source-ip-address"]
56+
assert model.detail.reason == raw_event["detail"]["reason"]
57+
assert model.detail.deletion_type == raw_event["detail"]["deletion-type"]
58+
59+
60+
def test_s3_eventbridge_notification_object_expired_event():
61+
raw_event = load_event("s3EventBridgeNotificationObjectExpiredEvent.json")
62+
model = S3EventNotificationEventBridgeModel(**raw_event)
63+
64+
assert model.version == raw_event["version"]
65+
assert model.id == raw_event["id"]
66+
assert model.detail_type == raw_event["detail-type"]
67+
assert model.source == raw_event["source"]
68+
assert model.account == raw_event["account"]
69+
assert model.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
70+
assert model.region == raw_event["region"]
71+
assert model.resources == raw_event["resources"]
72+
73+
assert model.detail.version == raw_event["detail"]["version"]
74+
assert model.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
75+
assert model.detail.object.key == raw_event["detail"]["object"]["key"]
76+
assert model.detail.object.size == raw_event["detail"]["object"]["size"]
77+
assert model.detail.object.etag == raw_event["detail"]["object"]["etag"]
78+
assert model.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
79+
assert model.detail.request_id == raw_event["detail"]["request-id"]
80+
assert model.detail.requester == raw_event["detail"]["requester"]
81+
assert model.detail.reason == raw_event["detail"]["reason"]
82+
assert model.detail.deletion_type == raw_event["detail"]["deletion-type"]
83+
84+
85+
def test_s3_eventbridge_notification_object_restore_completed_event():
86+
raw_event = load_event("s3EventBridgeNotificationObjectRestoreCompletedEvent.json")
87+
model = S3EventNotificationEventBridgeModel(**raw_event)
88+
89+
assert model.version == raw_event["version"]
90+
assert model.id == raw_event["id"]
91+
assert model.detail_type == raw_event["detail-type"]
92+
assert model.source == raw_event["source"]
93+
assert model.account == raw_event["account"]
94+
assert model.time == datetime.fromisoformat(raw_event["time"].replace("Z", "+00:00"))
95+
assert model.region == raw_event["region"]
96+
assert model.resources == raw_event["resources"]
97+
98+
assert model.detail.version == raw_event["detail"]["version"]
99+
assert model.detail.bucket.name == raw_event["detail"]["bucket"]["name"]
100+
assert model.detail.object.key == raw_event["detail"]["object"]["key"]
101+
assert model.detail.object.size == raw_event["detail"]["object"]["size"]
102+
assert model.detail.object.etag == raw_event["detail"]["object"]["etag"]
103+
assert model.detail.object.sequencer == raw_event["detail"]["object"]["sequencer"]
104+
assert model.detail.request_id == raw_event["detail"]["request-id"]
105+
assert model.detail.requester == raw_event["detail"]["requester"]
106+
assert model.detail.restore_expiry_time == raw_event["detail"]["restore-expiry-time"]
107+
assert model.detail.source_storage_class == raw_event["detail"]["source-storage-class"]

0 commit comments

Comments
 (0)