From c961cdd10ebb6b2909c36bd97d9a360f41d32f96 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Wed, 14 Sep 2016 10:23:29 +0200 Subject: [PATCH] Add testing for copy object to/from a versioned bucket Signed-off-by: Orit Wasserman --- s3tests/functional/test_s3.py | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index cc7d7e5..2757c68 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -4912,6 +4912,50 @@ def test_object_copy_key_not_found(): eq(e.reason, 'Not Found') eq(e.error_code, 'NoSuchKey') +@attr(resource='object') +@attr(method='put') +@attr(operation='copy object to/from versioned bucket') +@attr(assertion='works') +def test_object_copy_versioned_bucket(): + bucket = get_new_bucket() + check_configure_versioning_retry(bucket, True, "Enabled") + + key = bucket.new_key('foo123bar') + _create_key_with_random_content(key.name, 1*1024*1024) + + # copy object in the same bucket + key2 = bucket.copy_key('bar321foo', bucket.name, key.name, src_version_id = key.version_id) + res = _make_request('GET', bucket, key2) + eq(res.status, 200) + eq(res.reason, 'OK') + + # second copy + key3 = bucket.copy_key('bar321foo2', bucket.name, key2.name, src_version_id = key2.version_id) + res = _make_request('GET', bucket, key3) + eq(res.status, 200) + eq(res.reason, 'OK') + + # copy to another versioned bucket + bucket2 = get_new_bucket() + check_configure_versioning_retry(bucket2, True, "Enabled") + key4 = bucket2.copy_key('bar321foo3', bucket.name, key.name, src_version_id = key.version_id) + res = _make_request('GET', bucket, key4) + eq(res.status, 200) + eq(res.reason, 'OK') + + # copy to another non versioned bucket + bucket3 = get_new_bucket() + key5 = bucket3.copy_key('bar321foo4', bucket.name, key.name , src_version_id = key.version_id) + res = _make_request('GET', bucket, key5) + eq(res.status, 200) + eq(res.reason, 'OK') + + # copy from a non versioned bucket + key6 = bucket.copy_key('foo123bar2', bucket3.name, key5.name) + res = _make_request('GET', bucket, key6) + eq(res.status, 200) + eq(res.reason, 'OK') + def transfer_part(bucket, mp_id, mp_keyname, i, part): """Transfer a part of a multipart upload. Designed to be run in parallel. """