@@ -257,6 +257,74 @@ def mp_copy_responses(self):
257
257
self .complete_mpu_response (),
258
258
]
259
259
260
+ def list_object_versions_request (
261
+ self , bucket , prefix = None , ** override_kwargs
262
+ ):
263
+ params = {
264
+ 'Bucket' : bucket ,
265
+ }
266
+ if prefix is not None :
267
+ params ['Prefix' ] = prefix
268
+ params .update (override_kwargs )
269
+ return 'ListObjectVersions' , params
270
+
271
+ def list_object_versions_response (self , keys , ** override_kwargs ):
272
+ versions = []
273
+ delete_markers = []
274
+ for key in keys :
275
+ version = {
276
+ 'Key' : key ,
277
+ 'VersionId' : 'version1' ,
278
+ 'LastModified' : '00:00:00Z' ,
279
+ 'Size' : 100 ,
280
+ 'ETag' : '"foo-1"' ,
281
+ 'IsLatest' : False ,
282
+ }
283
+ delete_marker = {
284
+ 'Key' : key ,
285
+ 'VersionId' : 'deletemarker1' ,
286
+ 'LastModified' : '00:00:00Z' ,
287
+ 'IsLatest' : True ,
288
+ }
289
+ if override_kwargs :
290
+ version .update (override_kwargs )
291
+ delete_marker .update (override_kwargs )
292
+
293
+ versions .append (version )
294
+ delete_markers .append (delete_marker )
295
+ return {'Versions' : versions , 'DeleteMarkers' : delete_markers }
296
+
297
+ def delete_objects_request (
298
+ self , bucket , objects_to_delete , ** override_kwargs
299
+ ):
300
+ params = {
301
+ 'Bucket' : bucket ,
302
+ 'Delete' : {
303
+ 'Objects' : objects_to_delete ,
304
+ 'Quiet' : False ,
305
+ },
306
+ }
307
+ params .update (override_kwargs )
308
+ return 'DeleteObjects' , params
309
+
310
+ def delete_objects_response (self , keys , ** override_kwargs ):
311
+ deleted = []
312
+
313
+ for key in keys :
314
+ # Create deleted entries for each version that was deleted
315
+ deleted_objects = [
316
+ {'Key' : key , 'VersionId' : 'version1' },
317
+ {'Key' : key , 'VersionId' : 'deletemarker1' },
318
+ ]
319
+
320
+ if override_kwargs :
321
+ for obj in deleted_objects :
322
+ obj .update (override_kwargs )
323
+
324
+ deleted .extend (deleted_objects )
325
+
326
+ return {'Deleted' : deleted }
327
+
260
328
261
329
class BaseS3CLIRunnerTest (unittest .TestCase ):
262
330
def setUp (self ):
0 commit comments