diff options
author | Christian Schwede <christian.schwede@enovance.com> | 2014-05-20 11:41:03 +0000 |
---|---|---|
committer | anc <alistair.coles@hp.com> | 2014-05-21 14:54:18 +0100 |
commit | 258420f41049d92fc0b59b9263c8381bfe513432 (patch) | |
tree | d7be5cd0a9b8eb8997ee3ef8388fa135f6af500e /tests/unit/test_swiftclient.py | |
parent | e7dc8542575a613f80aeeeb1014269039940a7f0 (diff) | |
download | python-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/unit/test_swiftclient.py')
-rw-r--r-- | tests/unit/test_swiftclient.py | 20 |
1 files changed, 19 insertions, 1 deletions
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 |