Use assertEqual instead of assertEquals

As assertEquals is the deprecated form of assertEqual
it is recommended to use assertEqual

Change-Id: I8851dba28f128e84607566e2424e7d6260e7eb82
This commit is contained in:
Gábor Antal 2016-02-26 12:31:20 +01:00
parent 4336ff4f99
commit 5cf3346e57
25 changed files with 951 additions and 948 deletions

@ -47,4 +47,4 @@ class Swift3FunctionalTestCase(unittest.TestCase):
# self.assertTrue(headers['server'] is not None)
if etag is not None:
self.assertTrue('etag' in headers) # sanity
self.assertEquals(etag, headers['etag'].strip('"'))
self.assertEqual(etag, headers['etag'].strip('"'))

@ -40,39 +40,39 @@ class TestSwift3Acl(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('PUT', self.bucket, headers=headers,
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-length'], '0')
self.assertEqual(headers['content-length'], '0')
# GET Bucket ACL
status, headers, body = \
self.conn.make_request('GET', self.bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
# TODO: Fix the response that last-modified must be in the response.
# self.assertTrue(headers['last-modified'] is not None)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
self.assertTrue(headers['content-type'] is not None)
elem = fromstring(body, 'AccessControlPolicy')
owner = elem.find('Owner')
self.assertEquals(owner.find('ID').text, self.conn.user_id)
self.assertEquals(owner.find('DisplayName').text, self.conn.user_id)
self.assertEqual(owner.find('ID').text, self.conn.user_id)
self.assertEqual(owner.find('DisplayName').text, self.conn.user_id)
acl = elem.find('AccessControlList')
self.assertTrue(acl.find('Grant') is not None)
# GET Object ACL
status, headers, body = \
self.conn.make_request('GET', self.bucket, self.obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
# TODO: Fix the response that last-modified must be in the response.
# self.assertTrue(headers['last-modified'] is not None)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
self.assertTrue(headers['content-type'] is not None)
elem = fromstring(body, 'AccessControlPolicy')
owner = elem.find('Owner')
self.assertEquals(owner.find('ID').text, self.conn.user_id)
self.assertEquals(owner.find('DisplayName').text, self.conn.user_id)
self.assertEqual(owner.find('ID').text, self.conn.user_id)
self.assertEqual(owner.find('DisplayName').text, self.conn.user_id)
acl = elem.find('AccessControlList')
self.assertTrue(acl.find('Grant') is not None)
@ -82,31 +82,31 @@ class TestSwift3Acl(Swift3FunctionalTestCase):
status, headers, body = \
aws_error_conn.make_request('PUT', self.bucket,
headers=req_headers, query='acl')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('PUT', 'nothing',
headers=req_headers, query='acl')
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
status, headers, body = \
self.conn2.make_request('PUT', self.bucket,
headers=req_headers, query='acl')
self.assertEquals(get_error_code(body), 'AccessDenied')
self.assertEqual(get_error_code(body), 'AccessDenied')
def test_get_bucket_acl_error(self):
aws_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
aws_error_conn.make_request('GET', self.bucket, query='acl')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('GET', 'nothing', query='acl')
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
status, headers, body = \
self.conn2.make_request('GET', self.bucket, query='acl')
self.assertEquals(get_error_code(body), 'AccessDenied')
self.assertEqual(get_error_code(body), 'AccessDenied')
def test_get_object_acl_error(self):
self.conn.make_request('PUT', self.bucket, self.obj)
@ -115,15 +115,15 @@ class TestSwift3Acl(Swift3FunctionalTestCase):
status, headers, body = \
aws_error_conn.make_request('GET', self.bucket, self.obj,
query='acl')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('GET', self.bucket, 'nothing', query='acl')
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEqual(get_error_code(body), 'NoSuchKey')
status, headers, body = \
self.conn2.make_request('GET', self.bucket, self.obj, query='acl')
self.assertEquals(get_error_code(body), 'AccessDenied')
self.assertEqual(get_error_code(body), 'AccessDenied')
@unittest.skipIf(os.environ['AUTH'] == 'tempauth',

@ -37,48 +37,48 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
# PUT Bucket
status, headers, body = self.conn.make_request('PUT', bucket)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['location'], '/' + bucket)
self.assertEquals(headers['content-length'], '0')
self.assertEqual(headers['location'], '/' + bucket)
self.assertEqual(headers['content-length'], '0')
# GET Bucket(Without Object)
status, headers, body = self.conn.make_request('GET', bucket)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue(headers['content-type'] is not None)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
# TODO; requires consideration
# self.assertEquasl(headers['transfer-encoding'], 'chunked')
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('Name').text, bucket)
self.assertEquals(elem.find('Prefix').text, None)
self.assertEquals(elem.find('Marker').text, None)
self.assertEquals(elem.find('MaxKeys').text,
str(CONF.max_bucket_listing))
self.assertEquals(elem.find('IsTruncated').text, 'false')
self.assertEqual(elem.find('Name').text, bucket)
self.assertEqual(elem.find('Prefix').text, None)
self.assertEqual(elem.find('Marker').text, None)
self.assertEqual(elem.find('MaxKeys').text,
str(CONF.max_bucket_listing))
self.assertEqual(elem.find('IsTruncated').text, 'false')
objects = elem.findall('./Contents')
self.assertEquals(list(objects), [])
self.assertEqual(list(objects), [])
# GET Bucket(With Object)
req_objects = ('object', 'object2')
for obj in req_objects:
self.conn.make_request('PUT', bucket, obj)
status, headers, body = self.conn.make_request('GET', bucket)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('Name').text, bucket)
self.assertEquals(elem.find('Prefix').text, None)
self.assertEquals(elem.find('Marker').text, None)
self.assertEquals(elem.find('MaxKeys').text,
str(CONF.max_bucket_listing))
self.assertEquals(elem.find('IsTruncated').text, 'false')
self.assertEqual(elem.find('Name').text, bucket)
self.assertEqual(elem.find('Prefix').text, None)
self.assertEqual(elem.find('Marker').text, None)
self.assertEqual(elem.find('MaxKeys').text,
str(CONF.max_bucket_listing))
self.assertEqual(elem.find('IsTruncated').text, 'false')
resp_objects = elem.findall('./Contents')
self.assertEquals(len(list(resp_objects)), 2)
self.assertEqual(len(list(resp_objects)), 2)
for o in resp_objects:
self.assertTrue(o.find('Key').text in req_objects)
self.assertTrue(o.find('LastModified').text is not None)
@ -94,11 +94,11 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
# HEAD Bucket
status, headers, body = self.conn.make_request('HEAD', bucket)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue(headers['content-type'] is not None)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
# TODO; requires consideration
# self.assertEquasl(headers['transfer-encoding'], 'chunked')
@ -106,43 +106,43 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
for obj in req_objects:
self.conn.make_request('DELETE', bucket, obj)
status, headers, body = self.conn.make_request('DELETE', bucket)
self.assertEquals(status, 204)
self.assertEqual(status, 204)
self.assertCommonResponseHeaders(headers)
def test_put_bucket_error(self):
status, headers, body = \
self.conn.make_request('PUT', 'bucket+invalid')
self.assertEquals(get_error_code(body), 'InvalidBucketName')
self.assertEqual(get_error_code(body), 'InvalidBucketName')
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = auth_error_conn.make_request('PUT', 'bucket')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.conn.make_request('PUT', 'bucket')
status, headers, body = self.conn.make_request('PUT', 'bucket')
self.assertEquals(get_error_code(body), 'BucketAlreadyExists')
self.assertEqual(get_error_code(body), 'BucketAlreadyExists')
def test_put_bucket_with_LocationConstraint(self):
bucket = 'bucket'
xml = self._gen_location_xml('US')
status, headers, body = \
self.conn.make_request('PUT', bucket, body=xml)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
def test_get_bucket_error(self):
self.conn.make_request('PUT', 'bucket')
status, headers, body = \
self.conn.make_request('GET', 'bucket+invalid')
self.assertEquals(get_error_code(body), 'InvalidBucketName')
self.assertEqual(get_error_code(body), 'InvalidBucketName')
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = auth_error_conn.make_request('GET', 'bucket')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = self.conn.make_request('GET', 'nothing')
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
def _prepare_test_get_bucket(self, bucket, objects):
self.conn.make_request('PUT', bucket)
@ -161,27 +161,27 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
expect_prefixes = ('dir/', 'subdir/', 'subdir2/')
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('Delimiter').text, delimiter)
self.assertEqual(elem.find('Delimiter').text, delimiter)
resp_objects = elem.findall('./Contents')
self.assertEquals(len(list(resp_objects)), len(expect_objects))
self.assertEqual(len(list(resp_objects)), len(expect_objects))
for i, o in enumerate(resp_objects):
self.assertEquals(o.find('Key').text, expect_objects[i])
self.assertEqual(o.find('Key').text, expect_objects[i])
self.assertTrue(o.find('LastModified').text is not None)
self.assertRegexpMatches(
o.find('LastModified').text,
r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$')
self.assertTrue(o.find('ETag').text is not None)
self.assertTrue(o.find('Size').text is not None)
self.assertEquals(o.find('StorageClass').text, 'STANDARD')
self.assertEqual(o.find('StorageClass').text, 'STANDARD')
self.assertTrue(o.find('Owner/ID').text, self.conn.user_id)
self.assertTrue(o.find('Owner/DisplayName').text,
self.conn.user_id)
resp_prefixes = elem.findall('CommonPrefixes')
self.assertEquals(len(resp_prefixes), len(expect_prefixes))
self.assertEqual(len(resp_prefixes), len(expect_prefixes))
for i, p in enumerate(resp_prefixes):
self.assertEquals(p.find('./Prefix').text, expect_prefixes[i])
self.assertEqual(p.find('./Prefix').text, expect_prefixes[i])
def test_get_bucket_with_encoding_type(self):
bucket = 'bucket'
@ -192,9 +192,9 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
query = 'encoding-type=%s' % encoding_type
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('EncodingType').text, encoding_type)
self.assertEqual(elem.find('EncodingType').text, encoding_type)
def test_get_bucket_with_marker(self):
bucket = 'bucket'
@ -207,20 +207,20 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
expect_objects = ('object2', 'subdir/object', 'subdir2/object')
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('Marker').text, marker)
self.assertEqual(elem.find('Marker').text, marker)
resp_objects = elem.findall('./Contents')
self.assertEquals(len(list(resp_objects)), len(expect_objects))
self.assertEqual(len(list(resp_objects)), len(expect_objects))
for i, o in enumerate(resp_objects):
self.assertEquals(o.find('Key').text, expect_objects[i])
self.assertEqual(o.find('Key').text, expect_objects[i])
self.assertTrue(o.find('LastModified').text is not None)
self.assertRegexpMatches(
o.find('LastModified').text,
r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$')
self.assertTrue(o.find('ETag').text is not None)
self.assertTrue(o.find('Size').text is not None)
self.assertEquals(o.find('StorageClass').text, 'STANDARD')
self.assertEqual(o.find('StorageClass').text, 'STANDARD')
self.assertTrue(o.find('Owner/ID').text, self.conn.user_id)
self.assertTrue(o.find('Owner/DisplayName').text,
self.conn.user_id)
@ -236,20 +236,20 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
expect_objects = ('dir/subdir/object', 'object')
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('MaxKeys').text, max_keys)
self.assertEqual(elem.find('MaxKeys').text, max_keys)
resp_objects = elem.findall('./Contents')
self.assertEquals(len(list(resp_objects)), len(expect_objects))
self.assertEqual(len(list(resp_objects)), len(expect_objects))
for i, o in enumerate(resp_objects):
self.assertEquals(o.find('Key').text, expect_objects[i])
self.assertEqual(o.find('Key').text, expect_objects[i])
self.assertTrue(o.find('LastModified').text is not None)
self.assertRegexpMatches(
o.find('LastModified').text,
r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$')
self.assertTrue(o.find('ETag').text is not None)
self.assertTrue(o.find('Size').text is not None)
self.assertEquals(o.find('StorageClass').text, 'STANDARD')
self.assertEqual(o.find('StorageClass').text, 'STANDARD')
self.assertTrue(o.find('Owner/ID').text, self.conn.user_id)
self.assertTrue(o.find('Owner/DisplayName').text,
self.conn.user_id)
@ -265,20 +265,20 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
expect_objects = ('object', 'object2')
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('Prefix').text, prefix)
self.assertEqual(elem.find('Prefix').text, prefix)
resp_objects = elem.findall('./Contents')
self.assertEquals(len(list(resp_objects)), len(expect_objects))
self.assertEqual(len(list(resp_objects)), len(expect_objects))
for i, o in enumerate(resp_objects):
self.assertEquals(o.find('Key').text, expect_objects[i])
self.assertEqual(o.find('Key').text, expect_objects[i])
self.assertTrue(o.find('LastModified').text is not None)
self.assertRegexpMatches(
o.find('LastModified').text,
r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$')
self.assertTrue(o.find('ETag').text is not None)
self.assertTrue(o.find('Size').text is not None)
self.assertEquals(o.find('StorageClass').text, 'STANDARD')
self.assertEqual(o.find('StorageClass').text, 'STANDARD')
self.assertTrue(o.find('Owner/ID').text, self.conn.user_id)
self.assertTrue(o.find('Owner/DisplayName').text,
self.conn.user_id)
@ -288,31 +288,31 @@ class TestSwift3Bucket(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('HEAD', 'bucket+invalid')
self.assertEquals(status, 400)
self.assertEquals(body, '') # sanifty
self.assertEqual(status, 400)
self.assertEqual(body, '') # sanifty
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('HEAD', 'bucket')
self.assertEquals(status, 403)
self.assertEquals(body, '') # sanifty
self.assertEqual(status, 403)
self.assertEqual(body, '') # sanifty
status, headers, body = self.conn.make_request('HEAD', 'nothing')
self.assertEquals(status, 404)
self.assertEquals(body, '') # sanifty
self.assertEqual(status, 404)
self.assertEqual(body, '') # sanifty
def test_delete_bucket_error(self):
status, headers, body = \
self.conn.make_request('DELETE', 'bucket+invalid')
self.assertEquals(get_error_code(body), 'InvalidBucketName')
self.assertEqual(get_error_code(body), 'InvalidBucketName')
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('DELETE', 'bucket')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = self.conn.make_request('DELETE', 'bucket')
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
def test_bucket_invalid_method_error(self):
# non existed verb in the controller

@ -64,13 +64,13 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue(headers['content-type'] is not None)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body)
resp_objects = elem.findall('Deleted')
self.assertEquals(len(resp_objects), len(req_objects))
self.assertEqual(len(resp_objects), len(req_objects))
for o in resp_objects:
self.assertTrue(o.find('Key').text in req_objects)
@ -82,10 +82,10 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'DeleteResult')
resp_objects = elem.findall('Deleted')
self.assertEquals(len(resp_objects), len(req_objects))
self.assertEqual(len(resp_objects), len(req_objects))
for o in resp_objects:
self.assertTrue(o.find('Key').text in req_objects)
@ -97,11 +97,11 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'DeleteResult')
resp_objects = elem.findall('Deleted')
# S3 assumes a NoSuchKey object as deleted.
self.assertEquals(len(resp_objects), len(req_objects))
self.assertEqual(len(resp_objects), len(req_objects))
for o in resp_objects:
self.assertTrue(o.find('Key').text in req_objects)
@ -113,10 +113,10 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'DeleteResult')
resp_objects = elem.findall('Deleted')
self.assertEquals(len(resp_objects), len(req_objects))
self.assertEqual(len(resp_objects), len(req_objects))
for o in resp_objects:
self.assertTrue(o.find('Key').text in req_objects)
@ -135,13 +135,13 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
'Content-MD5': content_md5
},
query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('POST', 'nothing', body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
# without Object tag
xml = self._gen_invalid_multi_delete_xml()
@ -150,7 +150,7 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(get_error_code(body), 'MalformedXML')
self.assertEqual(get_error_code(body), 'MalformedXML')
# without value of Key tag
xml = self._gen_invalid_multi_delete_xml(hasObjectTag=True)
@ -159,7 +159,7 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(get_error_code(body), 'UserKeyMustBeSpecified')
self.assertEqual(get_error_code(body), 'UserKeyMustBeSpecified')
# specified number of objects are over CONF.max_multi_delete_objects
# (Default 1000), but xml size is smaller than 61365 bytes.
@ -171,7 +171,7 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(get_error_code(body), 'MalformedXML')
self.assertEqual(get_error_code(body), 'MalformedXML')
# specified xml size is over 61365 bytes, but number of objects are
# smaller than CONF.max_multi_delete_objects.
@ -184,7 +184,7 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(get_error_code(body), 'MalformedXML')
self.assertEqual(get_error_code(body), 'MalformedXML')
def test_delete_multi_objects_with_quiet(self):
bucket = 'bucket'
@ -200,10 +200,10 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'DeleteResult')
resp_objects = elem.findall('Deleted')
self.assertEquals(len(resp_objects), 0)
self.assertEqual(len(resp_objects), 0)
# with Quiet false
quiet = 'false'
@ -214,10 +214,10 @@ class TestSwift3MultiDelete(Swift3FunctionalTestCase):
self.conn.make_request('POST', bucket, body=xml,
headers={'Content-MD5': content_md5},
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'DeleteResult')
resp_objects = elem.findall('Deleted')
self.assertEquals(len(resp_objects), 1)
self.assertEqual(len(resp_objects), 1)
@unittest.skipIf(os.environ['AUTH'] == 'tempauth',

@ -97,57 +97,57 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
# Initiate Multipart Upload
for expected_key, (status, headers, body) in \
izip(keys, results_generator):
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(headers['content-type'], 'application/xml')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body, 'InitiateMultipartUploadResult')
self.assertEquals(elem.find('Bucket').text, bucket)
self.assertEqual(elem.find('Bucket').text, bucket)
key = elem.find('Key').text
self.assertEquals(expected_key, key)
self.assertEqual(expected_key, key)
upload_id = elem.find('UploadId').text
self.assertTrue(upload_id is not None)
self.assertTrue((key, upload_id) not in uploads)
uploads.append((key, upload_id))
self.assertEquals(len(uploads), len(keys)) # sanity
self.assertEqual(len(uploads), len(keys)) # sanity
# List Multipart Uploads
query = 'uploads'
status, headers, body = \
self.conn.make_request('GET', bucket, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(headers['content-type'], 'application/xml')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body, 'ListMultipartUploadsResult')
self.assertEquals(elem.find('Bucket').text, bucket)
self.assertEquals(elem.find('KeyMarker').text, None)
self.assertEquals(elem.find('NextKeyMarker').text, uploads[-1][0])
self.assertEquals(elem.find('UploadIdMarker').text, None)
self.assertEquals(elem.find('NextUploadIdMarker').text, uploads[-1][1])
self.assertEquals(elem.find('MaxUploads').text, '1000')
self.assertEqual(elem.find('Bucket').text, bucket)
self.assertEqual(elem.find('KeyMarker').text, None)
self.assertEqual(elem.find('NextKeyMarker').text, uploads[-1][0])
self.assertEqual(elem.find('UploadIdMarker').text, None)
self.assertEqual(elem.find('NextUploadIdMarker').text, uploads[-1][1])
self.assertEqual(elem.find('MaxUploads').text, '1000')
self.assertTrue(elem.find('EncodingType') is None)
self.assertEquals(elem.find('IsTruncated').text, 'false')
self.assertEquals(len(elem.findall('Upload')), 2)
self.assertEqual(elem.find('IsTruncated').text, 'false')
self.assertEqual(len(elem.findall('Upload')), 2)
for (expected_key, expected_upload_id), u in \
izip(uploads, elem.findall('Upload')):
key = u.find('Key').text
upload_id = u.find('UploadId').text
self.assertEquals(expected_key, key)
self.assertEquals(expected_upload_id, upload_id)
self.assertEquals(u.find('Initiator/ID').text,
self.conn.user_id)
self.assertEquals(u.find('Initiator/DisplayName').text,
self.conn.user_id)
self.assertEquals(u.find('Owner/ID').text, self.conn.user_id)
self.assertEquals(u.find('Owner/DisplayName').text,
self.conn.user_id)
self.assertEquals(u.find('StorageClass').text, 'STANDARD')
self.assertEqual(expected_key, key)
self.assertEqual(expected_upload_id, upload_id)
self.assertEqual(u.find('Initiator/ID').text,
self.conn.user_id)
self.assertEqual(u.find('Initiator/DisplayName').text,
self.conn.user_id)
self.assertEqual(u.find('Owner/ID').text, self.conn.user_id)
self.assertEqual(u.find('Owner/DisplayName').text,
self.conn.user_id)
self.assertEqual(u.find('StorageClass').text, 'STANDARD')
self.assertTrue(u.find('Initiated').text is not None)
# Upload Part
@ -156,12 +156,12 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
etag = md5(content).hexdigest()
status, headers, body = \
self._upload_part(bucket, key, upload_id, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers, etag)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'text/html; charset=UTF-8')
self.assertEqual(headers['content-type'], 'text/html; charset=UTF-8')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], '0')
self.assertEqual(headers['content-length'], '0')
expected_parts_list = [(headers['etag'], mktime(headers['date']))]
# Upload Part Copy
@ -180,19 +180,19 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body, resp_etag = \
self._upload_part_copy(src_bucket, src_obj, bucket,
key, upload_id)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(headers['content-type'], 'application/xml')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
self.assertTrue('etag' not in headers)
elem = fromstring(body, 'CopyPartResult')
last_modified = elem.find('LastModified').text
self.assertTrue(last_modified is not None)
self.assertEquals(resp_etag, etag)
self.assertEqual(resp_etag, etag)
# Check last-modified timestamp
key, upload_id = uploads[1]
@ -205,7 +205,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
# FIXME: COPY result drops mili/microseconds but GET doesn't
last_modified_gets = [p.find('LastModified').text
for p in elem.iterfind('Part')]
self.assertEquals(
self.assertEqual(
last_modified_gets[0].rsplit('.', 1)[0],
last_modified.rsplit('.', 1)[0],
'%r != %r' % (last_modified_gets[0], last_modified))
@ -217,28 +217,29 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
query = 'uploadId=%s' % upload_id
status, headers, body = \
self.conn.make_request('GET', bucket, key, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(headers['content-type'], 'application/xml')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body, 'ListPartsResult')
self.assertEquals(elem.find('Bucket').text, bucket)
self.assertEquals(elem.find('Key').text, key)
self.assertEquals(elem.find('UploadId').text, upload_id)
self.assertEquals(elem.find('Initiator/ID').text, self.conn.user_id)
self.assertEquals(elem.find('Initiator/DisplayName').text,
self.conn.user_id)
self.assertEquals(elem.find('Owner/ID').text, self.conn.user_id)
self.assertEquals(elem.find('Owner/DisplayName').text,
self.conn.user_id)
self.assertEquals(elem.find('StorageClass').text, 'STANDARD')
self.assertEquals(elem.find('PartNumberMarker').text, '0')
self.assertEquals(elem.find('NextPartNumberMarker').text, '1')
self.assertEquals(elem.find('MaxParts').text, '1000')
self.assertEquals(elem.find('IsTruncated').text, 'false')
self.assertEquals(len(elem.findall('Part')), 1)
self.assertEqual(elem.find('Bucket').text, bucket)
self.assertEqual(elem.find('Key').text, key)
self.assertEqual(elem.find('UploadId').text, upload_id)
self.assertEqual(elem.find('Initiator/ID').text, self.conn.user_id)
self.assertEqual(elem.find('Initiator/DisplayName').text,
self.conn.user_id)
self.assertEqual(elem.find('Owner/ID').text, self.conn.user_id)
self.assertEqual(elem.find('Owner/DisplayName').text,
self.conn.user_id)
self.assertEqual(elem.find('StorageClass').text, 'STANDARD')
self.assertEqual(elem.find('PartNumberMarker').text, '0')
self.assertEqual(elem.find('NextPartNumberMarker').text, '1')
self.assertEqual(elem.find('MaxParts').text, '1000')
self.assertEqual(elem.find('IsTruncated').text, 'false')
self.assertEqual(len(elem.findall('Part')), 1)
# etags will be used to generate xml for Complete Multipart Upload
etags = []
for (expected_etag, expected_date), p in \
@ -251,10 +252,10 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
# by the constraint of the format.
# For now, we can do either the format check or round check
# last_modified_from_xml = mktime(last_modified)
# self.assertEquals(expected_date,
# self.assertEqual(expected_date,
# last_modified_from_xml)
self.assertEquals(expected_etag, p.find('ETag').text)
self.assertEquals(MIN_SEGMENT_SIZE, int(p.find('Size').text))
self.assertEqual(expected_etag, p.find('ETag').text)
self.assertEqual(MIN_SEGMENT_SIZE, int(p.find('Size').text))
etags.append(p.find('ETag').text)
# Abort Multipart Upload
@ -262,29 +263,29 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
query = 'uploadId=%s' % upload_id
status, headers, body = \
self.conn.make_request('DELETE', bucket, key, query=query)
self.assertEquals(status, 204)
self.assertEqual(status, 204)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'text/html; charset=UTF-8')
self.assertEqual(headers['content-type'], 'text/html; charset=UTF-8')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], '0')
self.assertEqual(headers['content-length'], '0')
# Complete Multipart Upload
key, upload_id = uploads[0]
xml = self._gen_comp_xml(etags)
status, headers, body = \
self._complete_multi_upload(bucket, key, upload_id, xml)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(headers['content-type'], 'application/xml')
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body, 'CompleteMultipartUploadResult')
self.assertEquals('http://localhost:8080/bucket/obj1',
elem.find('Location').text)
self.assertEquals(elem.find('Bucket').text, bucket)
self.assertEquals(elem.find('Key').text, key)
self.assertEqual('http://localhost:8080/bucket/obj1',
elem.find('Location').text)
self.assertEqual(elem.find('Bucket').text, bucket)
self.assertEqual(elem.find('Key').text, key)
# TODO: confirm completed etag value
self.assertTrue(elem.find('ETag').text is not None)
@ -297,11 +298,11 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('POST', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, resp_headers, body = \
self.conn.make_request('POST', 'nothing', key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
def test_list_multi_uploads_error(self):
bucket = 'bucket'
@ -311,11 +312,11 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('GET', bucket, query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('GET', 'nothing', query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
def test_upload_part_error(self):
bucket = 'bucket'
@ -331,21 +332,21 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('PUT', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('PUT', 'nothing', key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
query = 'partNumber=%s&uploadId=%s' % (1, 'nothing')
status, headers, body = \
self.conn.make_request('PUT', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchUpload')
self.assertEqual(get_error_code(body), 'NoSuchUpload')
query = 'partNumber=%s&uploadId=%s' % (0, upload_id)
status, headers, body = \
self.conn.make_request('PUT', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'InvalidArgument')
self.assertEqual(get_error_code(body), 'InvalidArgument')
err_msg = 'Part number must be an integer between 1 and'
self.assertTrue(err_msg in get_error_msg(body))
@ -373,20 +374,20 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
'X-Amz-Copy-Source': src_path
},
query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('PUT', 'nothing', key,
headers={'X-Amz-Copy-Source': src_path},
query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
query = 'partNumber=%s&uploadId=%s' % (1, 'nothing')
status, headers, body = \
self.conn.make_request('PUT', bucket, key,
headers={'X-Amz-Copy-Source': src_path},
query=query)
self.assertEquals(get_error_code(body), 'NoSuchUpload')
self.assertEqual(get_error_code(body), 'NoSuchUpload')
src_path = '%s/%s' % (src_bucket, 'nothing')
query = 'partNumber=%s&uploadId=%s' % (1, upload_id)
@ -394,7 +395,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
self.conn.make_request('PUT', bucket, key,
headers={'X-Amz-Copy-Source': src_path},
query=query)
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEqual(get_error_code(body), 'NoSuchKey')
def test_list_parts_error(self):
bucket = 'bucket'
@ -411,16 +412,16 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
auth_error_conn.make_request('GET', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('GET', 'nothing', key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
query = 'uploadId=%s' % 'nothing'
status, headers, body = \
self.conn.make_request('GET', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchUpload')
self.assertEqual(get_error_code(body), 'NoSuchUpload')
def test_abort_multi_upload_error(self):
bucket = 'bucket'
@ -437,16 +438,16 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('DELETE', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
status, headers, body = \
self.conn.make_request('DELETE', 'nothing', key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
query = 'uploadId=%s' % 'nothing'
status, headers, body = \
self.conn.make_request('DELETE', bucket, key, query=query)
self.assertEquals(get_error_code(body), 'NoSuchUpload')
self.assertEqual(get_error_code(body), 'NoSuchUpload')
def test_complete_multi_upload_error(self):
bucket = 'bucket'
@ -478,19 +479,19 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
auth_error_conn.make_request('POST', bucket, keys[0], body=xml,
query=query)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
# wrong/missing bucket
status, headers, body = \
self.conn.make_request('POST', 'nothing', keys[0], query=query)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
# wrong upload ID
query = 'uploadId=%s' % 'nothing'
status, headers, body = \
self.conn.make_request('POST', bucket, keys[0], body=xml,
query=query)
self.assertEquals(get_error_code(body), 'NoSuchUpload')
self.assertEqual(get_error_code(body), 'NoSuchUpload')
# without Part tag in xml
query = 'uploadId=%s' % upload_id
@ -498,7 +499,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('POST', bucket, keys[0], body=xml,
query=query)
self.assertEquals(get_error_code(body), 'MalformedXML')
self.assertEqual(get_error_code(body), 'MalformedXML')
# with ivalid etag in xml
invalid_etag = 'invalid'
@ -506,7 +507,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('POST', bucket, keys[0], body=xml,
query=query)
self.assertEquals(get_error_code(body), 'InvalidPart')
self.assertEqual(get_error_code(body), 'InvalidPart')
# without part in Swift
query = 'uploads'
@ -519,7 +520,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('POST', bucket, keys[1], body=xml,
query=query)
self.assertEquals(get_error_code(body), 'InvalidPart')
self.assertEqual(get_error_code(body), 'InvalidPart')
def test_complete_upload_with_fewer_etags(self):
bucket = 'bucket'
@ -543,7 +544,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('POST', bucket, key, body=xml,
query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
def test_object_multi_upload_part_copy_range(self):
bucket = 'bucket'

@ -46,7 +46,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
def _assertObjectEtag(self, bucket, obj, etag):
status, headers, _ = self.conn.make_request('HEAD', bucket, obj)
self.assertEquals(status, 200) # sanity
self.assertEqual(status, 200) # sanity
self.assertCommonResponseHeaders(headers, etag)
def test_object(self):
@ -57,11 +57,11 @@ class TestSwift3Object(Swift3FunctionalTestCase):
# PUT Object
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, body=content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-length' in headers) # sanity
self.assertEquals(headers['content-length'], '0')
self.assertEqual(headers['content-length'], '0')
self._assertObjectEtag(self.bucket, obj, etag)
# PUT Object Copy
@ -72,7 +72,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj,
headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
# PUT Object Copy with URL-encoded Source
dst_bucket = 'dst-bucket'
@ -82,66 +82,66 @@ class TestSwift3Object(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj,
headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-length'], str(len(body)))
self.assertEqual(headers['content-length'], str(len(body)))
elem = fromstring(body, 'CopyObjectResult')
self.assertTrue(elem.find('LastModified').text is not None)
last_modified_xml = elem.find('LastModified').text
self.assertTrue(elem.find('ETag').text is not None)
self.assertEquals(etag, elem.find('ETag').text.strip('"'))
self.assertEqual(etag, elem.find('ETag').text.strip('"'))
self._assertObjectEtag(dst_bucket, dst_obj, etag)
# Check timestamp on Copy:
status, headers, body = \
self.conn.make_request('GET', dst_bucket)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListBucketResult')
# FIXME: COPY result drops mili/microseconds but GET doesn't
self.assertEquals(
self.assertEqual(
elem.find('Contents').find("LastModified").text.rsplit('.', 1)[0],
last_modified_xml.rsplit('.', 1)[0])
# GET Object
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers, etag)
self.assertTrue(headers['last-modified'] is not None)
self.assertTrue(headers['content-type'] is not None)
self.assertEquals(headers['content-length'], str(len(content)))
self.assertEqual(headers['content-length'], str(len(content)))
# HEAD Object
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers, etag)
self.assertTrue(headers['last-modified'] is not None)
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-length'], str(len(content)))
self.assertEqual(headers['content-length'], str(len(content)))
# DELETE Object
status, headers, body = \
self.conn.make_request('DELETE', self.bucket, obj)
self.assertEquals(status, 204)
self.assertEqual(status, 204)
self.assertCommonResponseHeaders(headers)
def test_put_object_error(self):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('PUT', self.bucket, 'object')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('PUT', 'bucket2', 'object')
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
self.assertEqual(headers['content-type'], 'application/xml')
def test_put_object_copy_error(self):
obj = 'object'
@ -154,29 +154,29 @@ class TestSwift3Object(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('PUT', dst_bucket, dst_obj, headers)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(headers['content-type'], 'application/xml')
# /src/nothing -> /dst/dst
headers = {'X-Amz-Copy-Source': '/%s/%s' % (self.bucket, 'nothing')}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers)
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchKey')
self.assertEqual(headers['content-type'], 'application/xml')
# /nothing/src -> /dst/dst
headers = {'X-Amz-Copy-Source': '/%s/%s' % ('nothing', obj)}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers)
# TODO: source bucket is not check.
# self.assertEquals(get_error_code(body), 'NoSuchBucket')
# self.assertEqual(get_error_code(body), 'NoSuchBucket')
# /src/src -> /nothing/dst
headers = {'X-Amz-Copy-Source': '/%s/%s' % (self.bucket, obj)}
status, headers, body = \
self.conn.make_request('PUT', 'nothing', dst_obj, headers)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
self.assertEqual(headers['content-type'], 'application/xml')
def test_get_object_error(self):
obj = 'object'
@ -185,19 +185,19 @@ class TestSwift3Object(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('GET', self.bucket, obj)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('GET', self.bucket, 'invalid')
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchKey')
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = self.conn.make_request('GET', 'invalid', obj)
# TODO; requires consideration
# self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEquals(headers['content-type'], 'application/xml')
# self.assertEqual(get_error_code(body), 'NoSuchBucket')
self.assertEqual(get_error_code(body), 'NoSuchKey')
self.assertEqual(headers['content-type'], 'application/xml')
def test_head_object_error(self):
obj = 'object'
@ -206,21 +206,21 @@ class TestSwift3Object(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('HEAD', self.bucket, obj)
self.assertEquals(status, 403)
self.assertEquals(body, '') # sanifty
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(status, 403)
self.assertEqual(body, '') # sanifty
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, 'invalid')
self.assertEquals(status, 404)
self.assertEquals(body, '') # sanifty
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(status, 404)
self.assertEqual(body, '') # sanifty
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('HEAD', 'invalid', obj)
self.assertEquals(status, 404)
self.assertEquals(body, '') # sanifty
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(status, 404)
self.assertEqual(body, '') # sanifty
self.assertEqual(headers['content-type'], 'application/xml')
def test_delete_object_error(self):
obj = 'object'
@ -229,18 +229,18 @@ class TestSwift3Object(Swift3FunctionalTestCase):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = \
auth_error_conn.make_request('DELETE', self.bucket, obj)
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('DELETE', self.bucket, 'invalid')
self.assertEquals(get_error_code(body), 'NoSuchKey')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchKey')
self.assertEqual(headers['content-type'], 'application/xml')
status, headers, body = \
self.conn.make_request('DELETE', 'invalid', obj)
self.assertEquals(get_error_code(body), 'NoSuchBucket')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'NoSuchBucket')
self.assertEqual(headers['content-type'], 'application/xml')
def test_put_object_content_encoding(self):
obj = 'object'
@ -248,11 +248,11 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Content-Encoding': 'gzip'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj)
self.assertTrue('content-encoding' in headers) # sanity
self.assertEquals(headers['content-encoding'], 'gzip')
self.assertEqual(headers['content-encoding'], 'gzip')
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -263,7 +263,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Content-MD5': calculate_md5(content)}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -274,10 +274,10 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Content-Type': 'text/plain'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj)
self.assertEquals(headers['content-type'], 'text/plain')
self.assertEqual(headers['content-type'], 'text/plain')
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -287,27 +287,27 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-None-Match': '*'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 501)
self.assertEqual(status, 501)
headers = {'If-Match': '*'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 501)
self.assertEqual(status, 501)
headers = {'If-Modified-Since': 'Sat, 27 Jun 2015 00:00:00 GMT'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 501)
self.assertEqual(status, 501)
headers = {'If-Unmodified-Since': 'Sat, 27 Jun 2015 00:00:00 GMT'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 501)
self.assertEqual(status, 501)
# None of the above should actually have created an object
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, {}, '')
self.assertEquals(status, 404)
self.assertEqual(status, 404)
def test_put_object_expect(self):
obj = 'object'
@ -316,7 +316,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Expect': '100-continue'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -327,12 +327,12 @@ class TestSwift3Object(Swift3FunctionalTestCase):
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj,
req_headers, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj)
for header, value in req_headers.items():
self.assertIn(header.lower(), headers)
self.assertEquals(headers[header.lower()], value)
self.assertEqual(headers[header.lower()], value)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -368,7 +368,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'X-Amz-Storage-Class': 'STANDARD'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers, content)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -386,7 +386,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'X-Amz-Copy-Source': '/%s/%s' % (self.bucket, obj)}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(dst_bucket, dst_obj, etag)
@ -394,7 +394,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'X-Amz-Copy-Source': '/%s/%s' % (self.bucket, obj)}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, dst_obj, headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, dst_obj, etag)
@ -405,7 +405,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
'X-Amz-Metadata-Directive': 'REPLACE'}
status, headers, body = \
self.conn.make_request('PUT', self.bucket, obj, headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self._assertObjectEtag(self.bucket, obj, etag)
self.assertCommonResponseHeaders(headers)
@ -422,11 +422,11 @@ class TestSwift3Object(Swift3FunctionalTestCase):
'X-Amz-Meta-Test': 'dst'}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
status, headers, body = \
self.conn.make_request('HEAD', dst_bucket, dst_obj)
self.assertEquals(headers['x-amz-meta-test'], 'dst')
self.assertEqual(headers['x-amz-meta-test'], 'dst')
def test_put_object_copy_source_if_modified_since(self):
obj = 'object'
@ -444,7 +444,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
formatdate(src_datetime)}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -464,7 +464,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
formatdate(src_datetime)}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -483,7 +483,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
'X-Amz-Copy-Source-If-Match': etag}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -499,7 +499,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
'X-Amz-Copy-Source-If-None-Match': 'none-match'}
status, headers, body = \
self.conn.make_request('PUT', dst_bucket, dst_obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self._assertObjectEtag(self.bucket, obj, etag)
@ -510,9 +510,9 @@ class TestSwift3Object(Swift3FunctionalTestCase):
query = 'response-content-type=text/plain'
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-type'], 'text/plain')
self.assertEqual(headers['content-type'], 'text/plain')
def test_get_object_response_content_language(self):
obj = 'object'
@ -521,9 +521,9 @@ class TestSwift3Object(Swift3FunctionalTestCase):
query = 'response-content-language=en'
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-language'], 'en')
self.assertEqual(headers['content-language'], 'en')
def test_get_object_response_cache_control(self):
obj = 'object'
@ -532,9 +532,9 @@ class TestSwift3Object(Swift3FunctionalTestCase):
query = 'response-cache-control=private'
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['cache-control'], 'private')
self.assertEqual(headers['cache-control'], 'private')
def test_get_object_response_content_disposition(self):
obj = 'object'
@ -543,9 +543,9 @@ class TestSwift3Object(Swift3FunctionalTestCase):
query = 'response-content-disposition=inline'
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-disposition'], 'inline')
self.assertEqual(headers['content-disposition'], 'inline')
def test_get_object_response_content_encoding(self):
obj = 'object'
@ -554,9 +554,9 @@ class TestSwift3Object(Swift3FunctionalTestCase):
query = 'response-content-encoding=gzip'
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, query=query)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertEquals(headers['content-encoding'], 'gzip')
self.assertEqual(headers['content-encoding'], 'gzip')
def test_get_object_range(self):
obj = 'object'
@ -568,49 +568,49 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Range': 'bytes=1-5'}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 206)
self.assertEqual(status, 206)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertTrue('x-amz-meta-test' in headers)
self.assertEquals('swift', headers['x-amz-meta-test'])
self.assertEquals(body, 'bcdef')
self.assertEqual('swift', headers['x-amz-meta-test'])
self.assertEqual(body, 'bcdef')
headers = {'Range': 'bytes=5-'}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 206)
self.assertEqual(status, 206)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertTrue('x-amz-meta-test' in headers)
self.assertEquals('swift', headers['x-amz-meta-test'])
self.assertEquals(body, 'fghij')
self.assertEqual('swift', headers['x-amz-meta-test'])
self.assertEqual(body, 'fghij')
headers = {'Range': 'bytes=-5'}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 206)
self.assertEqual(status, 206)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-length' in headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertTrue('x-amz-meta-test' in headers)
self.assertEquals('swift', headers['x-amz-meta-test'])
self.assertEquals(body, 'fghij')
self.assertEqual('swift', headers['x-amz-meta-test'])
self.assertEqual(body, 'fghij')
ranges = ['1-2', '4-5']
headers = {'Range': 'bytes=%s' % ','.join(ranges)}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 206)
self.assertEqual(status, 206)
self.assertCommonResponseHeaders(headers)
self.assertTrue('content-length' in headers)
self.assertTrue('content-type' in headers) # sanity
content_type, boundary = headers['content-type'].split(';')
self.assertEquals('multipart/byteranges', content_type)
self.assertEqual('multipart/byteranges', content_type)
self.assertTrue(boundary.startswith('boundary=')) # sanity
boundary_str = boundary[len('boundary='):]
@ -620,8 +620,8 @@ class TestSwift3Object(Swift3FunctionalTestCase):
def check_line_header(line, expected_key, expected_value):
key, value = line.split(':', 1)
self.assertEquals(expected_key, key.strip())
self.assertEquals(expected_value, value.strip())
self.assertEqual(expected_key, key.strip())
self.assertEqual(expected_value, value.strip())
for range_value in ranges:
start, end = map(int, range_value.split('-'))
@ -642,7 +642,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
lines[1].strip(), 'Content-Range', expected_range)
# rest
rest = [line for line in lines[2:] if line.strip()]
self.assertEquals(1, len(rest)) # sanity
self.assertEqual(1, len(rest)) # sanity
self.assertTrue(content[start:end], rest[0])
# no next section
@ -658,7 +658,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-Modified-Since': formatdate(src_datetime)}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_get_object_if_unmodified_since(self):
@ -672,7 +672,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
{'If-Unmodified-Since': formatdate(src_datetime)}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_get_object_if_match(self):
@ -686,7 +686,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-Match': etag}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_get_object_if_none_match(self):
@ -696,7 +696,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-None-Match': 'none-match'}
status, headers, body = \
self.conn.make_request('GET', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_head_object_range(self):
@ -707,19 +707,19 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'Range': 'bytes=1-5'}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertCommonResponseHeaders(headers)
headers = {'Range': 'bytes=5-'}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertCommonResponseHeaders(headers)
headers = {'Range': 'bytes=-5'}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(headers['content-length'], '5')
self.assertEqual(headers['content-length'], '5')
self.assertCommonResponseHeaders(headers)
def test_head_object_if_modified_since(self):
@ -733,7 +733,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-Modified-Since': formatdate(dt)}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_head_object_if_unmodified_since(self):
@ -747,7 +747,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-Unmodified-Since': formatdate(dt)}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_head_object_if_match(self):
@ -761,7 +761,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-Match': etag}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
def test_head_object_if_none_match(self):
@ -771,7 +771,7 @@ class TestSwift3Object(Swift3FunctionalTestCase):
headers = {'If-None-Match': 'none-match'}
status, headers, body = \
self.conn.make_request('HEAD', self.bucket, obj, headers=headers)
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)

@ -29,7 +29,7 @@ class TestSwift3Service(Swift3FunctionalTestCase):
def test_service(self):
# GET Service(without bucket)
status, headers, body = self.conn.make_request('GET')
self.assertEquals(status, 200)
self.assertEqual(status, 200)
self.assertCommonResponseHeaders(headers)
self.assertTrue(headers['content-type'] is not None)
@ -38,21 +38,21 @@ class TestSwift3Service(Swift3FunctionalTestCase):
elem = fromstring(body, 'ListAllMyBucketsResult')
buckets = elem.findall('./Buckets/Bucket')
self.assertEquals(list(buckets), [])
self.assertEqual(list(buckets), [])
owner = elem.find('Owner')
self.assertEquals(self.conn.user_id, owner.find('ID').text)
self.assertEquals(self.conn.user_id, owner.find('DisplayName').text)
self.assertEqual(self.conn.user_id, owner.find('ID').text)
self.assertEqual(self.conn.user_id, owner.find('DisplayName').text)
# GET Service(with Bucket)
req_buckets = ('bucket', 'bucket2')
for bucket in req_buckets:
self.conn.make_request('PUT', bucket)
status, headers, body = self.conn.make_request('GET')
self.assertEquals(status, 200)
self.assertEqual(status, 200)
elem = fromstring(body, 'ListAllMyBucketsResult')
resp_buckets = elem.findall('./Buckets/Bucket')
self.assertEquals(len(list(resp_buckets)), 2)
self.assertEqual(len(list(resp_buckets)), 2)
for b in resp_buckets:
self.assertTrue(b.find('Name').text in req_buckets)
self.assertTrue(b.find('CreationDate') is not None)
@ -60,8 +60,8 @@ class TestSwift3Service(Swift3FunctionalTestCase):
def test_service_error_signature_not_match(self):
auth_error_conn = Connection(aws_secret_key='invalid')
status, headers, body = auth_error_conn.make_request('GET')
self.assertEquals(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEquals(headers['content-type'], 'application/xml')
self.assertEqual(get_error_code(body), 'SignatureDoesNotMatch')
self.assertEqual(headers['content-type'], 'application/xml')
def test_service_error_no_date_header(self):
# Without x-amz-date/Date header, that makes 403 forbidden

@ -37,9 +37,9 @@ class TestSwift3Acl(Swift3TestCase):
def _check_acl(self, owner, body):
elem = fromstring(body, 'AccessControlPolicy')
permission = elem.find('./AccessControlList/Grant/Permission').text
self.assertEquals(permission, 'FULL_CONTROL')
self.assertEqual(permission, 'FULL_CONTROL')
name = elem.find('./AccessControlList/Grant/Grantee/ID').text
self.assertEquals(name, owner)
self.assertEqual(name, owner)
def test_bucket_acl_GET(self):
req = Request.blank('/bucket?acl',
@ -68,7 +68,7 @@ class TestSwift3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
req = Request.blank('/bucket?acl',
environ={'REQUEST_METHOD': 'PUT',
@ -79,7 +79,7 @@ class TestSwift3Acl(Swift3TestCase):
self.assertIsNone(req.content_length)
self.assertIsNone(req.message_length())
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_canned_acl_PUT(self):
req = Request.blank('/bucket?acl',
@ -88,7 +88,7 @@ class TestSwift3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'X-AMZ-ACL': 'public-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_bucket_canned_acl_PUT_with_s3acl(self):
@ -99,8 +99,8 @@ class TestSwift3Acl(Swift3TestCase):
'X-AMZ-ACL': 'public-read'})
with mock.patch('swift3.request.handle_acl_header') as mock_handler:
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEquals(mock_handler.call_count, 0)
self.assertEqual(status.split()[0], '200')
self.assertEqual(mock_handler.call_count, 0)
def test_bucket_fails_with_both_acl_header_and_xml_PUT(self):
elem = Element('AccessControlPolicy')
@ -122,8 +122,8 @@ class TestSwift3Acl(Swift3TestCase):
'X-AMZ-ACL': 'public-read'},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body),
'UnexpectedContent')
self.assertEqual(self._get_error_code(body),
'UnexpectedContent')
def test_object_acl_GET(self):
req = Request.blank('/bucket/object?acl',
@ -140,7 +140,7 @@ class TestSwift3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body='invalid')
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MalformedACLError')
self.assertEqual(self._get_error_code(body), 'MalformedACLError')
def test_handle_acl_header(self):
def check_generated_acl_header(acl, targets):
@ -149,7 +149,7 @@ class TestSwift3Acl(Swift3TestCase):
handle_acl_header(req)
for target in targets:
self.assertTrue(target[0] in req.headers)
self.assertEquals(req.headers[target[0]], target[1])
self.assertEqual(req.headers[target[0]], target[1])
check_generated_acl_header('public-read',
[('X-Container-Read', '.r:*,.rlistings')])
@ -182,9 +182,9 @@ class TestSwift3Acl(Swift3TestCase):
with self.assertRaises(InvalidArgument) as cm:
handle_acl_header(req)
self.assertTrue('argument_name' in cm.exception.info)
self.assertEquals(cm.exception.info['argument_name'], 'x-amz-acl')
self.assertEqual(cm.exception.info['argument_name'], 'x-amz-acl')
self.assertTrue('argument_value' in cm.exception.info)
self.assertEquals(cm.exception.info['argument_value'], 'invalid')
self.assertEqual(cm.exception.info['argument_value'], 'invalid')
if __name__ == '__main__':

@ -33,7 +33,7 @@ class TestSwift3AclUtils(Swift3TestCase):
handle_acl_header(req)
for target in targets:
self.assertTrue(target[0] in req.headers)
self.assertEquals(req.headers[target[0]], target[1])
self.assertEqual(req.headers[target[0]], target[1])
check_generated_acl_header('public-read',
[('X-Container-Read', '.r:*,.rlistings')])

@ -82,7 +82,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_HEAD_error(self):
req = Request.blank('/nojunk',
@ -90,8 +90,8 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '404')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '404')
self.assertEqual(body, '') # sanifty
def test_bucket_HEAD_slash(self):
req = Request.blank('/junk/',
@ -99,7 +99,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_HEAD_slash_error(self):
req = Request.blank('/nojunk/',
@ -107,18 +107,18 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '404')
self.assertEqual(status.split()[0], '404')
@s3acl
def test_bucket_GET_error(self):
code = self._test_method_error('GET', '/bucket', swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('GET', '/bucket', swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('GET', '/bucket', swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchBucket')
self.assertEqual(code, 'NoSuchBucket')
code = self._test_method_error('GET', '/bucket', swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
def test_bucket_GET(self):
bucket_name = 'junk'
@ -127,11 +127,11 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListBucketResult')
name = elem.find('./Name').text
self.assertEquals(name, bucket_name)
self.assertEqual(name, bucket_name)
objects = elem.iterchildren('Contents')
@ -142,7 +142,7 @@ class TestSwift3Bucket(Swift3TestCase):
o.find('./LastModified').text)
self.assertEqual('"0"', o.find('./ETag').text)
self.assertEquals(len(names), len(self.objects))
self.assertEqual(len(names), len(self.objects))
for i in self.objects:
self.assertTrue(i[0] in names)
@ -153,14 +153,14 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListBucketResult')
name = elem.find('./Name').text
self.assertEquals(name, bucket_name)
self.assertEqual(name, bucket_name)
prefixes = elem.findall('CommonPrefixes')
self.assertEquals(len(prefixes), len(self.prefixes))
self.assertEqual(len(prefixes), len(self.prefixes))
for p in prefixes:
self.assertTrue(p.find('./Prefix').text in self.prefixes)
@ -173,7 +173,7 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./IsTruncated').text, 'false')
self.assertEqual(elem.find('./IsTruncated').text, 'false')
req = Request.blank('/%s?max-keys=4' % bucket_name,
environ={'REQUEST_METHOD': 'GET'},
@ -181,7 +181,7 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./IsTruncated').text, 'true')
self.assertEqual(elem.find('./IsTruncated').text, 'true')
def test_bucket_GET_max_keys(self):
bucket_name = 'junk'
@ -192,7 +192,7 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./MaxKeys').text, '5')
self.assertEqual(elem.find('./MaxKeys').text, '5')
_, path = self.swift.calls[-1]
_, query_string = path.split('?')
args = dict(cgi.parse_qsl(query_string))
@ -204,11 +204,11 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./MaxKeys').text, '5000')
self.assertEqual(elem.find('./MaxKeys').text, '5000')
_, path = self.swift.calls[-1]
_, query_string = path.split('?')
args = dict(cgi.parse_qsl(query_string))
self.assertEquals(args['limit'], '1001')
self.assertEqual(args['limit'], '1001')
def test_bucket_GET_str_max_keys(self):
bucket_name = 'junk'
@ -218,7 +218,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_bucket_GET_negative_max_keys(self):
bucket_name = 'junk'
@ -228,7 +228,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_bucket_GET_over_32bit_int_max_keys(self):
bucket_name = 'junk'
@ -239,7 +239,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_bucket_GET_passthroughs(self):
bucket_name = 'junk'
@ -249,15 +249,15 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./Prefix').text, 'c')
self.assertEquals(elem.find('./Marker').text, 'b')
self.assertEquals(elem.find('./Delimiter').text, 'a')
self.assertEqual(elem.find('./Prefix').text, 'c')
self.assertEqual(elem.find('./Marker').text, 'b')
self.assertEqual(elem.find('./Delimiter').text, 'a')
_, path = self.swift.calls[-1]
_, query_string = path.split('?')
args = dict(cgi.parse_qsl(query_string))
self.assertEquals(args['delimiter'], 'a')
self.assertEquals(args['marker'], 'b')
self.assertEquals(args['prefix'], 'c')
self.assertEqual(args['delimiter'], 'a')
self.assertEqual(args['marker'], 'b')
self.assertEqual(args['prefix'], 'c')
def test_bucket_GET_with_nonascii_queries(self):
bucket_name = 'junk'
@ -269,15 +269,15 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./Prefix').text, '\xef\xbc\xa3')
self.assertEquals(elem.find('./Marker').text, '\xef\xbc\xa2')
self.assertEquals(elem.find('./Delimiter').text, '\xef\xbc\xa1')
self.assertEqual(elem.find('./Prefix').text, '\xef\xbc\xa3')
self.assertEqual(elem.find('./Marker').text, '\xef\xbc\xa2')
self.assertEqual(elem.find('./Delimiter').text, '\xef\xbc\xa1')
_, path = self.swift.calls[-1]
_, query_string = path.split('?')
args = dict(cgi.parse_qsl(query_string))
self.assertEquals(args['delimiter'], '\xef\xbc\xa1')
self.assertEquals(args['marker'], '\xef\xbc\xa2')
self.assertEquals(args['prefix'], '\xef\xbc\xa3')
self.assertEqual(args['delimiter'], '\xef\xbc\xa1')
self.assertEqual(args['marker'], '\xef\xbc\xa2')
self.assertEqual(args['prefix'], '\xef\xbc\xa3')
def test_bucket_GET_with_delimiter_max_keys(self):
bucket_name = 'junk'
@ -286,11 +286,11 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./NextMarker').text, 'viola')
self.assertEquals(elem.find('./MaxKeys').text, '2')
self.assertEquals(elem.find('./IsTruncated').text, 'true')
self.assertEqual(elem.find('./NextMarker').text, 'viola')
self.assertEqual(elem.find('./MaxKeys').text, '2')
self.assertEqual(elem.find('./IsTruncated').text, 'true')
def test_bucket_GET_subdir_with_delimiter_max_keys(self):
bucket_name = 'junk-subdir'
@ -299,11 +299,11 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListBucketResult')
self.assertEquals(elem.find('./NextMarker').text, 'rose')
self.assertEquals(elem.find('./MaxKeys').text, '1')
self.assertEquals(elem.find('./IsTruncated').text, 'true')
self.assertEqual(elem.find('./NextMarker').text, 'rose')
self.assertEqual(elem.find('./MaxKeys').text, '1')
self.assertEqual(elem.find('./IsTruncated').text, 'true')
@s3acl
def test_bucket_PUT_error(self):
@ -314,13 +314,13 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Content-Length': '-1'})
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error('PUT', '/bucket', swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('PUT', '/bucket', swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('PUT', '/bucket', swob.HTTPAccepted)
self.assertEquals(code, 'BucketAlreadyExists')
self.assertEqual(code, 'BucketAlreadyExists')
code = self._test_method_error('PUT', '/bucket', swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error(
'PUT', '/bucket+bucket', swob.HTTPCreated)
self.assertEqual(code, 'InvalidBucketName')
@ -349,8 +349,8 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEquals(headers['Location'], '/bucket')
self.assertEqual(status.split()[0], '200')
self.assertEqual(headers['Location'], '/bucket')
# Apparently some clients will include a chunked transfer-encoding
# even with no body
@ -360,8 +360,8 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header(),
'Transfer-Encoding': 'chunked'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEquals(headers['Location'], '/bucket')
self.assertEqual(status.split()[0], '200')
self.assertEqual(headers['Location'], '/bucket')
@s3acl
def test_bucket_PUT_with_location(self):
@ -375,7 +375,7 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_PUT_with_canned_acl(self):
req = Request.blank('/bucket',
@ -384,10 +384,10 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header(),
'X-Amz-Acl': 'public-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
_, _, headers = self.swift.calls_with_headers[-1]
self.assertTrue('X-Container-Read' in headers)
self.assertEquals(headers.get('X-Container-Read'), '.r:*,.rlistings')
self.assertEqual(headers.get('X-Container-Read'), '.r:*,.rlistings')
self.assertTrue('X-Container-Sysmeta-Swift3-Acl' not in headers)
@s3acl(s3acl_only=True)
@ -401,12 +401,12 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header(),
'X-Amz-Acl': 'public-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
_, _, headers = self.swift.calls_with_headers[-1]
self.assertTrue('X-Container-Read' not in headers)
self.assertTrue('X-Container-Sysmeta-Swift3-Acl' in headers)
self.assertEquals(headers.get('X-Container-Sysmeta-Swift3-Acl'),
acl['x-container-sysmeta-swift3-acl'])
self.assertEqual(headers.get('X-Container-Sysmeta-Swift3-Acl'),
acl['x-container-sysmeta-swift3-acl'])
@s3acl
def test_bucket_PUT_with_location_error(self):
@ -420,8 +420,8 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body),
'InvalidLocationConstraint')
self.assertEqual(self._get_error_code(body),
'InvalidLocationConstraint')
@s3acl
def test_bucket_PUT_with_location_invalid_xml(self):
@ -431,7 +431,7 @@ class TestSwift3Bucket(Swift3TestCase):
'Date': self.get_date_header()},
body='invalid_xml')
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MalformedXML')
self.assertEqual(self._get_error_code(body), 'MalformedXML')
def _test_method_error_delete(self, path, sw_resp):
self.swift.register('HEAD', '/v1/AUTH_test' + path, sw_resp, {}, None)
@ -440,19 +440,19 @@ class TestSwift3Bucket(Swift3TestCase):
@s3acl
def test_bucket_DELETE_error(self):
code = self._test_method_error_delete('/bucket', swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error_delete('/bucket', swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error_delete('/bucket', swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchBucket')
self.assertEqual(code, 'NoSuchBucket')
code = self._test_method_error_delete('/bucket', swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
# bucket not empty is now validated at swift3
self.swift.register('HEAD', '/v1/AUTH_test/bucket', swob.HTTPNoContent,
{'X-Container-Object-Count': '1'}, None)
code = self._test_method_error('DELETE', '/bucket', swob.HTTPConflict)
self.assertEquals(code, 'BucketNotEmpty')
self.assertEqual(code, 'BucketNotEmpty')
@s3acl
def test_bucket_DELETE(self):
@ -466,7 +466,7 @@ class TestSwift3Bucket(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
@s3acl
def test_bucket_DELETE_error_while_segment_bucket_delete(self):
@ -501,25 +501,25 @@ class TestSwift3Bucket(Swift3TestCase):
def test_bucket_GET_without_permission(self):
status, headers, body = self._test_bucket_for_s3acl('GET',
'test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
@s3acl(s3acl_only=True)
def test_bucket_GET_with_read_permission(self):
status, headers, body = self._test_bucket_for_s3acl('GET',
'test:read')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_bucket_GET_with_fullcontrol_permission(self):
status, headers, body = \
self._test_bucket_for_s3acl('GET', 'test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_bucket_GET_with_owner_permission(self):
status, headers, body = self._test_bucket_for_s3acl('GET',
'test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def _test_bucket_GET_canned_acl(self, bucket):
req = Request.blank('/%s' % bucket,
@ -533,18 +533,18 @@ class TestSwift3Bucket(Swift3TestCase):
def test_bucket_GET_authenticated_users(self):
status, headers, body = \
self._test_bucket_GET_canned_acl('authenticated')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_bucket_GET_all_users(self):
status, headers, body = self._test_bucket_GET_canned_acl('public')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_bucket_DELETE_without_permission(self):
status, headers, body = self._test_bucket_for_s3acl('DELETE',
'test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
# Don't delete anything in backend Swift
called = [method for method, _, _ in self.swift.calls_with_headers]
self.assertNotIn('DELETE', called)
@ -553,7 +553,7 @@ class TestSwift3Bucket(Swift3TestCase):
def test_bucket_DELETE_with_write_permission(self):
status, headers, body = self._test_bucket_for_s3acl('DELETE',
'test:write')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
# Don't delete anything in backend Swift
called = [method for method, _, _ in self.swift.calls_with_headers]
self.assertNotIn('DELETE', called)
@ -562,10 +562,11 @@ class TestSwift3Bucket(Swift3TestCase):
def test_bucket_DELETE_with_fullcontrol_permission(self):
status, headers, body = \
self._test_bucket_for_s3acl('DELETE', 'test:full_control')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
# Don't delete anything in backend Swift
called = [method for method, _, _ in self.swift.calls_with_headers]
self.assertNotIn('DELETE', called)
if __name__ == '__main__':
unittest.main()

@ -36,9 +36,9 @@ class TestSwift3Cfg(unittest.TestCase):
}
)
self.assertEquals(conf['a'], 'str2')
self.assertEquals(conf['b'], 100)
self.assertEquals(conf['c'], False)
self.assertEqual(conf['a'], 'str2')
self.assertEqual(conf['b'], 100)
self.assertEqual(conf['c'], False)
if __name__ == '__main__':
unittest.main()

@ -27,30 +27,30 @@ class TestSwift3Etree(unittest.TestCase):
# No namespace is same as having the S3 namespace.
xml = test_xml('', '')
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B').text, 'C')
self.assertEqual(elem.find('./B').text, 'C')
# The S3 namespace is handled as no namespace.
xml = test_xml('xmlns="%s"' % etree.XMLNS_S3, '')
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B').text, 'C')
self.assertEqual(elem.find('./B').text, 'C')
xml = test_xml('xmlns:s3="%s"' % etree.XMLNS_S3, 's3:')
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B').text, 'C')
self.assertEqual(elem.find('./B').text, 'C')
# Any namespaces without a prefix work as no namespace.
xml = test_xml('xmlns="http://example.com/"', '')
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B').text, 'C')
self.assertEqual(elem.find('./B').text, 'C')
xml = test_xml('xmlns:s3="http://example.com/"', 's3:')
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B'), None)
self.assertEqual(elem.find('./B'), None)
def test_xml_with_comments(self):
xml = '<A><!-- comment --><B>C</B></A>'
elem = etree.fromstring(xml)
self.assertEquals(elem.find('./B').text, 'C')
self.assertEqual(elem.find('./B').text, 'C')
def test_tostring_with_nonascii_text(self):
elem = etree.Element('Test')
@ -65,7 +65,7 @@ class TestSwift3Etree(unittest.TestCase):
'<Test><FOO>\xef\xbc\xa1</FOO></Test>'
elem = etree.fromstring(input_str)
text = elem.find('FOO').text
self.assertEquals(text, '\xef\xbc\xa1')
self.assertEqual(text, '\xef\xbc\xa1')
self.assertTrue(isinstance(text, str))

@ -29,7 +29,7 @@ class Swift3HelperTestCase(unittest.TestCase):
def _check_headers(self, swift, method, path, headers):
_, response_headers, _ = swift._responses[(method, path)]
self.assertEquals(headers, response_headers)
self.assertEqual(headers, response_headers)
def test_fake_swift_sysmeta(self):
swift = FakeSwift()

@ -38,10 +38,10 @@ class TestSwift3Location(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'LocationConstraint')
location = elem.text
self.assertEquals(location, None)
self.assertEqual(location, None)
def test_object_location_setting_as_us_west_1(self):
CONF.location = 'us-west-1'
@ -50,10 +50,10 @@ class TestSwift3Location(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'LocationConstraint')
location = elem.text
self.assertEquals(location, 'us-west-1')
self.assertEqual(location, 'us-west-1')
if __name__ == '__main__':

@ -33,8 +33,8 @@ class TestSwift3Logging(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
xml = fromstring(body, 'BucketLoggingStatus')
self.assertEquals(xml.keys(), [])
self.assertEquals(status.split()[0], '200')
self.assertEqual(xml.keys(), [])
self.assertEqual(status.split()[0], '200')
def test_object_logging_GET_error(self):
req = Request.blank('/bucket/object?logging',
@ -42,7 +42,7 @@ class TestSwift3Logging(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NoLoggingStatusForKey')
self.assertEqual(self._get_error_code(body), 'NoLoggingStatusForKey')
def test_bucket_logging_PUT(self):
req = Request.blank('/bucket?logging',
@ -51,8 +51,8 @@ class TestSwift3Logging(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
# FIXME: Support PUT logging
# self.assertEquals(status, 201)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
# self.assertEqual(status, 201)
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_object_logging_PUT_error(self):
req = Request.blank('/bucket/object?logging',
@ -60,7 +60,7 @@ class TestSwift3Logging(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NoLoggingStatusForKey')
self.assertEqual(self._get_error_code(body), 'NoLoggingStatusForKey')
if __name__ == '__main__':
unittest.main()

@ -42,14 +42,14 @@ class TestSwift3Middleware(Swift3TestCase):
def test_non_s3_request_passthrough(self):
req = Request.blank('/something')
status, headers, body = self.call_swift3(req)
self.assertEquals(body, 'FAKE APP')
self.assertEqual(body, 'FAKE APP')
def test_bad_format_authorization(self):
req = Request.blank('/something',
headers={'Authorization': 'hoge',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_bad_method(self):
req = Request.blank('/',
@ -57,7 +57,7 @@ class TestSwift3Middleware(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MethodNotAllowed')
self.assertEqual(self._get_error_code(body), 'MethodNotAllowed')
def test_bad_method_but_method_exists_in_controller(self):
req = Request.blank(
@ -80,8 +80,8 @@ class TestSwift3Middleware(Swift3TestCase):
status, headers, body = self.call_swift3(req)
raw_path_info = "/%s/%s" % (bucket_name, object_name)
path_info = req.environ['PATH_INFO']
self.assertEquals(path_info, unquote(raw_path_info))
self.assertEquals(req.path, quote(path_info))
self.assertEqual(path_info, unquote(raw_path_info))
self.assertEqual(req.path, quote(path_info))
def test_canonical_string_v2(self):
"""
@ -106,7 +106,7 @@ class TestSwift3Middleware(Swift3TestCase):
def verify(hash, path, headers):
s = canonical_string(path, headers)
self.assertEquals(hash, hashlib.md5(s).hexdigest())
self.assertEqual(hash, hashlib.md5(s).hexdigest())
verify('6dd08c75e42190a1ce9468d1fd2eb787', '/bucket/object',
{'Content-Type': 'text/plain', 'X-Amz-Something': 'test',
@ -161,8 +161,8 @@ class TestSwift3Middleware(Swift3TestCase):
'X-Amz-Something': 'test'})
str3 = canonical_string('/', headers={'X-Amz-Something': 'test'})
self.assertEquals(str1, str2)
self.assertEquals(str2, str3)
self.assertEqual(str1, str2)
self.assertEqual(str2, str3)
def test_signed_urls_expired(self):
expire = '1000000000'
@ -173,7 +173,7 @@ class TestSwift3Middleware(Swift3TestCase):
req.headers['Date'] = datetime.utcnow()
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_signed_urls(self):
# Set expire to last 32b timestamp value
@ -187,9 +187,9 @@ class TestSwift3Middleware(Swift3TestCase):
headers={'Date': self.get_date_header()})
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
for _, _, headers in self.swift.calls_with_headers:
self.assertEquals(headers['Authorization'], 'AWS test:tester:X')
self.assertEqual(headers['Authorization'], 'AWS test:tester:X')
def test_signed_urls_no_timestamp(self):
expire = '2147483647' # 19 Jan 2038 03:14:07
@ -200,9 +200,9 @@ class TestSwift3Middleware(Swift3TestCase):
status, headers, body = self.call_swift3(req)
# Curious! But actually S3 doesn't verify any x-amz-date/date headers
# for signed_url access and it also doesn't check timestamp
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
for _, _, headers in self.swift.calls_with_headers:
self.assertEquals(headers['Authorization'], 'AWS test:tester:X')
self.assertEqual(headers['Authorization'], 'AWS test:tester:X')
def test_signed_urls_invalid_expire(self):
expire = 'invalid'
@ -213,7 +213,7 @@ class TestSwift3Middleware(Swift3TestCase):
req.headers['Date'] = datetime.utcnow()
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_signed_urls_no_sign(self):
expire = '2147483647' # 19 Jan 2038 03:14:07
@ -224,7 +224,7 @@ class TestSwift3Middleware(Swift3TestCase):
req.headers['Date'] = datetime.utcnow()
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_signed_urls_no_access(self):
expire = '2147483647' # 19 Jan 2038 03:14:07
@ -330,7 +330,7 @@ class TestSwift3Middleware(Swift3TestCase):
'AWS test:tester:hmac'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_object_virtual_hosted_style(self):
req = Request.blank('/object',
@ -340,7 +340,7 @@ class TestSwift3Middleware(Swift3TestCase):
'AWS test:tester:hmac'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_token_generation(self):
self.swift.register('HEAD', '/v1/AUTH_test/bucket+segments/'
@ -357,7 +357,7 @@ class TestSwift3Middleware(Swift3TestCase):
req.headers['Date'] = date_header
status, headers, body = self.call_swift3(req)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertEquals(base64.urlsafe_b64decode(
self.assertEqual(base64.urlsafe_b64decode(
headers['X-Auth-Token']),
'PUT\n\n\n%s\n/bucket/object?partNumber=1&uploadId=123456789abcdef'
% date_header)
@ -368,7 +368,7 @@ class TestSwift3Middleware(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidURI')
self.assertEqual(self._get_error_code(body), 'InvalidURI')
def test_object_create_bad_md5_unreadable(self):
req = Request.blank('/bucket/object',
@ -377,7 +377,7 @@ class TestSwift3Middleware(Swift3TestCase):
'HTTP_CONTENT_MD5': '#'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidDigest')
self.assertEqual(self._get_error_code(body), 'InvalidDigest')
def test_object_create_bad_md5_too_short(self):
too_short_digest = md5('hey').hexdigest()[:-1]
@ -389,7 +389,7 @@ class TestSwift3Middleware(Swift3TestCase):
'HTTP_CONTENT_MD5': md5_str},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidDigest')
self.assertEqual(self._get_error_code(body), 'InvalidDigest')
def test_object_create_bad_md5_too_long(self):
too_long_digest = md5('hey').hexdigest() + 'suffix'
@ -401,7 +401,7 @@ class TestSwift3Middleware(Swift3TestCase):
'HTTP_CONTENT_MD5': md5_str},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidDigest')
self.assertEqual(self._get_error_code(body), 'InvalidDigest')
def test_invalid_metadata_directive(self):
req = Request.blank('/',
@ -411,7 +411,7 @@ class TestSwift3Middleware(Swift3TestCase):
'invalid'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_invalid_storage_class(self):
req = Request.blank('/',
@ -420,7 +420,7 @@ class TestSwift3Middleware(Swift3TestCase):
'HTTP_X_AMZ_STORAGE_CLASS': 'INVALID'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidStorageClass')
self.assertEqual(self._get_error_code(body), 'InvalidStorageClass')
def _test_unsupported_header(self, header):
req = Request.blank('/error',
@ -429,7 +429,7 @@ class TestSwift3Middleware(Swift3TestCase):
headers={'x-amz-' + header: 'value',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_mfa(self):
self._test_unsupported_header('mfa')
@ -446,7 +446,7 @@ class TestSwift3Middleware(Swift3TestCase):
'HTTP_AUTHORIZATION': 'AWS X:Y:Z'},
headers={'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_notification(self):
self._test_unsupported_resource('notification')
@ -479,9 +479,9 @@ class TestSwift3Middleware(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
elem = fromstring(body, 'Error')
self.assertEquals(elem.find('./Code').text, 'MethodNotAllowed')
self.assertEquals(elem.find('./Method').text, 'POST')
self.assertEquals(elem.find('./ResourceType').text, 'ACL')
self.assertEqual(elem.find('./Code').text, 'MethodNotAllowed')
self.assertEqual(elem.find('./Method').text, 'POST')
self.assertEqual(elem.find('./ResourceType').text, 'ACL')
def test_registered_defaults(self):
filter_factory(CONF)

@ -52,7 +52,7 @@ class TestSwift3MultiDelete(Swift3TestCase):
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl
def test_object_multi_DELETE(self):
@ -83,15 +83,15 @@ class TestSwift3MultiDelete(Swift3TestCase):
req.date = datetime.now()
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body)
self.assertEquals(len(elem.findall('Deleted')), 3)
self.assertEqual(len(elem.findall('Deleted')), 3)
_, path, _ = self.swift.calls_with_headers[-1]
path, query_string = path.split('?', 1)
self.assertEquals(path, '/v1/AUTH_test/bucket/Key3')
self.assertEqual(path, '/v1/AUTH_test/bucket/Key3')
query = dict(urllib.parse.parse_qsl(query_string))
self.assertEquals(query['multipart-manifest'], 'delete')
self.assertEqual(query['multipart-manifest'], 'delete')
@s3acl
def test_object_multi_DELETE_quiet(self):
@ -115,10 +115,10 @@ class TestSwift3MultiDelete(Swift3TestCase):
'Content-MD5': content_md5},
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body)
self.assertEquals(len(elem.findall('Deleted')), 0)
self.assertEqual(len(elem.findall('Deleted')), 0)
@s3acl
def test_object_multi_DELETE_no_key(self):
@ -142,7 +142,7 @@ class TestSwift3MultiDelete(Swift3TestCase):
'Content-MD5': content_md5},
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'UserKeyMustBeSpecified')
self.assertEqual(self._get_error_code(body), 'UserKeyMustBeSpecified')
@s3acl
def test_object_multi_DELETE_with_invalid_md5(self):
@ -159,7 +159,7 @@ class TestSwift3MultiDelete(Swift3TestCase):
'Content-MD5': 'XXXX'},
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidDigest')
self.assertEqual(self._get_error_code(body), 'InvalidDigest')
@s3acl
def test_object_multi_DELETE_without_md5(self):
@ -175,7 +175,7 @@ class TestSwift3MultiDelete(Swift3TestCase):
'Date': self.get_date_header()},
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidRequest')
self.assertEqual(self._get_error_code(body), 'InvalidRequest')
@s3acl
def test_object_multi_DELETE_too_many_keys(self):
@ -193,7 +193,7 @@ class TestSwift3MultiDelete(Swift3TestCase):
'Content-MD5': content_md5},
body=body)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MalformedXML')
self.assertEqual(self._get_error_code(body), 'MalformedXML')
def _test_object_multi_DELETE(self, account):
self.keys = ['Key1', 'Key2']
@ -225,29 +225,29 @@ class TestSwift3MultiDelete(Swift3TestCase):
@s3acl(s3acl_only=True)
def test_object_multi_DELETE_without_permission(self):
status, headers, body = self._test_object_multi_DELETE('test:other')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body)
errors = elem.findall('Error')
self.assertEquals(len(errors), len(self.keys))
self.assertEqual(len(errors), len(self.keys))
for e in errors:
self.assertTrue(e.find('Key').text in self.keys)
self.assertEquals(e.find('Code').text, 'AccessDenied')
self.assertEquals(e.find('Message').text, 'Access Denied.')
self.assertEqual(e.find('Code').text, 'AccessDenied')
self.assertEqual(e.find('Message').text, 'Access Denied.')
@s3acl(s3acl_only=True)
def test_object_multi_DELETE_with_write_permission(self):
status, headers, body = self._test_object_multi_DELETE('test:write')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body)
self.assertEquals(len(elem.findall('Deleted')), len(self.keys))
self.assertEqual(len(elem.findall('Deleted')), len(self.keys))
@s3acl(s3acl_only=True)
def test_object_multi_DELETE_with_fullcontrol_permission(self):
status, headers, body = \
self._test_object_multi_DELETE('test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body)
self.assertEquals(len(elem.findall('Deleted')), len(self.keys))
self.assertEqual(len(elem.findall('Deleted')), len(self.keys))
if __name__ == '__main__':
unittest.main()

File diff suppressed because it is too large Load Diff

@ -88,7 +88,7 @@ class TestSwift3Obj(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
unexpected_headers = []
for key, val in self.response_headers.iteritems():
@ -96,14 +96,14 @@ class TestSwift3Obj(Swift3TestCase):
'last-modified', 'cache-control', 'Content-Disposition',
'Content-Language', 'expires', 'x-robots-tag'):
self.assertIn(key, headers)
self.assertEquals(headers[key], str(val))
self.assertEqual(headers[key], str(val))
elif key == 'etag':
self.assertEquals(headers[key], '"%s"' % val)
self.assertEqual(headers[key], '"%s"' % val)
elif key.startswith('x-object-meta-'):
self.assertIn('x-amz-meta-' + key[14:], headers)
self.assertEquals(headers['x-amz-meta-' + key[14:]], val)
self.assertEqual(headers['x-amz-meta-' + key[14:]], val)
else:
unexpected_headers.append((key, val))
@ -111,11 +111,11 @@ class TestSwift3Obj(Swift3TestCase):
if unexpected_headers:
self.fail('unexpected headers: %r' % unexpected_headers)
self.assertEquals(headers['etag'],
'"%s"' % self.response_headers['etag'])
self.assertEqual(headers['etag'],
'"%s"' % self.response_headers['etag'])
if method == 'GET':
self.assertEquals(body, self.object_body)
self.assertEqual(body, self.object_body)
@s3acl
def test_object_HEAD_error(self):
@ -129,33 +129,33 @@ class TestSwift3Obj(Swift3TestCase):
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPUnauthorized, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '403')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '403')
self.assertEqual(body, '') # sanifty
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPForbidden, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '403')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '403')
self.assertEqual(body, '') # sanifty
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPNotFound, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '404')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '404')
self.assertEqual(body, '') # sanifty
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPPreconditionFailed, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '412')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '412')
self.assertEqual(body, '') # sanifty
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPServerError, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '500')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '500')
self.assertEqual(body, '') # sanifty
self.swift.register('HEAD', '/v1/AUTH_test/bucket/object',
swob.HTTPServiceUnavailable, {}, None)
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '500')
self.assertEquals(body, '') # sanifty
self.assertEqual(status.split()[0], '500')
self.assertEqual(body, '') # sanifty
def test_object_HEAD(self):
self._test_object_GETorHEAD('HEAD')
@ -172,42 +172,42 @@ class TestSwift3Obj(Swift3TestCase):
def test_object_HEAD_Range_with_invalid_value(self):
range_value = ''
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '5')
self.assertTrue('content-range' not in headers)
range_value = 'hoge'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '5')
self.assertTrue('content-range' not in headers)
range_value = 'bytes='
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '5')
self.assertTrue('content-range' not in headers)
range_value = 'bytes=1'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '5')
self.assertTrue('content-range' not in headers)
range_value = 'bytes=5-1'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '5')
self.assertTrue('content-range' not in headers)
range_value = 'bytes=5-10'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '416')
self.assertEqual(status.split()[0], '416')
@s3acl
def test_object_HEAD_Range(self):
@ -217,7 +217,7 @@ class TestSwift3Obj(Swift3TestCase):
self.object_body)
range_value = 'bytes=0-3'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '206')
self.assertEqual(status.split()[0], '206')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '4')
self.assertTrue('content-range' in headers)
@ -227,7 +227,7 @@ class TestSwift3Obj(Swift3TestCase):
range_value = 'bytes=3-3'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '206')
self.assertEqual(status.split()[0], '206')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '1')
self.assertTrue('content-range' in headers)
@ -237,7 +237,7 @@ class TestSwift3Obj(Swift3TestCase):
range_value = 'bytes=1-'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '206')
self.assertEqual(status.split()[0], '206')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '4')
self.assertTrue('content-range' in headers)
@ -247,7 +247,7 @@ class TestSwift3Obj(Swift3TestCase):
range_value = 'bytes=-3'
status, headers, body = self._test_object_HEAD_Range(range_value)
self.assertEquals(status.split()[0], '206')
self.assertEqual(status.split()[0], '206')
self.assertTrue('content-length' in headers)
self.assertEqual(headers['content-length'], '3')
self.assertTrue('content-range' in headers)
@ -259,22 +259,22 @@ class TestSwift3Obj(Swift3TestCase):
def test_object_GET_error(self):
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchKey')
self.assertEqual(code, 'NoSuchKey')
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPPreconditionFailed)
self.assertEquals(code, 'PreconditionFailed')
self.assertEqual(code, 'PreconditionFailed')
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPServiceUnavailable)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
@s3acl
def test_object_GET(self):
@ -301,7 +301,7 @@ class TestSwift3Obj(Swift3TestCase):
'Range': 'bytes=0-3',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '206')
self.assertEqual(status.split()[0], '206')
self.assertTrue('content-range' in headers)
self.assertTrue(headers['content-range'].startswith('bytes 0-3'))
@ -310,7 +310,7 @@ class TestSwift3Obj(Swift3TestCase):
def test_object_GET_Range_error(self):
code = self._test_method_error('GET', '/bucket/object',
swob.HTTPRequestedRangeNotSatisfiable)
self.assertEquals(code, 'InvalidRange')
self.assertEqual(code, 'InvalidRange')
@s3acl
def test_object_GET_Response(self):
@ -331,76 +331,76 @@ class TestSwift3Obj(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
self.assertTrue('content-type' in headers)
self.assertEquals(headers['content-type'], 'text/plain')
self.assertEqual(headers['content-type'], 'text/plain')
self.assertTrue('content-language' in headers)
self.assertEquals(headers['content-language'], 'en')
self.assertEqual(headers['content-language'], 'en')
self.assertTrue('expires' in headers)
self.assertEquals(headers['expires'], 'Fri, 01 Apr 2014 12:00:00 GMT')
self.assertEqual(headers['expires'], 'Fri, 01 Apr 2014 12:00:00 GMT')
self.assertTrue('cache-control' in headers)
self.assertEquals(headers['cache-control'], 'no-cache')
self.assertEqual(headers['cache-control'], 'no-cache')
self.assertTrue('content-disposition' in headers)
self.assertEquals(headers['content-disposition'],
'attachment')
self.assertEqual(headers['content-disposition'],
'attachment')
self.assertTrue('content-encoding' in headers)
self.assertEquals(headers['content-encoding'], 'gzip')
self.assertEqual(headers['content-encoding'], 'gzip')
@s3acl
def test_object_PUT_error(self):
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchBucket')
self.assertEqual(code, 'NoSuchBucket')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPRequestEntityTooLarge)
self.assertEquals(code, 'EntityTooLarge')
self.assertEqual(code, 'EntityTooLarge')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPUnprocessableEntity)
self.assertEquals(code, 'BadDigest')
self.assertEqual(code, 'BadDigest')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPLengthRequired)
self.assertEquals(code, 'MissingContentLength')
self.assertEqual(code, 'MissingContentLength')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPPreconditionFailed)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPServiceUnavailable)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPCreated,
{'X-Amz-Copy-Source': ''})
self.assertEquals(code, 'InvalidArgument')
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPCreated,
{'X-Amz-Copy-Source': '/'})
self.assertEquals(code, 'InvalidArgument')
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPCreated,
{'X-Amz-Copy-Source': '/bucket'})
self.assertEquals(code, 'InvalidArgument')
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPCreated,
{'X-Amz-Copy-Source': '/bucket/'})
self.assertEquals(code, 'InvalidArgument')
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error(
'PUT', '/bucket/object',
swob.HTTPCreated,
{'X-Amz-Copy-Source': '/src_bucket/src_object',
'X-Amz-Copy-Source-Range': 'bytes=0-0'})
self.assertEquals(code, 'InvalidArgument')
self.assertEqual(code, 'InvalidArgument')
code = self._test_method_error('PUT', '/bucket/object',
swob.HTTPRequestTimeout)
self.assertEquals(code, 'RequestTimeout')
self.assertEqual(code, 'RequestTimeout')
@s3acl
def test_object_PUT(self):
@ -418,13 +418,13 @@ class TestSwift3Obj(Swift3TestCase):
req.date = datetime.now()
req.content_type = 'text/plain'
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
# Check that swift3 returns an etag header.
self.assertEquals(headers['etag'], '"%s"' % etag)
self.assertEqual(headers['etag'], '"%s"' % etag)
_, _, headers = self.swift.calls_with_headers[-1]
# Check that swift3 converts a Content-MD5 header into an etag.
self.assertEquals(headers['etag'], etag)
self.assertEqual(headers['etag'], etag)
def test_object_PUT_headers(self):
content_md5 = self.etag.decode('hex').encode('base64').strip()
@ -455,16 +455,16 @@ class TestSwift3Obj(Swift3TestCase):
_, _, headers = self.swift.calls_with_headers[-1]
# Check that swift3 converts a Content-MD5 header into an etag.
self.assertEquals(headers['ETag'], self.etag)
self.assertEquals(headers['X-Object-Meta-Something'], 'oh hai')
self.assertEquals(headers['X-Object-Meta-Unreadable-Prefix'],
'=?UTF-8?Q?=04w?=')
self.assertEquals(headers['X-Object-Meta-Unreadable-Suffix'],
'=?UTF-8?Q?h=04?=')
self.assertEquals(headers['X-Object-Meta-Lots-Of-Unprintable'],
'=?UTF-8?B?BAQEBAQ=?=')
self.assertEquals(headers['X-Copy-From'], '/some/source')
self.assertEquals(headers['Content-Length'], '0')
self.assertEqual(headers['ETag'], self.etag)
self.assertEqual(headers['X-Object-Meta-Something'], 'oh hai')
self.assertEqual(headers['X-Object-Meta-Unreadable-Prefix'],
'=?UTF-8?Q?=04w?=')
self.assertEqual(headers['X-Object-Meta-Unreadable-Suffix'],
'=?UTF-8?Q?h=04?=')
self.assertEqual(headers['X-Object-Meta-Lots-Of-Unprintable'],
'=?UTF-8?B?BAQEBAQ=?=')
self.assertEqual(headers['X-Copy-From'], '/some/source')
self.assertEqual(headers['Content-Length'], '0')
def _test_object_PUT_copy(self, head_resp, put_header=None,
src_path='/some/source', timestamp=None):
@ -516,17 +516,18 @@ class TestSwift3Obj(Swift3TestCase):
status, headers, body = self._test_object_PUT_copy(
swob.HTTPOk, put_header={'Date': date_header},
timestamp=timestamp)
self.assertEquals(status.split()[0], '200')
self.assertEquals(headers['Content-Type'], 'application/xml')
self.assertEqual(status.split()[0], '200')
self.assertEqual(headers['Content-Type'], 'application/xml')
self.assertTrue(headers.get('etag') is None)
self.assertTrue(headers.get('x-amz-meta-something') is None)
elem = fromstring(body, 'CopyObjectResult')
self.assertEquals(elem.find('LastModified').text, last_modified)
self.assertEquals(elem.find('ETag').text, '"%s"' % self.etag)
self.assertEqual(elem.find('LastModified').text, last_modified)
self.assertEqual(elem.find('ETag').text, '"%s"' % self.etag)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertEquals(headers['X-Copy-From'], '/some/source')
self.assertEquals(headers['Content-Length'], '0')
self.assertEqual(headers['X-Copy-From'], '/some/source')
self.assertEqual(headers['Content-Length'], '0')
@s3acl
def test_object_PUT_copy_no_slash(self):
@ -538,44 +539,44 @@ class TestSwift3Obj(Swift3TestCase):
status, headers, body = self._test_object_PUT_copy(
swob.HTTPOk, src_path='some/source',
put_header={'Date': date_header}, timestamp=timestamp)
self.assertEquals(status.split()[0], '200')
self.assertEquals(headers['Content-Type'], 'application/xml')
self.assertEqual(status.split()[0], '200')
self.assertEqual(headers['Content-Type'], 'application/xml')
self.assertTrue(headers.get('etag') is None)
self.assertTrue(headers.get('x-amz-meta-something') is None)
elem = fromstring(body, 'CopyObjectResult')
self.assertEquals(elem.find('LastModified').text, last_modified)
self.assertEquals(elem.find('ETag').text, '"%s"' % self.etag)
self.assertEqual(elem.find('LastModified').text, last_modified)
self.assertEqual(elem.find('ETag').text, '"%s"' % self.etag)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertEquals(headers['X-Copy-From'], '/some/source')
self.assertEquals(headers['Content-Length'], '0')
self.assertEqual(headers['X-Copy-From'], '/some/source')
self.assertEqual(headers['Content-Length'], '0')
@s3acl
def test_object_PUT_copy_self(self):
status, headers, body = \
self._test_object_PUT_copy_self(swob.HTTPOk)
self.assertEquals(status.split()[0], '400')
self.assertEqual(status.split()[0], '400')
elem = fromstring(body, 'Error')
err_msg = ("This copy request is illegal because it is trying to copy "
"an object to itself without changing the object's "
"metadata, storage class, website redirect location or "
"encryption attributes.")
self.assertEquals(elem.find('Code').text, 'InvalidRequest')
self.assertEquals(elem.find('Message').text, err_msg)
self.assertEqual(elem.find('Code').text, 'InvalidRequest')
self.assertEqual(elem.find('Message').text, err_msg)
@s3acl
def test_object_PUT_copy_self_metadata_copy(self):
header = {'x-amz-metadata-directive': 'COPY'}
status, headers, body = \
self._test_object_PUT_copy_self(swob.HTTPOk, header)
self.assertEquals(status.split()[0], '400')
self.assertEqual(status.split()[0], '400')
elem = fromstring(body, 'Error')
err_msg = ("This copy request is illegal because it is trying to copy "
"an object to itself without changing the object's "
"metadata, storage class, website redirect location or "
"encryption attributes.")
self.assertEquals(elem.find('Code').text, 'InvalidRequest')
self.assertEquals(elem.find('Message').text, err_msg)
self.assertEqual(elem.find('Code').text, 'InvalidRequest')
self.assertEqual(elem.find('Message').text, err_msg)
@s3acl
def test_object_PUT_copy_self_metadata_replace(self):
@ -586,16 +587,16 @@ class TestSwift3Obj(Swift3TestCase):
'Date': date_header}
status, headers, body = self._test_object_PUT_copy_self(
swob.HTTPOk, header, timestamp=timestamp)
self.assertEquals(status.split()[0], '200')
self.assertEquals(headers['Content-Type'], 'application/xml')
self.assertEqual(status.split()[0], '200')
self.assertEqual(headers['Content-Type'], 'application/xml')
self.assertTrue(headers.get('etag') is None)
elem = fromstring(body, 'CopyObjectResult')
self.assertEquals(elem.find('LastModified').text, last_modified)
self.assertEquals(elem.find('ETag').text, '"%s"' % self.etag)
self.assertEqual(elem.find('LastModified').text, last_modified)
self.assertEqual(elem.find('ETag').text, '"%s"' % self.etag)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertEquals(headers['X-Copy-From'], '/bucket/object')
self.assertEquals(headers['Content-Length'], '0')
self.assertEqual(headers['X-Copy-From'], '/bucket/object')
self.assertEqual(headers['Content-Length'], '0')
@s3acl
def test_object_PUT_copy_headers_error(self):
@ -607,26 +608,26 @@ class TestSwift3Obj(Swift3TestCase):
status, header, body = \
self._test_object_PUT_copy(swob.HTTPPreconditionFailed,
header)
self.assertEquals(self._get_error_code(body), 'PreconditionFailed')
self.assertEqual(self._get_error_code(body), 'PreconditionFailed')
header = {'X-Amz-Copy-Source-If-None-Match': etag}
status, header, body = \
self._test_object_PUT_copy(swob.HTTPNotModified,
header)
self.assertEquals(self._get_error_code(body), 'PreconditionFailed')
self.assertEqual(self._get_error_code(body), 'PreconditionFailed')
header = {'X-Amz-Copy-Source-If-Modified-Since': last_modified_since}
status, header, body = \
self._test_object_PUT_copy(swob.HTTPNotModified,
header)
self.assertEquals(self._get_error_code(body), 'PreconditionFailed')
self.assertEqual(self._get_error_code(body), 'PreconditionFailed')
header = \
{'X-Amz-Copy-Source-If-Unmodified-Since': last_modified_since}
status, header, body = \
self._test_object_PUT_copy(swob.HTTPPreconditionFailed,
header)
self.assertEquals(self._get_error_code(body), 'PreconditionFailed')
self.assertEqual(self._get_error_code(body), 'PreconditionFailed')
def test_object_PUT_copy_headers_with_match(self):
etag = '7dfa07a8e59ddbcd1dc84d4c4f82aea1'
@ -637,14 +638,14 @@ class TestSwift3Obj(Swift3TestCase):
'Date': self.get_date_header()}
status, header, body = \
self._test_object_PUT_copy(swob.HTTPOk, header)
self.assertEquals(status.split()[0], '200')
self.assertEquals(len(self.swift.calls_with_headers), 2)
self.assertEqual(status.split()[0], '200')
self.assertEqual(len(self.swift.calls_with_headers), 2)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertTrue(headers.get('If-Match') is None)
self.assertTrue(headers.get('If-Modified-Since') is None)
_, _, headers = self.swift.calls_with_headers[0]
self.assertEquals(headers['If-Match'], etag)
self.assertEquals(headers['If-Modified-Since'], last_modified_since)
self.assertEqual(headers['If-Match'], etag)
self.assertEqual(headers['If-Modified-Since'], last_modified_since)
@s3acl(s3acl_only=True)
def test_object_PUT_copy_headers_with_match_and_s3acl(self):
@ -657,8 +658,8 @@ class TestSwift3Obj(Swift3TestCase):
status, header, body = \
self._test_object_PUT_copy(swob.HTTPOk, header)
self.assertEquals(status.split()[0], '200')
self.assertEquals(len(self.swift.calls_with_headers), 3)
self.assertEqual(status.split()[0], '200')
self.assertEqual(len(self.swift.calls_with_headers), 3)
# After the check of the copy source in the case of s3acl is valid,
# Swift3 check the bucket write permissions of the destination.
_, _, headers = self.swift.calls_with_headers[-2]
@ -668,8 +669,8 @@ class TestSwift3Obj(Swift3TestCase):
self.assertTrue(headers.get('If-Match') is None)
self.assertTrue(headers.get('If-Modified-Since') is None)
_, _, headers = self.swift.calls_with_headers[0]
self.assertEquals(headers['If-Match'], etag)
self.assertEquals(headers['If-Modified-Since'], last_modified_since)
self.assertEqual(headers['If-Match'], etag)
self.assertEqual(headers['If-Modified-Since'], last_modified_since)
def test_object_PUT_copy_headers_with_not_match(self):
etag = '7dfa07a8e59ddbcd1dc84d4c4f82aea1'
@ -681,14 +682,14 @@ class TestSwift3Obj(Swift3TestCase):
status, header, body = \
self._test_object_PUT_copy(swob.HTTPOk, header)
self.assertEquals(status.split()[0], '200')
self.assertEquals(len(self.swift.calls_with_headers), 2)
self.assertEqual(status.split()[0], '200')
self.assertEqual(len(self.swift.calls_with_headers), 2)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertTrue(headers.get('If-None-Match') is None)
self.assertTrue(headers.get('If-Unmodified-Since') is None)
_, _, headers = self.swift.calls_with_headers[0]
self.assertEquals(headers['If-None-Match'], etag)
self.assertEquals(headers['If-Unmodified-Since'], last_modified_since)
self.assertEqual(headers['If-None-Match'], etag)
self.assertEqual(headers['If-Unmodified-Since'], last_modified_since)
@s3acl(s3acl_only=True)
def test_object_PUT_copy_headers_with_not_match_and_s3acl(self):
@ -700,48 +701,48 @@ class TestSwift3Obj(Swift3TestCase):
'Date': self.get_date_header()}
status, header, body = \
self._test_object_PUT_copy(swob.HTTPOk, header)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
# After the check of the copy source in the case of s3acl is valid,
# Swift3 check the bucket write permissions of the destination.
self.assertEquals(len(self.swift.calls_with_headers), 3)
self.assertEqual(len(self.swift.calls_with_headers), 3)
_, _, headers = self.swift.calls_with_headers[-1]
self.assertTrue(headers.get('If-None-Match') is None)
self.assertTrue(headers.get('If-Unmodified-Since') is None)
_, _, headers = self.swift.calls_with_headers[0]
self.assertEquals(headers['If-None-Match'], etag)
self.assertEquals(headers['If-Unmodified-Since'], last_modified_since)
self.assertEqual(headers['If-None-Match'], etag)
self.assertEqual(headers['If-Unmodified-Since'], last_modified_since)
@s3acl
def test_object_POST_error(self):
code = self._test_method_error('POST', '/bucket/object', None)
self.assertEquals(code, 'NotImplemented')
self.assertEqual(code, 'NotImplemented')
@s3acl
def test_object_DELETE_error(self):
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPServiceUnavailable)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
with patch('swift3.request.get_container_info',
return_value={'status': 204}):
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchKey')
self.assertEqual(code, 'NoSuchKey')
with patch('swift3.request.get_container_info',
return_value={'status': 404}):
code = self._test_method_error('DELETE', '/bucket/object',
swob.HTTPNotFound)
self.assertEquals(code, 'NoSuchBucket')
self.assertEqual(code, 'NoSuchBucket')
@s3acl
@patch('swift3.cfg.CONF.allow_multipart_uploads', False)
@ -751,14 +752,14 @@ class TestSwift3Obj(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
self.assertNotIn(('HEAD', '/v1/AUTH_test/bucket/object'),
self.swift.calls)
self.assertIn(('DELETE', '/v1/AUTH_test/bucket/object'),
self.swift.calls)
_, path = self.swift.calls[-1]
self.assertEquals(path.count('?'), 0)
self.assertEqual(path.count('?'), 0)
@s3acl
def test_object_DELETE_multipart(self):
@ -767,14 +768,14 @@ class TestSwift3Obj(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
self.assertIn(('HEAD', '/v1/AUTH_test/bucket/object'),
self.swift.calls)
self.assertIn(('DELETE', '/v1/AUTH_test/bucket/object'),
self.swift.calls)
_, path = self.swift.calls[-1]
self.assertEquals(path.count('?'), 0)
self.assertEqual(path.count('?'), 0)
@s3acl
def test_slo_object_DELETE(self):
@ -804,7 +805,7 @@ class TestSwift3Obj(Swift3TestCase):
for q in query_string.split('&'):
key, arg = q.split('=')
query[key] = arg
self.assertEquals(query['multipart-manifest'], 'delete')
self.assertEqual(query['multipart-manifest'], 'delete')
self.assertNotIn('Content-Type', headers)
def _test_object_for_s3acl(self, method, account):
@ -826,38 +827,38 @@ class TestSwift3Obj(Swift3TestCase):
def test_object_GET_without_permission(self):
status, headers, body = self._test_object_for_s3acl('GET',
'test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
@s3acl(s3acl_only=True)
def test_object_GET_with_read_permission(self):
status, headers, body = self._test_object_for_s3acl('GET',
'test:read')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_GET_with_fullcontrol_permission(self):
status, headers, body = \
self._test_object_for_s3acl('GET', 'test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_without_permission(self):
status, headers, body = self._test_object_for_s3acl('PUT',
'test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
@s3acl(s3acl_only=True)
def test_object_PUT_with_owner_permission(self):
status, headers, body = self._test_object_for_s3acl('PUT',
'test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_with_write_permission(self):
account = 'test:other'
self._test_set_container_permission(account, 'WRITE')
status, headers, body = self._test_object_for_s3acl('PUT', account)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_with_fullcontrol_permission(self):
@ -865,20 +866,20 @@ class TestSwift3Obj(Swift3TestCase):
self._test_set_container_permission(account, 'FULL_CONTROL')
status, headers, body = \
self._test_object_for_s3acl('PUT', account)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_DELETE_without_permission(self):
account = 'test:other'
status, headers, body = self._test_object_for_s3acl('DELETE',
account)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
@s3acl(s3acl_only=True)
def test_object_DELETE_with_owner_permission(self):
status, headers, body = self._test_object_for_s3acl('DELETE',
'test:tester')
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
@s3acl(s3acl_only=True)
def test_object_DELETE_with_write_permission(self):
@ -886,14 +887,14 @@ class TestSwift3Obj(Swift3TestCase):
self._test_set_container_permission(account, 'WRITE')
status, headers, body = self._test_object_for_s3acl('DELETE',
account)
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
@s3acl(s3acl_only=True)
def test_object_DELETE_with_fullcontrol_permission(self):
account = 'test:other'
self._test_set_container_permission(account, 'FULL_CONTROL')
status, headers, body = self._test_object_for_s3acl('DELETE', account)
self.assertEquals(status.split()[0], '204')
self.assertEqual(status.split()[0], '204')
def _test_object_copy_for_s3acl(self, account, src_permission=None,
src_path='/src_bucket/src_obj'):
@ -920,32 +921,32 @@ class TestSwift3Obj(Swift3TestCase):
def test_object_PUT_copy_with_owner_permission(self):
status, headers, body = \
self._test_object_copy_for_s3acl('test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_copy_with_fullcontrol_permission(self):
status, headers, body = \
self._test_object_copy_for_s3acl('test:full_control',
'FULL_CONTROL')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_copy_with_grantee_permission(self):
status, headers, body = \
self._test_object_copy_for_s3acl('test:write', 'READ')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
@s3acl(s3acl_only=True)
def test_object_PUT_copy_without_src_obj_permission(self):
status, headers, body = \
self._test_object_copy_for_s3acl('test:write')
self.assertEquals(status.split()[0], '403')
self.assertEqual(status.split()[0], '403')
@s3acl(s3acl_only=True)
def test_object_PUT_copy_without_dst_container_permission(self):
status, headers, body = \
self._test_object_copy_for_s3acl('test:other', 'READ')
self.assertEquals(status.split()[0], '403')
self.assertEqual(status.split()[0], '403')
@s3acl(s3acl_only=True)
def test_object_PUT_copy_empty_src_path(self):
@ -953,7 +954,7 @@ class TestSwift3Obj(Swift3TestCase):
swob.HTTPPreconditionFailed, {}, None)
status, headers, body = self._test_object_copy_for_s3acl(
'test:write', 'READ', src_path='')
self.assertEquals(status.split()[0], '400')
self.assertEqual(status.split()[0], '400')
class TestSwift3ObjNonUTC(TestSwift3Obj):

@ -126,8 +126,8 @@ class TestRequest(Swift3TestCase):
def test_get_response_without_match_ACL_MAP(self):
with self.assertRaises(Exception) as e:
self._test_get_response('POST', req_klass=S3AclRequest)
self.assertEquals(e.exception.message,
'No permission to be checked exists')
self.assertEqual(e.exception.message,
'No permission to be checked exists')
def test_get_response_without_duplication_HEAD_request(self):
obj = 'object'
@ -188,11 +188,11 @@ class TestRequest(Swift3TestCase):
s3req = create_s3request_with_param('max-keys', '1')
# a param in the range
self.assertEquals(s3req.get_validated_param('max-keys', 1000, 1000), 1)
self.assertEquals(s3req.get_validated_param('max-keys', 0, 1), 1)
self.assertEqual(s3req.get_validated_param('max-keys', 1000, 1000), 1)
self.assertEqual(s3req.get_validated_param('max-keys', 0, 1), 1)
# a param in the out of the range
self.assertEquals(s3req.get_validated_param('max-keys', 0, 0), 0)
self.assertEqual(s3req.get_validated_param('max-keys', 0, 0), 0)
# a param in the out of the integer range
s3req = create_s3request_with_param('max-keys', '1' * 30)
@ -200,7 +200,7 @@ class TestRequest(Swift3TestCase):
s3req.get_validated_param('max-keys', 1)
self.assertTrue(
'not an integer or within integer range' in result.exception.body)
self.assertEquals(
self.assertEqual(
result.exception.headers['content-type'], 'application/xml')
# a param is negative integer
@ -209,7 +209,7 @@ class TestRequest(Swift3TestCase):
s3req.get_validated_param('max-keys', 1)
self.assertTrue(
'must be an integer between 0 and' in result.exception.body)
self.assertEquals(
self.assertEqual(
result.exception.headers['content-type'], 'application/xml')
# a param is not integer
@ -218,7 +218,7 @@ class TestRequest(Swift3TestCase):
s3req.get_validated_param('max-keys', 1)
self.assertTrue(
'not an integer or within integer range' in result.exception.body)
self.assertEquals(
self.assertEqual(
result.exception.headers['content-type'], 'application/xml')
def test_authenticate_delete_Authorization_from_s3req_headers(self):
@ -234,7 +234,7 @@ class TestRequest(Swift3TestCase):
s3_req = S3AclRequest(req.environ, MagicMock())
self.assertTrue('HTTP_AUTHORIZATION' not in s3_req.environ)
self.assertTrue('Authorization' not in s3_req.headers)
self.assertEquals(s3_req.token, 'token')
self.assertEqual(s3_req.token, 'token')
def test_to_swift_req_Authorization_not_exist_in_swreq_headers(self):
container = 'bucket'
@ -253,7 +253,7 @@ class TestRequest(Swift3TestCase):
sw_req = s3_req.to_swift_req(method, container, obj)
self.assertNotIn('HTTP_AUTHORIZATION', sw_req.environ)
self.assertNotIn('Authorization', sw_req.headers)
self.assertEquals(sw_req.headers['X-Auth-Token'], 'token')
self.assertEqual(sw_req.headers['X-Auth-Token'], 'token')
def test_to_swift_req_subrequest_proxy_access_log(self):
container = 'bucket'
@ -304,18 +304,18 @@ class TestRequest(Swift3TestCase):
# first, call get_response('HEAD')
info = s3_req.get_container_info(self.app)
self.assertTrue('status' in info) # sanity
self.assertEquals(204, info['status']) # sanity
self.assertEquals('foo', info['read_acl']) # sanity
self.assertEquals('5', info['object_count']) # sanity
self.assertEquals({'foo': 'bar'}, info['meta']) # sanity
self.assertEqual(204, info['status']) # sanity
self.assertEqual('foo', info['read_acl']) # sanity
self.assertEqual('5', info['object_count']) # sanity
self.assertEqual({'foo': 'bar'}, info['meta']) # sanity
with patch('swift3.request.get_container_info',
return_value={'status': 204}) as mock_info:
# Then all calls goes to get_container_info
for x in xrange(10):
info = s3_req.get_container_info(self.swift)
self.assertTrue('status' in info) # sanity
self.assertEquals(204, info['status']) # sanity
self.assertEquals(10, mock_info.call_count)
self.assertEqual(204, info['status']) # sanity
self.assertEqual(10, mock_info.call_count)
expected_errors = [(404, NoSuchBucket), (0, InternalError)]
for status, expected_error in expected_errors:
@ -331,8 +331,8 @@ class TestRequest(Swift3TestCase):
environ={'REQUEST_METHOD': 'HEAD'},
headers={'Authorization': 'AWS test:tester:hmac'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '403')
self.assertEquals(body, '')
self.assertEqual(status.split()[0], '403')
self.assertEqual(body, '')
def test_date_header_expired(self):
self.swift.register('HEAD', '/v1/AUTH_test/nojunk', swob.HTTPNotFound,
@ -343,8 +343,8 @@ class TestRequest(Swift3TestCase):
'Date': 'Fri, 01 Apr 2014 12:00:00 GMT'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '403')
self.assertEquals(body, '')
self.assertEqual(status.split()[0], '403')
self.assertEqual(body, '')
def test_date_header_with_x_amz_date_valid(self):
self.swift.register('HEAD', '/v1/AUTH_test/nojunk', swob.HTTPNotFound,
@ -356,8 +356,8 @@ class TestRequest(Swift3TestCase):
'x-amz-date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '404')
self.assertEquals(body, '')
self.assertEqual(status.split()[0], '404')
self.assertEqual(body, '')
def test_date_header_with_x_amz_date_expired(self):
self.swift.register('HEAD', '/v1/AUTH_test/nojunk', swob.HTTPNotFound,
@ -370,8 +370,8 @@ class TestRequest(Swift3TestCase):
'Fri, 01 Apr 2014 12:00:00 GMT'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '403')
self.assertEquals(body, '')
self.assertEqual(status.split()[0], '403')
self.assertEqual(body, '')
def _test_request_timestamp_sigv4(self, date_header):
# signature v4 here

@ -177,7 +177,7 @@ class TestSwift3S3Acl(Swift3TestCase):
Owner(id='test:other',
name='test:other')).elem()))
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_object_acl_PUT_xml_error(self):
req = Request.blank('/bucket/object?acl',
@ -186,7 +186,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body="invalid xml")
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MalformedACLError')
self.assertEqual(self._get_error_code(body), 'MalformedACLError')
def test_canned_acl_private(self):
req = Request.blank('/bucket/object?acl',
@ -195,7 +195,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'private'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_canned_acl_public_read(self):
req = Request.blank('/bucket/object?acl',
@ -204,7 +204,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'public-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_canned_acl_public_read_write(self):
req = Request.blank('/bucket/object?acl',
@ -213,7 +213,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'public-read-write'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_canned_acl_authenticated_read(self):
req = Request.blank('/bucket/object?acl',
@ -222,7 +222,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'authenticated-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_canned_acl_bucket_owner_read(self):
req = Request.blank('/bucket/object?acl',
@ -231,7 +231,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'bucket-owner-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_canned_acl_bucket_owner_full_control(self):
req = Request.blank('/bucket/object?acl',
@ -240,7 +240,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'bucket-owner-full-control'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_invalid_canned_acl(self):
req = Request.blank('/bucket/object?acl',
@ -249,7 +249,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-acl': 'invalid'})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def _test_grant_header(self, permission):
req = Request.blank('/bucket/object?acl',
@ -262,27 +262,27 @@ class TestSwift3S3Acl(Swift3TestCase):
def test_grant_read(self):
status, headers, body = self._test_grant_header('read')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_write(self):
status, headers, body = self._test_grant_header('write')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_read_acp(self):
status, headers, body = self._test_grant_header('read-acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_write_acp(self):
status, headers, body = self._test_grant_header('write-acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_full_control(self):
status, headers, body = self._test_grant_header('full-control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_invalid_permission(self):
status, headers, body = self._test_grant_header('invalid')
self.assertEquals(self._get_error_code(body), 'MissingSecurityHeader')
self.assertEqual(self._get_error_code(body), 'MissingSecurityHeader')
def test_grant_with_both_header_and_xml(self):
req = Request.blank('/bucket/object?acl',
@ -296,7 +296,7 @@ class TestSwift3S3Acl(Swift3TestCase):
Owner(id='test:tester',
name='test:tester')).elem()))
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'UnexpectedContent')
self.assertEqual(self._get_error_code(body), 'UnexpectedContent')
def test_grant_with_both_header_and_canned_acl(self):
req = Request.blank('/bucket/object?acl',
@ -307,7 +307,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'id=test:tester',
'x-amz-acl': 'public-read'})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidRequest')
self.assertEqual(self._get_error_code(body), 'InvalidRequest')
def test_grant_email(self):
req = Request.blank('/bucket/object?acl',
@ -316,7 +316,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-grant-read': 'emailAddress=a@b.c'})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_grant_email_xml(self):
grantee = Element('Grantee', nsmap={'xsi': XMLNS_XSI})
@ -329,7 +329,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_grant_invalid_group_xml(self):
grantee = Element('Grantee', nsmap={'xsi': XMLNS_XSI})
@ -341,7 +341,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'MalformedACLError')
self.assertEqual(self._get_error_code(body), 'MalformedACLError')
def test_grant_authenticated_users(self):
req = Request.blank('/bucket/object?acl',
@ -352,7 +352,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'uri="http://acs.amazonaws.com/groups/'
'global/AuthenticatedUsers"'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_all_users(self):
req = Request.blank('/bucket/object?acl',
@ -363,7 +363,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'uri="http://acs.amazonaws.com/groups/'
'global/AllUsers"'})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_grant_invalid_uri(self):
req = Request.blank('/bucket/object?acl',
@ -373,7 +373,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'x-amz-grant-read':
'uri="http://localhost/"'})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_grant_invalid_uri_xml(self):
grantee = Element('Grantee', nsmap={'xsi': XMLNS_XSI})
@ -387,7 +387,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header()},
body=xml)
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def test_grant_invalid_target(self):
req = Request.blank('/bucket/object?acl',
@ -396,7 +396,7 @@ class TestSwift3S3Acl(Swift3TestCase):
'Date': self.get_date_header(),
'x-amz-grant-read': 'key=value'})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'InvalidArgument')
self.assertEqual(self._get_error_code(body), 'InvalidArgument')
def _test_bucket_acl_GET(self, account):
req = Request.blank('/bucket?acl',
@ -407,19 +407,19 @@ class TestSwift3S3Acl(Swift3TestCase):
def test_bucket_acl_GET_without_permission(self):
status, headers, body = self._test_bucket_acl_GET('test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_bucket_acl_GET_with_read_acp_permission(self):
status, headers, body = self._test_bucket_acl_GET('test:read_acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_acl_GET_with_fullcontrol_permission(self):
status, headers, body = self._test_bucket_acl_GET('test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_acl_GET_with_owner_permission(self):
status, headers, body = self._test_bucket_acl_GET('test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def _test_bucket_acl_PUT(self, account, permission='FULL_CONTROL'):
acl = ACL(self.default_owner, [Grant(User(account), permission)])
@ -433,19 +433,19 @@ class TestSwift3S3Acl(Swift3TestCase):
def test_bucket_acl_PUT_without_permission(self):
status, headers, body = self._test_bucket_acl_PUT('test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_bucket_acl_PUT_with_write_acp_permission(self):
status, headers, body = self._test_bucket_acl_PUT('test:write_acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_acl_PUT_with_fullcontrol_permission(self):
status, headers, body = self._test_bucket_acl_PUT('test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_bucket_acl_PUT_with_owner_permission(self):
status, headers, body = self._test_bucket_acl_PUT('test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def _test_object_acl_GET(self, account):
req = Request.blank('/bucket/object?acl',
@ -456,19 +456,19 @@ class TestSwift3S3Acl(Swift3TestCase):
def test_object_acl_GET_without_permission(self):
status, headers, body = self._test_object_acl_GET('test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_object_acl_GET_with_read_acp_permission(self):
status, headers, body = self._test_object_acl_GET('test:read_acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_object_acl_GET_with_fullcontrol_permission(self):
status, headers, body = self._test_object_acl_GET('test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_object_acl_GET_with_owner_permission(self):
status, headers, body = self._test_object_acl_GET('test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def _test_object_acl_PUT(self, account, permission='FULL_CONTROL'):
acl = ACL(self.default_owner, [Grant(User(account), permission)])
@ -482,19 +482,19 @@ class TestSwift3S3Acl(Swift3TestCase):
def test_object_acl_PUT_without_permission(self):
status, headers, body = self._test_object_acl_PUT('test:other')
self.assertEquals(self._get_error_code(body), 'AccessDenied')
self.assertEqual(self._get_error_code(body), 'AccessDenied')
def test_object_acl_PUT_with_write_acp_permission(self):
status, headers, body = self._test_object_acl_PUT('test:write_acp')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_object_acl_PUT_with_fullcontrol_permission(self):
status, headers, body = self._test_object_acl_PUT('test:full_control')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_object_acl_PUT_with_owner_permission(self):
status, headers, body = self._test_object_acl_PUT('test:tester')
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
def test_s3acl_decorator(self):
@s3acl
@ -529,7 +529,7 @@ class TestSwift3S3Acl(Swift3TestCase):
self.assertRaises(TypeError, fake_class.s3acl_error)
self.assertRaises(AssertionError, fake_class.s3acl_assert_fail)
self.assertRaises(TypeError, fake_class.s3acl_s3only_error)
self.assertEquals(None, fake_class.s3acl_s3only_no_error())
self.assertEqual(None, fake_class.s3acl_s3only_no_error())
if __name__ == '__main__':
unittest.main()

@ -52,11 +52,11 @@ class TestSwift3Service(Swift3TestCase):
def test_service_GET_error(self):
code = self._test_method_error('GET', '', swob.HTTPUnauthorized)
self.assertEquals(code, 'SignatureDoesNotMatch')
self.assertEqual(code, 'SignatureDoesNotMatch')
code = self._test_method_error('GET', '', swob.HTTPForbidden)
self.assertEquals(code, 'AccessDenied')
self.assertEqual(code, 'AccessDenied')
code = self._test_method_error('GET', '', swob.HTTPServerError)
self.assertEquals(code, 'InternalError')
self.assertEqual(code, 'InternalError')
@s3acl
def test_service_GET(self):
@ -65,20 +65,20 @@ class TestSwift3Service(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
all_buckets = elem.find('./Buckets')
buckets = all_buckets.iterchildren('Bucket')
listing = list(list(buckets)[0])
self.assertEquals(len(listing), 2)
self.assertEqual(len(listing), 2)
names = []
for b in all_buckets.iterchildren('Bucket'):
names.append(b.find('./Name').text)
self.assertEquals(len(names), len(self.buckets))
self.assertEqual(len(names), len(self.buckets))
for i in self.buckets:
self.assertTrue(i[0] in names)
@ -89,20 +89,20 @@ class TestSwift3Service(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
all_buckets = elem.find('./Buckets')
buckets = all_buckets.iterchildren('Bucket')
listing = list(list(buckets)[0])
self.assertEquals(len(listing), 2)
self.assertEqual(len(listing), 2)
names = []
for b in all_buckets.iterchildren('Bucket'):
names.append(b.find('./Name').text)
self.assertEquals(len(names), len(self.buckets))
self.assertEqual(len(names), len(self.buckets))
for i in self.buckets:
self.assertTrue(i[0] in names)
@ -120,19 +120,19 @@ class TestSwift3Service(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
all_buckets = elem.find('./Buckets')
buckets = all_buckets.iterchildren('Bucket')
listing = list(list(buckets)[0])
self.assertEquals(len(listing), 2)
self.assertEqual(len(listing), 2)
names = []
for b in all_buckets.iterchildren('Bucket'):
names.append(b.find('./Name').text)
self.assertEquals(len(names), len(expected))
self.assertEqual(len(names), len(expected))
for i in expected:
self.assertTrue(i[0] in names)
@ -160,13 +160,13 @@ class TestSwift3Service(Swift3TestCase):
status, headers, body = \
self._test_service_GET_for_check_bucket_owner(bucket_list)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
resp_buckets = elem.find('./Buckets')
buckets = resp_buckets.iterchildren('Bucket')
self.assertEquals(len(list(buckets)), 0)
self.assertEqual(len(list(buckets)), 0)
@s3acl(s3acl_only=True)
def test_service_GET_without_owner_bucket(self):
@ -182,13 +182,13 @@ class TestSwift3Service(Swift3TestCase):
status, headers, body = \
self._test_service_GET_for_check_bucket_owner(bucket_list)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
resp_buckets = elem.find('./Buckets')
buckets = resp_buckets.iterchildren('Bucket')
self.assertEquals(len(list(buckets)), 0)
self.assertEqual(len(list(buckets)), 0)
@s3acl(s3acl_only=True)
def test_service_GET_bucekt_list(self):
@ -212,13 +212,13 @@ class TestSwift3Service(Swift3TestCase):
status, headers, body = \
self._test_service_GET_for_check_bucket_owner(bucket_list)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
elem = fromstring(body, 'ListAllMyBucketsResult')
resp_buckets = elem.find('./Buckets')
buckets = resp_buckets.iterchildren('Bucket')
listing = list(list(buckets)[0])
self.assertEquals(len(listing), 2)
self.assertEqual(len(listing), 2)
names = []
for b in resp_buckets.iterchildren('Bucket'):
@ -228,10 +228,10 @@ class TestSwift3Service(Swift3TestCase):
# bucket_list which mean requested user is owner.
expected_buckets = [b for i, b in enumerate(bucket_list)
if i % 3 == 0]
self.assertEquals(len(names), len(expected_buckets))
self.assertEqual(len(names), len(expected_buckets))
for i in expected_buckets:
self.assertTrue(i[0] in names)
self.assertEquals(len(self.swift.calls_with_headers), 11)
self.assertEqual(len(self.swift.calls_with_headers), 11)
if __name__ == '__main__':
unittest.main()

@ -39,8 +39,8 @@ class TestSwift3Subresource(unittest.TestCase):
self.assertTrue('test:tester' in grantee)
self.assertTrue('test:tester2' not in grantee)
self.assertEquals(str(grantee), 'test:tester')
self.assertEquals(grantee.elem().find('./ID').text, 'test:tester')
self.assertEqual(str(grantee), 'test:tester')
self.assertEqual(grantee.elem().find('./ID').text, 'test:tester')
def test_acl_authenticated_users(self):
grantee = AuthenticatedUsers()
@ -48,7 +48,7 @@ class TestSwift3Subresource(unittest.TestCase):
self.assertTrue('test:tester' in grantee)
self.assertTrue('test:tester2' in grantee)
uri = 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'
self.assertEquals(grantee.elem().find('./URI').text, uri)
self.assertEqual(grantee.elem().find('./URI').text, uri)
def test_acl_all_users(self):
grantee = AllUsers()
@ -56,7 +56,7 @@ class TestSwift3Subresource(unittest.TestCase):
self.assertTrue('test:tester' in grantee)
self.assertTrue('test:tester2' in grantee)
uri = 'http://acs.amazonaws.com/groups/global/AllUsers'
self.assertEquals(grantee.elem().find('./URI').text, uri)
self.assertEqual(grantee.elem().find('./URI').text, uri)
def check_permission(self, acl, user_id, permission):
try:
@ -163,9 +163,9 @@ class TestSwift3Subresource(unittest.TestCase):
self.assertTrue(elem.find('./Owner') is not None)
self.assertTrue(elem.find('./AccessControlList') is not None)
grants = [e for e in elem.findall('./AccessControlList/Grant')]
self.assertEquals(len(grants), 1)
self.assertEquals(grants[0].find('./Grantee/ID').text, 'test:tester')
self.assertEquals(
self.assertEqual(len(grants), 1)
self.assertEqual(grants[0].find('./Grantee/ID').text, 'test:tester')
self.assertEqual(
grants[0].find('./Grantee/DisplayName').text, 'test:tester')
def test_acl_from_elem(self):
@ -302,7 +302,7 @@ class TestSwift3Subresource(unittest.TestCase):
acl = ACL.from_headers({'x-amz-acl': acl_str}, owner)
expected = grantee_map[acl_str]
self.assertEquals(len(acl.grants), len(expected)) # sanity
self.assertEqual(len(acl.grants), len(expected)) # sanity
# parse Grant object to permission and grantee
actual_grants = [(grant.permission, grant.grantee)
@ -312,22 +312,22 @@ class TestSwift3Subresource(unittest.TestCase):
for (expected_permission, expected_grantee), \
(permission, grantee) in assertions:
self.assertEquals(expected_permission, permission)
self.assertEqual(expected_permission, permission)
self.assertTrue(
isinstance(grantee, expected_grantee.__class__))
if isinstance(grantee, User):
self.assertEquals(expected_grantee.id, grantee.id)
self.assertEquals(expected_grantee.display_name,
grantee.display_name)
self.assertEqual(expected_grantee.id, grantee.id)
self.assertEqual(expected_grantee.display_name,
grantee.display_name)
def test_from_headers_x_amz_acl_invalid(self):
with self.assertRaises(InvalidArgument) as cm:
ACL.from_headers({'x-amz-acl': 'invalid'},
Owner('test:tester', 'test:tester'))
self.assertTrue('argument_name' in cm.exception.info)
self.assertEquals(cm.exception.info['argument_name'], 'x-amz-acl')
self.assertEqual(cm.exception.info['argument_name'], 'x-amz-acl')
self.assertTrue('argument_value' in cm.exception.info)
self.assertEquals(cm.exception.info['argument_value'], 'invalid')
self.assertEqual(cm.exception.info['argument_value'], 'invalid')
def test_canned_acl_grantees(self):
grantee_map = canned_acl_grantees(Owner('test:tester', 'test:tester'))
@ -336,7 +336,7 @@ class TestSwift3Subresource(unittest.TestCase):
'bucket-owner-full-control', 'log-delivery-write']
for canned_acl in canned_acls:
self.assertTrue(canned_acl in grantee_map)
self.assertEquals(len(canned_acls), len(grantee_map)) # sanity
self.assertEqual(len(canned_acls), len(grantee_map)) # sanity
def test_base_grantee(self):
grantee = Grantee()

@ -28,11 +28,11 @@ strs = [
class TestSwift3Utils(unittest.TestCase):
def test_camel_to_snake(self):
for s1, s2 in strs:
self.assertEquals(utils.camel_to_snake(s1), s2)
self.assertEqual(utils.camel_to_snake(s1), s2)
def test_snake_to_camel(self):
for s1, s2 in strs:
self.assertEquals(s1, utils.snake_to_camel(s2))
self.assertEqual(s1, utils.snake_to_camel(s2))
def test_validate_bucket_name(self):
# good cases

@ -33,7 +33,7 @@ class TestSwift3Versioning(Swift3TestCase):
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(status.split()[0], '200')
self.assertEqual(status.split()[0], '200')
fromstring(body, 'VersioningConfiguration')
def test_object_versioning_PUT(self):
@ -42,7 +42,7 @@ class TestSwift3Versioning(Swift3TestCase):
headers={'Authorization': 'AWS test:tester:hmac',
'Date': self.get_date_header()})
status, headers, body = self.call_swift3(req)
self.assertEquals(self._get_error_code(body), 'NotImplemented')
self.assertEqual(self._get_error_code(body), 'NotImplemented')
def test_bucket_versioning_GET(self):
req = Request.blank('/bucket?versioning',