@@ -157,3 +157,44 @@ def test_s3_none_etag_value_failed_validation():
157157 raw_event ["Records" ][0 ]["s3" ]["object" ]["eTag" ] = None
158158 with pytest .raises (ValidationError ):
159159 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