Merge "Port object_storage tests to Py3."
This commit is contained in:
commit
772d89b259
|
@ -121,7 +121,7 @@ class BaseObjectTest(tempest.test.BaseTestCase):
|
|||
if object_name is None:
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
if data is None:
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
cls.object_client.create_object(container_name,
|
||||
object_name,
|
||||
data,
|
||||
|
|
|
@ -133,7 +133,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
resp, object_list = self.container_client.list_container_contents(
|
||||
container_name)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.idempotent_id('4646ac2d-9bfb-4c7d-a3c5-0f527402b3df')
|
||||
def test_list_container_contents_with_no_object(self):
|
||||
|
@ -143,7 +143,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
resp, object_list = self.container_client.list_container_contents(
|
||||
container_name)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual('', object_list.strip('\n'))
|
||||
self.assertEmpty(object_list)
|
||||
|
||||
@test.idempotent_id('fe323a32-57b9-4704-a996-2e68f83b09bc')
|
||||
def test_list_container_contents_with_delimiter(self):
|
||||
|
@ -157,7 +157,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name.split('/')[0], object_list.strip('/\n'))
|
||||
self.assertEqual([object_name.split('/')[0] + '/'], object_list)
|
||||
|
||||
@test.idempotent_id('55b4fa5c-e12e-4ca9-8fcf-a79afe118522')
|
||||
def test_list_container_contents_with_end_marker(self):
|
||||
|
@ -170,7 +170,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.idempotent_id('196f5034-6ab0-4032-9da9-a937bbb9fba9')
|
||||
def test_list_container_contents_with_format_json(self):
|
||||
|
@ -226,7 +226,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.idempotent_id('c31ddc63-2a58-4f6b-b25c-94d2937e6867')
|
||||
def test_list_container_contents_with_marker(self):
|
||||
|
@ -239,7 +239,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.idempotent_id('58ca6cc9-6af0-408d-aaec-2a6a7b2f0df9')
|
||||
def test_list_container_contents_with_path(self):
|
||||
|
@ -253,7 +253,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.idempotent_id('77e742c7-caf2-4ec9-8aa4-f7d509a3344c')
|
||||
def test_list_container_contents_with_prefix(self):
|
||||
|
@ -267,7 +267,7 @@ class ContainerTest(base.BaseObjectTest):
|
|||
container_name,
|
||||
params=params)
|
||||
self.assertHeaders(resp, 'Container', 'GET')
|
||||
self.assertEqual(object_name, object_list.strip('\n'))
|
||||
self.assertEqual([object_name], object_list)
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('96e68f0e-19ec-4aa2-86f3-adc6a45e14dd')
|
||||
|
|
|
@ -96,7 +96,7 @@ class StaticWebTest(base.BaseObjectTest):
|
|||
# Check only the format of common headers with custom matcher
|
||||
self.assertThat(resp, custom_matchers.AreAllWellFormatted())
|
||||
|
||||
self.assertIn(self.object_name, body)
|
||||
self.assertIn(self.object_name, body.decode())
|
||||
|
||||
# clean up before exiting
|
||||
self.container_client.update_container_metadata(self.container_name,
|
||||
|
@ -126,9 +126,9 @@ class StaticWebTest(base.BaseObjectTest):
|
|||
resp, body = self.account_client.request("GET",
|
||||
self.container_name,
|
||||
headers={})
|
||||
self.assertIn(self.object_name, body)
|
||||
self.assertIn(self.object_name, body.decode())
|
||||
css = '<link rel="stylesheet" type="text/css" href="listings.css" />'
|
||||
self.assertIn(css, body)
|
||||
self.assertIn(css, body.decode())
|
||||
|
||||
@test.idempotent_id('f18b4bef-212e-45e7-b3ca-59af3a465f82')
|
||||
@test.requires_ext(extension='staticweb', service='object')
|
||||
|
|
|
@ -96,7 +96,7 @@ class ContainerSyncTest(base.BaseObjectTest):
|
|||
cont_client[0].put(str(cont[0]), body=None, headers=headers)
|
||||
# create object in container
|
||||
object_name = data_utils.rand_name(name='TestSyncObject')
|
||||
data = object_name[::-1] # data_utils.arbitrary_string()
|
||||
data = object_name[::-1].encode() # Raw data, we need bytes
|
||||
resp, _ = obj_client[0].create_object(cont[0], object_name, data)
|
||||
self.objects.append(object_name)
|
||||
|
||||
|
@ -127,7 +127,7 @@ class ContainerSyncTest(base.BaseObjectTest):
|
|||
for obj_client, cont in obj_clients:
|
||||
for obj_name in object_lists[0]:
|
||||
resp, object_content = obj_client.get_object(cont, obj_name)
|
||||
self.assertEqual(object_content, obj_name[::-1])
|
||||
self.assertEqual(object_content, obj_name[::-1].encode())
|
||||
|
||||
@test.attr(type='slow')
|
||||
@decorators.skip_because(bug='1317133')
|
||||
|
|
|
@ -40,6 +40,7 @@ class CrossdomainTest(base.BaseObjectTest):
|
|||
@test.requires_ext(extension='crossdomain', service='object')
|
||||
def test_get_crossdomain_policy(self):
|
||||
resp, body = self.account_client.get("crossdomain.xml", {})
|
||||
body = body.decode()
|
||||
|
||||
self.assertTrue(body.startswith(self.xml_start) and
|
||||
body.endswith(self.xml_end))
|
||||
|
|
|
@ -72,7 +72,9 @@ class ObjectFormPostTest(base.BaseObjectTest):
|
|||
max_file_count,
|
||||
expires)
|
||||
|
||||
signature = hmac.new(self.key, hmac_body, hashlib.sha1).hexdigest()
|
||||
signature = hmac.new(
|
||||
self.key.encode(), hmac_body.encode(), hashlib.sha1
|
||||
).hexdigest()
|
||||
|
||||
fields = {'redirect': redirect,
|
||||
'max_file_size': str(max_file_size),
|
||||
|
@ -119,4 +121,4 @@ class ObjectFormPostTest(base.BaseObjectTest):
|
|||
resp, body = self.object_client.get("%s/%s%s" % (
|
||||
self.container_name, self.object_name, "testfile"))
|
||||
self.assertHeaders(resp, "Object", "GET")
|
||||
self.assertEqual(body, "hello world")
|
||||
self.assertEqual(body.decode(), "hello world")
|
||||
|
|
|
@ -73,7 +73,9 @@ class ObjectFormPostNegativeTest(base.BaseObjectTest):
|
|||
max_file_count,
|
||||
expires)
|
||||
|
||||
signature = hmac.new(self.key, hmac_body, hashlib.sha1).hexdigest()
|
||||
signature = hmac.new(
|
||||
self.key.encode(), hmac_body.encode(), hashlib.sha1
|
||||
).hexdigest()
|
||||
|
||||
fields = {'redirect': redirect,
|
||||
'max_file_size': str(max_file_size),
|
||||
|
|
|
@ -79,12 +79,12 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object(self):
|
||||
# create object
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
object_name, data)
|
||||
# create another object
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
object_name, data)
|
||||
self.assertHeaders(resp, 'Object', 'PUT')
|
||||
|
@ -98,7 +98,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_content_disposition(self):
|
||||
# create object with content_disposition
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata = {}
|
||||
metadata['content-disposition'] = 'inline'
|
||||
resp, _ = self.object_client.create_object(
|
||||
|
@ -122,7 +122,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
object_name = data_utils.rand_name(name='TestObject')
|
||||
|
||||
# put compressed string
|
||||
data_before = 'x' * 2000
|
||||
data_before = b'x' * 2000
|
||||
data = zlib.compress(data_before)
|
||||
metadata = {}
|
||||
metadata['content-encoding'] = 'deflate'
|
||||
|
@ -147,7 +147,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_etag(self):
|
||||
# create object with etag
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
md5 = hashlib.md5(data).hexdigest()
|
||||
metadata = {'Etag': md5}
|
||||
resp, _ = self.object_client.create_object(
|
||||
|
@ -167,7 +167,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
# create object with expect_continue
|
||||
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
|
||||
status, _ = self.object_client.create_object_continue(
|
||||
self.container_name, object_name, data)
|
||||
|
@ -183,7 +183,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_transfer_encoding(self):
|
||||
# create object with transfer_encoding
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string(1024)
|
||||
data = data_utils.random_bytes(1024)
|
||||
status, _, resp_headers = self.object_client.put_object_with_chunk(
|
||||
container=self.container_name,
|
||||
name=object_name,
|
||||
|
@ -200,7 +200,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_x_fresh_metadata(self):
|
||||
# create object with x_fresh_metadata
|
||||
object_name_base = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata_1 = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name_base,
|
||||
|
@ -226,7 +226,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_x_object_meta(self):
|
||||
# create object with object_meta
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
resp, _ = self.object_client.create_object(
|
||||
self.container_name,
|
||||
|
@ -245,7 +245,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_x_object_metakey(self):
|
||||
# create object with the blank value of metadata
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata = {'X-Object-Meta-test-meta': ''}
|
||||
resp, _ = self.object_client.create_object(
|
||||
self.container_name,
|
||||
|
@ -264,7 +264,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_x_remove_object_meta(self):
|
||||
# create object with x_remove_object_meta
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata_add = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -287,7 +287,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_create_object_with_x_remove_object_metakey(self):
|
||||
# create object with the blank value of remove metadata
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata_add = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -310,7 +310,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_delete_object(self):
|
||||
# create object
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
object_name, data)
|
||||
# delete object
|
||||
|
@ -342,7 +342,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_update_object_metadata_with_remove_metadata(self):
|
||||
# update object metadata with remove metadata
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
create_metadata = {'X-Object-Meta-test-meta1': 'Meta1'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -366,7 +366,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_update_object_metadata_with_create_and_remove_metadata(self):
|
||||
# creation and deletion of metadata with one request
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
create_metadata = {'X-Object-Meta-test-meta1': 'Meta1'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -464,7 +464,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_list_object_metadata(self):
|
||||
# get object metadata
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -547,7 +547,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_get_object_with_metadata(self):
|
||||
# get object with metadata
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
metadata = {'X-Object-Meta-test-meta': 'Meta'}
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -566,7 +566,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_get_object_with_range(self):
|
||||
# get object with range
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string(100)
|
||||
data = data_utils.random_bytes(100)
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
data,
|
||||
|
@ -621,13 +621,13 @@ class ObjectTest(base.BaseObjectTest):
|
|||
self.assertEqual(resp['x-object-manifest'],
|
||||
'%s/%s' % (self.container_name, object_name))
|
||||
|
||||
self.assertEqual(''.join(data_segments), body)
|
||||
self.assertEqual(''.join(data_segments), body.decode())
|
||||
|
||||
@test.idempotent_id('c05b4013-e4de-47af-be84-e598062b16fc')
|
||||
def test_get_object_with_if_match(self):
|
||||
# get object with if_match
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string(10)
|
||||
data = data_utils.random_bytes(10)
|
||||
create_md5 = hashlib.md5(data).hexdigest()
|
||||
create_metadata = {'Etag': create_md5}
|
||||
self.object_client.create_object(self.container_name,
|
||||
|
@ -647,7 +647,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_get_object_with_if_modified_since(self):
|
||||
# get object with if_modified_since
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string()
|
||||
data = data_utils.random_bytes()
|
||||
time_now = time.time()
|
||||
self.object_client.create_object(self.container_name,
|
||||
object_name,
|
||||
|
@ -667,7 +667,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_get_object_with_if_none_match(self):
|
||||
# get object with if_none_match
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
data = data_utils.arbitrary_string(10)
|
||||
data = data_utils.random_bytes()
|
||||
create_md5 = hashlib.md5(data).hexdigest()
|
||||
create_metadata = {'Etag': create_md5}
|
||||
self.object_client.create_object(self.container_name,
|
||||
|
@ -675,7 +675,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
data,
|
||||
metadata=create_metadata)
|
||||
|
||||
list_data = data_utils.arbitrary_string(15)
|
||||
list_data = data_utils.random_bytes()
|
||||
list_md5 = hashlib.md5(list_data).hexdigest()
|
||||
list_metadata = {'If-None-Match': list_md5}
|
||||
resp, body = self.object_client.get_object(
|
||||
|
@ -717,15 +717,13 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_copy_object_in_same_container(self):
|
||||
# create source object
|
||||
src_object_name = data_utils.rand_name(name='SrcObject')
|
||||
src_data = data_utils.arbitrary_string(size=len(src_object_name) * 2,
|
||||
base_text=src_object_name)
|
||||
src_data = data_utils.random_bytes(size=len(src_object_name) * 2)
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
src_object_name,
|
||||
src_data)
|
||||
# create destination object
|
||||
dst_object_name = data_utils.rand_name(name='DstObject')
|
||||
dst_data = data_utils.arbitrary_string(size=len(dst_object_name) * 3,
|
||||
base_text=dst_object_name)
|
||||
dst_data = data_utils.random_bytes(size=len(dst_object_name) * 3)
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
dst_object_name,
|
||||
dst_data)
|
||||
|
@ -764,14 +762,12 @@ class ObjectTest(base.BaseObjectTest):
|
|||
def test_copy_object_2d_way(self):
|
||||
# create source object
|
||||
src_object_name = data_utils.rand_name(name='SrcObject')
|
||||
src_data = data_utils.arbitrary_string(size=len(src_object_name) * 2,
|
||||
base_text=src_object_name)
|
||||
src_data = data_utils.random_bytes(size=len(src_object_name) * 2)
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
src_object_name, src_data)
|
||||
# create destination object
|
||||
dst_object_name = data_utils.rand_name(name='DstObject')
|
||||
dst_data = data_utils.arbitrary_string(size=len(dst_object_name) * 3,
|
||||
base_text=dst_object_name)
|
||||
dst_data = data_utils.random_bytes(size=len(dst_object_name) * 3)
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
dst_object_name, dst_data)
|
||||
# copy source object to destination
|
||||
|
@ -799,8 +795,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
self.containers.append(dst_container_name)
|
||||
# create object in source container
|
||||
object_name = data_utils.rand_name(name='Object')
|
||||
data = data_utils.arbitrary_string(size=len(object_name) * 2,
|
||||
base_text=object_name)
|
||||
data = data_utils.random_bytes(size=len(object_name) * 2)
|
||||
resp, _ = self.object_client.create_object(src_container_name,
|
||||
object_name, data)
|
||||
# set object metadata
|
||||
|
@ -933,7 +928,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
# downloading the object
|
||||
resp, body = self.object_client.get_object(
|
||||
self.container_name, object_name)
|
||||
self.assertEqual(''.join(data_segments), body)
|
||||
self.assertEqual(''.join(data_segments), body.decode())
|
||||
|
||||
@test.idempotent_id('50d01f12-526f-4360-9ac2-75dd508d7b68')
|
||||
def test_get_object_if_different(self):
|
||||
|
@ -958,7 +953,7 @@ class ObjectTest(base.BaseObjectTest):
|
|||
|
||||
# local copy is different, download
|
||||
local_data = "something different"
|
||||
md5 = hashlib.md5(local_data).hexdigest()
|
||||
md5 = hashlib.md5(local_data.encode()).hexdigest()
|
||||
headers = {'If-None-Match': md5}
|
||||
resp, body = self.object_client.get(url, headers=headers)
|
||||
self.assertHeaders(resp, 'Object', 'GET')
|
||||
|
@ -1002,8 +997,7 @@ class PublicObjectTest(base.BaseObjectTest):
|
|||
|
||||
# create object
|
||||
object_name = data_utils.rand_name(name='Object')
|
||||
data = data_utils.arbitrary_string(size=len(object_name),
|
||||
base_text=object_name)
|
||||
data = data_utils.random_bytes(size=len(object_name))
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
object_name, data)
|
||||
self.assertHeaders(resp, 'Object', 'PUT')
|
||||
|
@ -1039,8 +1033,7 @@ class PublicObjectTest(base.BaseObjectTest):
|
|||
|
||||
# create object
|
||||
object_name = data_utils.rand_name(name='Object')
|
||||
data = data_utils.arbitrary_string(size=len(object_name) * 1,
|
||||
base_text=object_name)
|
||||
data = data_utils.random_bytes(size=len(object_name))
|
||||
resp, _ = self.object_client.create_object(self.container_name,
|
||||
object_name, data)
|
||||
self.assertHeaders(resp, 'Object', 'PUT')
|
||||
|
|
|
@ -56,7 +56,7 @@ class ObjectSloTest(base.BaseObjectTest):
|
|||
object_name_base_1 = object_name + '_01'
|
||||
object_name_base_2 = object_name + '_02'
|
||||
data_size = MIN_SEGMENT_SIZE
|
||||
self.content = data_utils.arbitrary_string(data_size)
|
||||
self.content = data_utils.random_bytes(data_size)
|
||||
self._create_object(self.container_name,
|
||||
object_name_base_1,
|
||||
self.content)
|
||||
|
|
|
@ -75,7 +75,9 @@ class ObjectTempUrlTest(base.BaseObjectTest):
|
|||
container, object_name)
|
||||
|
||||
hmac_body = '%s\n%s\n%s' % (method, expires, path)
|
||||
sig = hmac.new(key, hmac_body, hashlib.sha1).hexdigest()
|
||||
sig = hmac.new(
|
||||
key.encode(), hmac_body.encode(), hashlib.sha1
|
||||
).hexdigest()
|
||||
|
||||
url = "%s/%s?temp_url_sig=%s&temp_url_expires=%s" % (container,
|
||||
object_name,
|
||||
|
@ -129,9 +131,7 @@ class ObjectTempUrlTest(base.BaseObjectTest):
|
|||
@test.idempotent_id('9b08dade-3571-4152-8a4f-a4f2a873a735')
|
||||
@test.requires_ext(extension='tempurl', service='object')
|
||||
def test_put_object_using_temp_url(self):
|
||||
new_data = data_utils.arbitrary_string(
|
||||
size=len(self.object_name),
|
||||
base_text=data_utils.rand_name(name="random"))
|
||||
new_data = data_utils.random_bytes(size=len(self.object_name))
|
||||
|
||||
expires = self._get_expiry_date()
|
||||
url = self._get_temp_url(self.container_name,
|
||||
|
|
|
@ -80,7 +80,9 @@ class ObjectTempUrlNegativeTest(base.BaseObjectTest):
|
|||
container, object_name)
|
||||
|
||||
hmac_body = '%s\n%s\n%s' % (method, expires, path)
|
||||
sig = hmac.new(key, hmac_body, hashlib.sha1).hexdigest()
|
||||
sig = hmac.new(
|
||||
key.encode(), hmac_body.encode(), hashlib.sha1
|
||||
).hexdigest()
|
||||
|
||||
url = "%s/%s?temp_url_sig=%s&temp_url_expires=%s" % (container,
|
||||
object_name,
|
||||
|
|
|
@ -69,22 +69,24 @@ class ContainerTest(base.BaseObjectTest):
|
|||
vers_container_name)
|
||||
object_name = data_utils.rand_name(name='TestObject')
|
||||
# create object
|
||||
data_1 = data_utils.random_bytes()
|
||||
resp, _ = self.object_client.create_object(base_container_name,
|
||||
object_name, '1')
|
||||
object_name, data_1)
|
||||
# create 2nd version of object
|
||||
data_2 = data_utils.random_bytes()
|
||||
resp, _ = self.object_client.create_object(base_container_name,
|
||||
object_name, '2')
|
||||
object_name, data_2)
|
||||
resp, body = self.object_client.get_object(base_container_name,
|
||||
object_name)
|
||||
self.assertEqual(body, '2')
|
||||
self.assertEqual(body, data_2)
|
||||
# delete object version 2
|
||||
resp, _ = self.object_client.delete_object(base_container_name,
|
||||
object_name)
|
||||
self.assertContainer(base_container_name, '1', '1',
|
||||
self.assertContainer(base_container_name, '1', '1024',
|
||||
vers_container_name)
|
||||
resp, body = self.object_client.get_object(base_container_name,
|
||||
object_name)
|
||||
self.assertEqual(body, '1')
|
||||
self.assertEqual(body, data_1)
|
||||
# delete object version 1
|
||||
resp, _ = self.object_client.delete_object(base_container_name,
|
||||
object_name)
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import six
|
||||
import urllib3
|
||||
|
||||
|
||||
|
@ -39,7 +40,9 @@ class ClosingHttp(urllib3.poolmanager.PoolManager):
|
|||
class Response(dict):
|
||||
def __init__(self, info):
|
||||
for key, value in info.getheaders().items():
|
||||
self[key.lower()] = value
|
||||
# We assume HTTP header name to be string, not random
|
||||
# bytes, thus ensure we have string keys.
|
||||
self[six.u(key).lower()] = value
|
||||
self.status = info.status
|
||||
self['status'] = str(self.status)
|
||||
self.reason = info.reason
|
||||
|
|
|
@ -1326,7 +1326,7 @@ class ObjectStorageScenarioTest(ScenarioTest):
|
|||
|
||||
def upload_object_to_container(self, container_name, obj_name=None):
|
||||
obj_name = obj_name or data_utils.rand_name('swift-scenario-object')
|
||||
obj_data = data_utils.arbitrary_string()
|
||||
obj_data = data_utils.random_bytes()
|
||||
self.object_client.create_object(container_name, obj_name, obj_data)
|
||||
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
|
||||
self.object_client.delete_object,
|
||||
|
|
|
@ -140,5 +140,11 @@ class ContainerClient(rest_client.RestClient):
|
|||
body = json.loads(body)
|
||||
elif params and params.get('format') == 'xml':
|
||||
body = etree.fromstring(body)
|
||||
# Else the content-type is plain/text
|
||||
else:
|
||||
body = [
|
||||
obj_name for obj_name in body.decode().split('\n') if obj_name
|
||||
]
|
||||
|
||||
self.expected_success([200, 204], resp.status)
|
||||
return resp, body
|
||||
|
|
Loading…
Reference in New Issue