summaryrefslogtreecommitdiff
path: root/test/unit/test_swiftclient.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/test_swiftclient.py')
-rw-r--r--test/unit/test_swiftclient.py274
1 files changed, 119 insertions, 155 deletions
diff --git a/test/unit/test_swiftclient.py b/test/unit/test_swiftclient.py
index ea5f502..ae3e76f 100644
--- a/test/unit/test_swiftclient.py
+++ b/test/unit/test_swiftclient.py
@@ -16,16 +16,15 @@
import gzip
import json
import logging
-import mock
-import six
+import io
import socket
import string
import unittest
+from unittest import mock
import warnings
import tempfile
from hashlib import md5
-from six import binary_type
-from six.moves.urllib.parse import urlparse
+from urllib.parse import urlparse
from requests.exceptions import RequestException
from .utils import (MockHttpTest, fake_get_auth_keystone, StubResponse,
@@ -102,7 +101,7 @@ class TestClientException(unittest.TestCase):
self.assertIn('(txn: some-other-id)', str(exc))
-class MockHttpResponse(object):
+class MockHttpResponse:
def __init__(self, status=0, headers=None, verify=False):
self.status = status
self.status_code = status
@@ -116,7 +115,7 @@ class MockHttpResponse(object):
self.headers.update(headers)
self.closed = False
- class Raw(object):
+ class Raw:
def __init__(self, headers):
self.headers = headers
@@ -164,34 +163,34 @@ class TestHttpHelpers(MockHttpTest):
self.assertEqual('bytes%FF', c.quote(value))
value = 'native string'
self.assertEqual('native%20string', c.quote(value))
- value = u'unicode string'
+ value = 'unicode string'
self.assertEqual('unicode%20string', c.quote(value))
- value = u'unicode:\xe9\u20ac'
+ value = 'unicode:\xe9\u20ac'
self.assertEqual('unicode%3A%C3%A9%E2%82%AC', c.quote(value))
def test_parse_header_string(self):
value = b'bytes'
- self.assertEqual(u'bytes', c.parse_header_string(value))
- value = u'unicode:\xe9\u20ac'
- self.assertEqual(u'unicode:\xe9\u20ac', c.parse_header_string(value))
+ self.assertEqual('bytes', c.parse_header_string(value))
+ value = 'unicode:\xe9\u20ac'
+ self.assertEqual('unicode:\xe9\u20ac', c.parse_header_string(value))
value = 'native%20string'
- self.assertEqual(u'native string', c.parse_header_string(value))
+ self.assertEqual('native string', c.parse_header_string(value))
value = b'encoded%20bytes%E2%82%AC'
- self.assertEqual(u'encoded bytes\u20ac', c.parse_header_string(value))
+ self.assertEqual('encoded bytes\u20ac', c.parse_header_string(value))
value = 'encoded%20unicode%E2%82%AC'
- self.assertEqual(u'encoded unicode\u20ac',
+ self.assertEqual('encoded unicode\u20ac',
c.parse_header_string(value))
value = b'bad%20bytes%ff%E2%82%AC'
- self.assertEqual(u'bad%20bytes%ff%E2%82%AC',
+ self.assertEqual('bad%20bytes%ff%E2%82%AC',
c.parse_header_string(value))
- value = u'bad%20unicode%ff\u20ac'
- self.assertEqual(u'bad%20unicode%ff\u20ac',
+ value = 'bad%20unicode%ff\u20ac'
+ self.assertEqual('bad%20unicode%ff\u20ac',
c.parse_header_string(value))
value = b'really%20bad\xffbytes'
- self.assertEqual(u'really%2520bad%FFbytes',
+ self.assertEqual('really%2520bad%FFbytes',
c.parse_header_string(value))
def test_http_connection(self):
@@ -206,20 +205,20 @@ class TestHttpHelpers(MockHttpTest):
def test_encode_meta_headers(self):
headers = {'abc': '123',
- u'x-container-meta-\u0394': 123,
- u'x-account-meta-\u0394': 12.3,
- u'x-object-meta-\u0394': True}
+ 'x-container-meta-\u0394': 123,
+ 'x-account-meta-\u0394': 12.3,
+ 'x-object-meta-\u0394': True}
r = swiftclient.encode_meta_headers(headers)
self.assertEqual(len(headers), len(r))
# ensure non meta headers are not encoded
- self.assertIs(type(r.get('abc')), binary_type)
+ self.assertIs(type(r.get('abc')), bytes)
del r['abc']
for k, v in r.items():
- self.assertIs(type(k), binary_type)
- self.assertIs(type(v), binary_type)
+ self.assertIs(type(k), bytes)
+ self.assertIs(type(v), bytes)
self.assertIn(v, (b'123', b'12.3', b'True'))
def test_set_user_agent_default(self):
@@ -587,10 +586,10 @@ class TestGetAuth(MockHttpTest):
"application_credential_id": "proejct_id",
"application_credential_secret": "secret"}
- class FakeEndpointData(object):
+ class FakeEndpointData:
catalog_url = 'http://swift.cluster/v1/KEY_project_id'
- class FakeKeystoneuth1v3Session(object):
+ class FakeKeystoneuth1v3Session:
def __init__(self, auth):
self.auth = auth
@@ -1112,9 +1111,9 @@ class TestGetObject(MockHttpTest):
conn = c.http_connection('http://www.test.com')
headers, data = c.get_object('url_is_irrelevant', 'TOKEN',
'container', 'object', http_conn=conn)
- self.assertEqual(u't\xe9st', headers.get('x-utf-8-header', ''))
- self.assertEqual(u'%ff', headers.get('x-non-utf-8-header', ''))
- self.assertEqual(u'%FF', headers.get('x-binary-header', ''))
+ self.assertEqual('t\xe9st', headers.get('x-utf-8-header', ''))
+ self.assertEqual('%ff', headers.get('x-non-utf-8-header', ''))
+ self.assertEqual('%FF', headers.get('x-binary-header', ''))
def test_chunk_size_read_method(self):
conn = c.Connection('http://auth.url/', 'some_user', 'some_key')
@@ -1325,30 +1324,28 @@ class TestHeadObject(MockHttpTest):
class TestPutObject(MockHttpTest):
- @mock.patch('swiftclient.requests.__version__', '2.2.0')
def test_ok(self):
c.http_connection = self.fake_http_connection(200)
args = ('http://www.test.com', 'TOKEN', 'container', 'obj', 'body', 4)
value = c.put_object(*args)
- self.assertIsInstance(value, six.string_types)
+ self.assertIsInstance(value, str)
self.assertEqual(value, EMPTY_ETAG)
self.assertRequests([
('PUT', '/container/obj', 'body', {
'x-auth-token': 'TOKEN',
'content-length': '4',
- 'content-type': ''
}),
])
def test_unicode_ok(self):
- conn = c.http_connection(u'http://www.test.com/')
- mock_file = six.StringIO(u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91')
- args = (u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ conn = c.http_connection('http://www.test.com/')
+ mock_file = io.StringIO('\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91')
+ args = ('\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
mock_file)
- text = u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ text = '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
headers = {'X-Header1': text,
'X-2': '1', 'X-3': "{'a': 'b'}", 'a-b': '.x:yz mn:fg:lp'}
@@ -1356,7 +1353,7 @@ class TestPutObject(MockHttpTest):
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
value = c.put_object(*args, headers=headers, http_conn=conn)
- self.assertIsInstance(value, six.string_types)
+ self.assertIsInstance(value, str)
# Test for RFC-2616 encoded symbols
self.assertIn(("a-b", b".x:yz mn:fg:lp"),
resp.buffer)
@@ -1366,7 +1363,7 @@ class TestPutObject(MockHttpTest):
def test_chunk_warning(self):
conn = c.http_connection('http://www.test.com/')
- mock_file = six.StringIO('asdf')
+ mock_file = io.StringIO('asdf')
args = ('asdf', 'asdf', 'asdf', 'asdf', mock_file)
resp = MockHttpResponse()
conn[1].getresponse = resp.fake_response
@@ -1383,7 +1380,6 @@ class TestPutObject(MockHttpTest):
self.assertEqual(len(w), 1)
self.assertTrue(issubclass(w[-1].category, UserWarning))
- @mock.patch('swiftclient.requests.__version__', '2.2.0')
def test_server_error(self):
body = 'c' * 60
headers = {'foo': 'bar'}
@@ -1398,8 +1394,7 @@ class TestPutObject(MockHttpTest):
self.assertEqual(e.http_status, 500)
self.assertRequests([
('PUT', '/asdf/asdf', 'asdf', {
- 'x-auth-token': 'asdf',
- 'content-type': ''}),
+ 'x-auth-token': 'asdf'}),
])
def test_query_string(self):
@@ -1415,7 +1410,7 @@ class TestPutObject(MockHttpTest):
def test_raw_upload(self):
# Raw upload happens when content_length is passed to put_object
- conn = c.http_connection(u'http://www.test.com/')
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1437,7 +1432,7 @@ class TestPutObject(MockHttpTest):
def test_chunk_upload(self):
# Chunked upload happens when no content_length is passed to put_object
- conn = c.http_connection(u'http://www.test.com/')
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1462,7 +1457,7 @@ class TestPutObject(MockHttpTest):
def data():
for chunk in ('foo', '', 'bar'):
yield chunk
- conn = c.http_connection(u'http://www.test.com/')
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1529,7 +1524,7 @@ class TestPutObject(MockHttpTest):
self.assertEqual(etag, contents.get_md5sum())
def test_params(self):
- conn = c.http_connection(u'http://www.test.com/')
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1540,20 +1535,8 @@ class TestPutObject(MockHttpTest):
self.assertEqual(request_header['etag'], b'1234-5678')
self.assertEqual(request_header['content-type'], b'text/plain')
- @mock.patch('swiftclient.requests.__version__', '2.2.0')
- def test_no_content_type_old_requests(self):
- conn = c.http_connection(u'http://www.test.com/')
- resp = MockHttpResponse(status=200)
- conn[1].getresponse = resp.fake_response
- conn[1]._request = resp._fake_request
-
- c.put_object(url='http://www.test.com', http_conn=conn)
- request_header = resp.requests_params['headers']
- self.assertEqual(request_header['content-type'], b'')
-
- @mock.patch('swiftclient.requests.__version__', '2.4.0')
- def test_no_content_type_new_requests(self):
- conn = c.http_connection(u'http://www.test.com/')
+ def test_no_content_type(self):
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1563,7 +1546,7 @@ class TestPutObject(MockHttpTest):
self.assertNotIn('content-type', request_header)
def test_content_type_in_headers(self):
- conn = c.http_connection(u'http://www.test.com/')
+ conn = c.http_connection('http://www.test.com/')
resp = MockHttpResponse(status=200)
conn[1].getresponse = resp.fake_response
conn[1]._request = resp._fake_request
@@ -1603,12 +1586,12 @@ class TestPostObject(MockHttpTest):
})
def test_unicode_ok(self):
- conn = c.http_connection(u'http://www.test.com/')
- args = (u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91')
- text = u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ conn = c.http_connection('http://www.test.com/')
+ args = ('\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91',
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91')
+ text = '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
headers = {'X-Header1': text,
b'X-Header2': 'value',
'X-2': '1', 'X-3': "{'a': 'b'}", 'a-b': '.x:yz mn:kl:qr',
@@ -1907,66 +1890,66 @@ class TestGetCapabilities(MockHttpTest):
class TestHTTPConnection(MockHttpTest):
def test_bad_url_scheme(self):
- url = u'www.test.com'
+ url = 'www.test.com'
with self.assertRaises(c.ClientException) as exc_context:
c.http_connection(url)
exc = exc_context.exception
- expected = u'Unsupported scheme "" in url "www.test.com"'
+ expected = 'Unsupported scheme "" in url "www.test.com"'
self.assertEqual(expected, str(exc))
- url = u'://www.test.com'
+ url = '://www.test.com'
with self.assertRaises(c.ClientException) as exc_context:
c.http_connection(url)
exc = exc_context.exception
- expected = u'Unsupported scheme "" in url "://www.test.com"'
+ expected = 'Unsupported scheme "" in url "://www.test.com"'
self.assertEqual(expected, str(exc))
- url = u'blah://www.test.com'
+ url = 'blah://www.test.com'
with self.assertRaises(c.ClientException) as exc_context:
c.http_connection(url)
exc = exc_context.exception
- expected = u'Unsupported scheme "blah" in url "blah://www.test.com"'
+ expected = 'Unsupported scheme "blah" in url "blah://www.test.com"'
self.assertEqual(expected, str(exc))
def test_ok_url_scheme(self):
for scheme in ('http', 'https', 'HTTP', 'HTTPS'):
- url = u'%s://www.test.com' % scheme
+ url = '%s://www.test.com' % scheme
parsed_url, conn = c.http_connection(url)
self.assertEqual(scheme.lower(), parsed_url.scheme)
- self.assertEqual(u'%s://www.test.com' % scheme, conn.url)
+ self.assertEqual('%s://www.test.com' % scheme, conn.url)
def test_ok_proxy(self):
- conn = c.http_connection(u'http://www.test.com/',
+ conn = c.http_connection('http://www.test.com/',
proxy='http://localhost:8080')
self.assertEqual(conn[1].requests_args['proxies']['http'],
'http://localhost:8080')
def test_bad_proxy(self):
try:
- c.http_connection(u'http://www.test.com/', proxy='localhost:8080')
+ c.http_connection('http://www.test.com/', proxy='localhost:8080')
except c.ClientException as e:
self.assertEqual(e.msg, "Proxy's missing scheme")
def test_cacert(self):
- conn = c.http_connection(u'http://www.test.com/',
+ conn = c.http_connection('http://www.test.com/',
cacert='/dev/urandom')
self.assertEqual(conn[1].requests_args['verify'], '/dev/urandom')
def test_insecure(self):
- conn = c.http_connection(u'http://www.test.com/', insecure=True)
+ conn = c.http_connection('http://www.test.com/', insecure=True)
self.assertEqual(conn[1].requests_args['verify'], False)
def test_cert(self):
- conn = c.http_connection(u'http://www.test.com/', cert='minnie')
+ conn = c.http_connection('http://www.test.com/', cert='minnie')
self.assertEqual(conn[1].requests_args['cert'], 'minnie')
def test_cert_key(self):
conn = c.http_connection(
- u'http://www.test.com/', cert='minnie', cert_key='mickey')
+ 'http://www.test.com/', cert='minnie', cert_key='mickey')
self.assertEqual(conn[1].requests_args['cert'], ('minnie', 'mickey'))
def test_response_connection_released(self):
- _parsed_url, conn = c.http_connection(u'http://www.test.com/')
+ _parsed_url, conn = c.http_connection('http://www.test.com/')
conn.resp = MockHttpResponse()
conn.resp.raw = mock.Mock()
conn.resp.raw.read.side_effect = ["Chunk", ""]
@@ -1976,36 +1959,10 @@ class TestHTTPConnection(MockHttpTest):
self.assertFalse(resp.read())
self.assertTrue(resp.closed)
- @unittest.skipIf(six.PY3, 'python2 specific test')
- def test_response_python2_headers(self):
- '''Test utf-8 headers in Python 2.
- '''
- _, conn = c.http_connection(u'http://www.test.com/')
- conn.resp = MockHttpResponse(
- status=200,
- headers={
- '\xd8\xaa-unicode': '\xd8\xaa-value',
- 'empty-header': ''
- }
- )
-
- resp = conn.getresponse()
- self.assertEqual(
- '\xd8\xaa-value', resp.getheader('\xd8\xaa-unicode'))
- self.assertEqual(
- '\xd8\xaa-value', resp.getheader('\xd8\xaa-UNICODE'))
- self.assertEqual('', resp.getheader('empty-header'))
- self.assertEqual(
- dict([('\xd8\xaa-unicode', '\xd8\xaa-value'),
- ('empty-header', ''),
- ('etag', '"%s"' % EMPTY_ETAG)]),
- dict(resp.getheaders()))
-
- @unittest.skipIf(six.PY2, 'python3 specific test')
- def test_response_python3_headers(self):
- '''Test latin1-encoded headers in Python 3.
+ def test_response_headers(self):
+ '''Test latin1-encoded headers.
'''
- _, conn = c.http_connection(u'http://www.test.com/')
+ _, conn = c.http_connection('http://www.test.com/')
conn.resp = MockHttpResponse(
status=200,
headers={
@@ -2173,30 +2130,37 @@ class TestConnection(MockHttpTest):
pass
c.sleep = quick_sleep
- # test retries
- conn = c.Connection('http://www.test.com/auth/v1.0', 'asdf', 'asdf',
- retry_on_ratelimit=True)
- code_iter = [200] + [498] * (conn.retries + 1)
- auth_resp_headers = {
- 'x-auth-token': 'asdf',
- 'x-storage-url': 'http://storage/v1/test',
- }
- c.http_connection = self.fake_http_connection(
- *code_iter, headers=auth_resp_headers)
- with self.assertRaises(c.ClientException) as exc_context:
- conn.head_account()
- self.assertIn('Account HEAD failed', str(exc_context.exception))
- self.assertEqual(conn.attempts, conn.retries + 1)
+ def test_status_code(code):
+ # test retries
+ conn = c.Connection('http://www.test.com/auth/v1.0',
+ 'asdf', 'asdf', retry_on_ratelimit=True)
+ code_iter = [200] + [code] * (conn.retries + 1)
+ auth_resp_headers = {
+ 'x-auth-token': 'asdf',
+ 'x-storage-url': 'http://storage/v1/test',
+ }
+ c.http_connection = self.fake_http_connection(
+ *code_iter, headers=auth_resp_headers)
+ with self.assertRaises(c.ClientException) as exc_context:
+ conn.head_account()
+ self.assertIn('Account HEAD failed', str(exc_context.exception))
+ self.assertEqual(code, exc_context.exception.http_status)
+ self.assertEqual(conn.attempts, conn.retries + 1)
- # test default no-retry
- c.http_connection = self.fake_http_connection(
- 200, 498,
- headers=auth_resp_headers)
- conn = c.Connection('http://www.test.com/auth/v1.0', 'asdf', 'asdf')
- with self.assertRaises(c.ClientException) as exc_context:
- conn.head_account()
- self.assertIn('Account HEAD failed', str(exc_context.exception))
- self.assertEqual(conn.attempts, 1)
+ # test default no-retry
+ c.http_connection = self.fake_http_connection(
+ 200, code,
+ headers=auth_resp_headers)
+ conn = c.Connection('http://www.test.com/auth/v1.0',
+ 'asdf', 'asdf', retry_on_ratelimit=False)
+ with self.assertRaises(c.ClientException) as exc_context:
+ conn.head_account()
+ self.assertIn('Account HEAD failed', str(exc_context.exception))
+ self.assertEqual(code, exc_context.exception.http_status)
+ self.assertEqual(conn.attempts, 1)
+
+ test_status_code(498)
+ test_status_code(429)
def test_retry_with_socket_error(self):
def quick_sleep(*args):
@@ -2586,10 +2550,10 @@ class TestConnection(MockHttpTest):
def test_reset_stream(self):
- class LocalContents(object):
+ class LocalContents:
def __init__(self, tell_value=0):
- self.data = six.BytesIO(string.ascii_letters.encode() * 10)
+ self.data = io.BytesIO(string.ascii_letters.encode() * 10)
self.data.seek(tell_value)
self.reads = []
self.seeks = []
@@ -2608,7 +2572,7 @@ class TestConnection(MockHttpTest):
self.reads.append((size, read_data))
return read_data
- class LocalConnection(object):
+ class LocalConnection:
def __init__(self, parsed_url=None):
self.reason = ""
@@ -2887,7 +2851,7 @@ class TestLogging(MockHttpTest):
c.http_connection = self.fake_http_connection(200)
args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
value = c.put_object(*args)
- self.assertIsInstance(value, six.string_types)
+ self.assertIsInstance(value, str)
def test_head_error(self):
c.http_connection = self.fake_http_connection(500)
@@ -2901,9 +2865,9 @@ class TestLogging(MockHttpTest):
self.assertEqual(exc_context.exception.http_status, 404)
def test_content_encoding_gzip_body_is_logged_decoded(self):
- buf = six.BytesIO()
+ buf = io.BytesIO()
gz = gzip.GzipFile(fileobj=buf, mode='w')
- data = {"test": u"\u2603"}
+ data = {"test": "\u2603"}
decoded_body = json.dumps(data).encode('utf-8')
gz.write(decoded_body)
gz.close()
@@ -2920,7 +2884,7 @@ class TestLogging(MockHttpTest):
self.assertEqual(exc_context.exception.http_status, 500)
# it will log the decoded body
self.assertEqual([
- mock.call('REQ: %s', u'curl -i http://www.test.com/asdf/asdf '
+ mock.call('REQ: %s', 'curl -i http://www.test.com/asdf/asdf '
'-X GET -H "X-Auth-Token: ..."'),
mock.call('RESP STATUS: %s %s', 500, 'Fake'),
mock.call('RESP HEADERS: %s', {'content-encoding': 'gzip'}),
@@ -2931,9 +2895,9 @@ class TestLogging(MockHttpTest):
with mock.patch('swiftclient.client.logger.debug') as mock_log:
token_value = 'tkee96b40a8ca44fc5ad72ec5a7c90d9b'
token_encoded = token_value.encode('utf8')
- unicode_token_value = (u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c')
+ unicode_token_value = ('\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c')
unicode_token_encoded = unicode_token_value.encode('utf8')
set_cookie_value = 'X-Auth-Token=%s' % token_value
set_cookie_encoded = set_cookie_value.encode('utf8')
@@ -2957,8 +2921,8 @@ class TestLogging(MockHttpTest):
out = []
for _, args, kwargs in mock_log.mock_calls:
for arg in args:
- out.append(u'%s' % arg)
- output = u''.join(out)
+ out.append('%s' % arg)
+ output = ''.join(out)
self.assertIn('X-Auth-Token', output)
self.assertIn(token_value[:16] + '...', output)
self.assertIn('X-Storage-Token', output)
@@ -2973,9 +2937,9 @@ class TestLogging(MockHttpTest):
with mock.patch('swiftclient.client.logger.debug') as mock_log:
token_value = 'tkee96b40a8ca44fc5ad72ec5a7c90d9b'
token_encoded = token_value.encode('utf8')
- unicode_token_value = (u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
- u'\u5929\u7a7a\u4e2d\u7684\u4e4c')
+ unicode_token_value = ('\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
+ '\u5929\u7a7a\u4e2d\u7684\u4e4c')
c.logger_settings['redact_sensitive_headers'] = False
unicode_token_encoded = unicode_token_value.encode('utf8')
c.http_log(
@@ -2997,8 +2961,8 @@ class TestLogging(MockHttpTest):
out = []
for _, args, kwargs in mock_log.mock_calls:
for arg in args:
- out.append(u'%s' % arg)
- output = u''.join(out)
+ out.append('%s' % arg)
+ output = ''.join(out)
self.assertIn('X-Auth-Token', output)
self.assertIn(token_value, output)
self.assertIn('X-Storage-Token', output)
@@ -3006,12 +2970,12 @@ class TestLogging(MockHttpTest):
@mock.patch('swiftclient.client.logger.debug')
def test_unicode_path(self, mock_log):
- path = u'http://swift/v1/AUTH_account-\u062a'.encode('utf-8')
+ path = 'http://swift/v1/AUTH_account-\u062a'.encode('utf-8')
c.http_log(['GET', path], {},
MockHttpResponse(status=200, headers=[]), '')
request_log_line = mock_log.mock_calls[0]
self.assertEqual('REQ: %s', request_log_line[1][0])
- self.assertEqual(u'curl -i -X GET %s' % path.decode('utf-8'),
+ self.assertEqual('curl -i -X GET %s' % path.decode('utf-8'),
request_log_line[1][1])