From 072b4045130c31dcc6f31f9618f3647a9c735a5f Mon Sep 17 00:00:00 2001 From: Kota Tsuyuzaki Date: Mon, 1 Jul 2019 17:43:02 +0900 Subject: [PATCH] s3api: add unit test case for s3acl To clarify the corner case when Swift is over-loaded, or user-errors. Change-Id: I41867290a63b329781dc7030f9f3ce0118e2032b --- .../common/middleware/s3api/test_bucket.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/unit/common/middleware/s3api/test_bucket.py b/test/unit/common/middleware/s3api/test_bucket.py index b75ae1d5cd..e8d7314912 100644 --- a/test/unit/common/middleware/s3api/test_bucket.py +++ b/test/unit/common/middleware/s3api/test_bucket.py @@ -619,6 +619,9 @@ class TestS3ApiBucket(S3ApiTestCase): self.assertEqual(code, 'BucketAlreadyExists') code = self._test_method_error('PUT', '/bucket', swob.HTTPServerError) self.assertEqual(code, 'InternalError') + code = self._test_method_error( + 'PUT', '/bucket', swob.HTTPServiceUnavailable) + self.assertEqual(code, 'InternalError') code = self._test_method_error( 'PUT', '/bucket+bucket', swob.HTTPCreated) self.assertEqual(code, 'InvalidBucketName') @@ -646,6 +649,36 @@ class TestS3ApiBucket(S3ApiTestCase): env={'swift_owner': False}) self.assertEqual(code, 'AccessDenied') + @s3acl + def test_bucket_PUT_bucket_already_owned_by_you(self): + self.swift.register( + 'PUT', '/v1/AUTH_test/bucket', swob.HTTPAccepted, + {'X-Container-Object-Count': 0}, None) + req = Request.blank('/bucket', + environ={'REQUEST_METHOD': 'PUT'}, + headers={'Authorization': 'AWS test:tester:hmac', + 'Date': self.get_date_header()}) + status, headers, body = self.call_s3api(req) + self.assertEqual(status, '409 Conflict') + self.assertIn(b'BucketAlreadyOwnedByYou', body) + + @s3acl + def test_bucket_PUT_first_put_fail(self): + self.swift.register( + 'PUT', '/v1/AUTH_test/bucket', + swob.HTTPServiceUnavailable, + {'X-Container-Object-Count': 0}, None) + req = Request.blank('/bucket', + environ={'REQUEST_METHOD': 'PUT'}, + headers={'Authorization': 'AWS test:tester:hmac', + 'Date': self.get_date_header()}) + status, headers, body = self.call_s3api(req) + self.assertEqual(status, '500 Internal Server Error') + # The last call was PUT not POST for acl set + self.assertEqual(self.swift.calls, [ + ('PUT', '/v1/AUTH_test/bucket'), + ]) + @s3acl def test_bucket_PUT(self): req = Request.blank('/bucket',