summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChristian Schwede <christian.schwede@enovance.com>2014-05-20 11:41:03 +0000
committeranc <alistair.coles@hp.com>2014-05-21 14:54:18 +0100
commit258420f41049d92fc0b59b9263c8381bfe513432 (patch)
treed7be5cd0a9b8eb8997ee3ef8388fa135f6af500e /tests
parente7dc8542575a613f80aeeeb1014269039940a7f0 (diff)
downloadpython-swiftclient-2.1.0.tar.gz
Fix Python3 bugs2.1.0
This patch fixes three issues that were found running functional tests with Python 3: 1. python-requests sets 'application/x-www-form-urlencoded' as content-type if the input is not a string object and no content-type is given. 2. Encoding of the headers is now only done if required. This prevents comparisons between unencoded headers and encoded prefixes and avoids unnecessary forloop-iterations. One unittest was extended to ensure it works for unencoded and encoded headers with or without the prefix. 3. Functional tests recently switched to using byte data for testing, thus the comparison needs to be a byte object as well. Change-Id: I035f8b4b9c9ccdc79820b907770a48f86d0343b4
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/test_swiftclient.py2
-rw-r--r--tests/unit/test_swiftclient.py20
2 files changed, 20 insertions, 2 deletions
diff --git a/tests/functional/test_swiftclient.py b/tests/functional/test_swiftclient.py
index 6631d36..3721e51 100644
--- a/tests/functional/test_swiftclient.py
+++ b/tests/functional/test_swiftclient.py
@@ -259,7 +259,7 @@ class TestFunctional(testtools.TestCase):
self.containername, self.objectname,
resp_chunk_size=10)
self.assertTrue(isinstance(body, types.GeneratorType))
- self.assertEqual(self.test_data, ''.join(body))
+ self.assertEqual(self.test_data, b''.join(body))
def test_post_account(self):
self.conn.post_account({'x-account-meta-data': 'Something'})
diff --git a/tests/unit/test_swiftclient.py b/tests/unit/test_swiftclient.py
index 0819475..2e7a807 100644
--- a/tests/unit/test_swiftclient.py
+++ b/tests/unit/test_swiftclient.py
@@ -730,6 +730,16 @@ class TestPutObject(MockHttpTest):
self.assertTrue(request_header['etag'], '1234-5678')
self.assertTrue(request_header['content-type'], 'text/plain')
+ def test_no_content_type(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'')
+
class TestPostObject(MockHttpTest):
@@ -746,7 +756,10 @@ class TestPostObject(MockHttpTest):
u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91')
text = u'\u5929\u7a7a\u4e2d\u7684\u4e4c\u4e91'
headers = {'X-Header1': text,
- 'X-2': '1', 'X-3': {'a': 'b'}, 'a-b': '.x:yz mn:kl:qr'}
+ b'X-Header2': 'value',
+ 'X-2': '1', 'X-3': {'a': 'b'}, 'a-b': '.x:yz mn:kl:qr',
+ 'X-Object-Meta-Header-not-encoded': text,
+ b'X-Object-Meta-Header-encoded': 'value'}
resp = MockHttpResponse()
conn[1].getresponse = resp.fake_response
@@ -757,6 +770,11 @@ class TestPostObject(MockHttpTest):
# Test unicode header
self.assertIn(('x-header1', text.encode('utf8')),
resp.buffer)
+ self.assertIn((b'x-object-meta-header-not-encoded',
+ text.encode('utf8')), resp.buffer)
+ self.assertIn((b'x-object-meta-header-encoded', b'value'),
+ resp.buffer)
+ self.assertIn((b'x-header2', b'value'), resp.buffer)
def test_server_error(self):
body = 'c' * 60