list uploads should fail w/o the bucket

list multipart uploads must fail as 404 NoSuchBucket when
the target bucket doesn't exist in the backend Swift.

Change-Id: I0dabad0f221b24a4126aa419507011fac8a86254
This commit is contained in:
Kota Tsuyuzaki
2015-03-30 09:37:11 -07:00
parent bb1b58831e
commit 21725844f8
2 changed files with 19 additions and 0 deletions

View File

@@ -143,6 +143,8 @@ class UploadsController(Controller):
"""
Handles List Multipart Uploads
"""
# at first, check the bucket existence
req.get_container_info(self.app)
def separate_uploads(uploads, prefix, delimiter):
"""

View File

@@ -170,6 +170,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidRequest')
@patch('swift3.request.get_container_info', lambda x, y: {'status': 204})
def _test_bucket_multipart_uploads_GET(self, query=None,
multiparts=None):
segment_bucket = '/v1/AUTH_test/bucket+segments'
@@ -212,6 +213,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
self.assertEquals(status.split()[0], '200')
@s3acl
@patch('swift3.request.get_container_info', lambda x, y: {'status': 204})
def test_bucket_multipart_uploads_GET_without_segment_bucket(self):
segment_bucket = '/v1/AUTH_test/bucket+segments'
self.swift.register('GET', segment_bucket, swob.HTTPNotFound, {}, '')
@@ -232,6 +234,18 @@ class TestSwift3MultiUpload(Swift3TestCase):
self.assertEquals(elem.find('IsTruncated').text, 'false')
self.assertEquals(len(elem.findall('Upload')), 0)
@s3acl
@patch('swift3.request.get_container_info', lambda x, y: {'status': 404})
def test_bucket_multipart_uploads_GET_without_bucket(self):
self.swift.register('HEAD', '/v1/AUTH_test/bucket',
swob.HTTPNotFound, {}, '')
req = Request.blank('/bucket?uploads',
environ={'REQUEST_METHOD': 'GET'},
headers={'Authorization': 'AWS test:tester:hmac'})
status, haeaders, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '404')
self.assertEquals(self._get_error_code(body), 'NoSuchBucket')
@s3acl
def test_bucket_multipart_uploads_GET_encoding_type_error(self):
query = 'encoding-type=xml'
@@ -891,6 +905,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
self.assertEquals(status.split()[0], '200')
@s3acl(s3acl_only=True)
@patch('swift3.request.get_container_info', lambda x, y: {'status': 204})
def test_list_multipart_uploads_acl_without_permission(self):
status, headers, body = \
self._test_for_s3acl('GET', '?uploads', 'test:other',
@@ -898,6 +913,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
self.assertEquals(status.split()[0], '403')
@s3acl(s3acl_only=True)
@patch('swift3.request.get_container_info', lambda x, y: {'status': 204})
def test_list_multipart_uploads_acl_with_read_permission(self):
status, headers, body = \
self._test_for_s3acl('GET', '?uploads', 'test:read',
@@ -905,6 +921,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
self.assertEquals(status.split()[0], '200')
@s3acl(s3acl_only=True)
@patch('swift3.request.get_container_info', lambda x, y: {'status': 204})
def test_list_multipart_uploads_acl_with_fullcontrol_permission(self):
status, headers, body = \
self._test_for_s3acl('GET', '?uploads', 'test:full_control',