@@ -157,3 +157,44 @@ def test_s3_none_etag_value_failed_validation():
157
157
raw_event ["Records" ][0 ]["s3" ]["object" ]["eTag" ] = None
158
158
with pytest .raises (ValidationError ):
159
159
S3Model (** raw_event )
160
+
161
+
162
+ def test_s3_trigger_event_lifecycle_transition ():
163
+ raw_event = load_event ("s3EventLifecycleTransition.json" )
164
+ parsed_event : S3Model = S3Model (** raw_event )
165
+
166
+ records = list (parsed_event .Records )
167
+ assert len (records ) == 1
168
+
169
+ record : S3RecordModel = records [0 ]
170
+ raw_record = raw_event ["Records" ][0 ]
171
+ assert record .eventVersion == raw_record ["eventVersion" ]
172
+ assert record .eventSource == raw_record ["eventSource" ]
173
+ assert record .awsRegion == raw_record ["awsRegion" ]
174
+ convert_time = int (round (record .eventTime .timestamp () * 1000 ))
175
+ assert convert_time == 1567539447192
176
+ assert record .eventName == raw_record ["eventName" ]
177
+ assert record .glacierEventData is None
178
+
179
+ user_identity = record .userIdentity
180
+ assert user_identity .principalId == raw_record ["userIdentity" ]["principalId" ]
181
+
182
+ request_parameters = record .requestParameters
183
+ assert str (request_parameters .sourceIPAddress ) == "s3.amazonaws.com"
184
+ assert record .responseElements .x_amz_request_id == raw_record ["responseElements" ]["x-amz-request-id" ]
185
+ assert record .responseElements .x_amz_id_2 == raw_record ["responseElements" ]["x-amz-id-2" ]
186
+
187
+ s3 = record .s3
188
+ raw_s3 = raw_event ["Records" ][0 ]["s3" ]
189
+ assert s3 .s3SchemaVersion == raw_record ["s3" ]["s3SchemaVersion" ]
190
+ assert s3 .configurationId == raw_record ["s3" ]["configurationId" ]
191
+ assert s3 .object .key == raw_s3 ["object" ]["key" ]
192
+ assert s3 .object .size == 12345
193
+ assert s3 .object .eTag == "abcdef1232423423"
194
+ assert s3 .object .versionId == "SomeThingThere"
195
+
196
+ bucket = s3 .bucket
197
+ raw_bucket = raw_record ["s3" ]["bucket" ]
198
+ assert bucket .name == raw_bucket ["name" ]
199
+ assert bucket .ownerIdentity .principalId == raw_bucket ["ownerIdentity" ]["principalId" ]
200
+ assert bucket .arn == raw_bucket ["arn" ]
0 commit comments