From 085277338fd8a50f0707d21ab0ff568758039da6 Mon Sep 17 00:00:00 2001 From: Ray Lv Date: Mon, 15 Dec 2014 16:47:34 +0800 Subject: [PATCH] s3tests: add regression test for bug #10311 - rgw: Object is deleted automatically if conditional PUT returns 412 Test for bug #10311 Signed-off-by: Ray Lv --- s3tests/functional/test_s3.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index 3c8ff22..acd914f 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -2086,6 +2086,9 @@ def test_put_object_ifmatch_failed(): eq(e.reason, 'Precondition Failed') eq(e.error_code, 'PreconditionFailed') + got_old_data = key.get_contents_as_string() + eq(got_old_data, 'bar') + @attr(resource='object') @attr(method='put') @@ -2117,6 +2120,10 @@ def test_put_object_ifmatch_nonexisted_failed(): eq(e.reason, 'Precondition Failed') eq(e.error_code, 'PreconditionFailed') + e = assert_raises(boto.exception.S3ResponseError, key.get_contents_as_string) + eq(e.status, 404) + eq(e.reason, 'Not Found') + eq(e.error_code, 'NoSuchKey') @attr(resource='object') @attr(method='put') @@ -2153,6 +2160,8 @@ def test_put_object_ifnonmatch_failed(): eq(e.reason, 'Precondition Failed') eq(e.error_code, 'PreconditionFailed') + got_old_data = key.get_contents_as_string() + eq(got_old_data, 'bar') @attr(resource='object') @attr(method='put') @@ -2185,6 +2194,9 @@ def test_put_object_ifnonmatch_overwrite_existed_failed(): eq(e.reason, 'Precondition Failed') eq(e.error_code, 'PreconditionFailed') + got_old_data = key.get_contents_as_string() + eq(got_old_data, 'bar') + def _setup_request(bucket_acl=None, object_acl=None): """