summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-06-13 22:07:47 +0000
committerGerrit Code Review <review@openstack.org>2017-06-13 22:07:47 +0000
commit74eb91b176464dcac225e7b8152e3a933fdf30ee (patch)
tree64b66da86c5e97d1b1dcd680b6dd6af9c1a53f33
parentf18d070b0be3511ecb86c3299469024132561bc8 (diff)
parent32f6b3c642fd5830a63e06ea4fac86956160312f (diff)
downloadpython-swiftclient-74eb91b176464dcac225e7b8152e3a933fdf30ee.tar.gz
Merge "Do not set Content-Type to '' with new requests."
-rw-r--r--swiftclient/client.py6
-rw-r--r--tests/unit/test_swiftclient.py19
2 files changed, 21 insertions, 4 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py
index 80b6eda..80bc4a3 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -1286,8 +1286,10 @@ def put_object(url, token=None, container=None, name=None, contents=None,
if content_type is not None:
headers['Content-Type'] = content_type
elif 'Content-Type' not in headers:
- # python-requests sets application/x-www-form-urlencoded otherwise
- headers['Content-Type'] = ''
+ if StrictVersion(requests.__version__) < StrictVersion('2.4.0'):
+ # python-requests sets application/x-www-form-urlencoded otherwise
+ # if using python3.
+ headers['Content-Type'] = ''
if not contents:
headers['Content-Length'] = '0'
diff --git a/tests/unit/test_swiftclient.py b/tests/unit/test_swiftclient.py
index 2cd5cf1..5384ac7 100644
--- a/tests/unit/test_swiftclient.py
+++ b/tests/unit/test_swiftclient.py
@@ -1163,6 +1163,7 @@ 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)
@@ -1220,6 +1221,7 @@ 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'}
@@ -1234,7 +1236,8 @@ 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',
+ 'content-type': ''}),
])
def test_query_string(self):
@@ -1375,7 +1378,8 @@ class TestPutObject(MockHttpTest):
self.assertEqual(request_header['etag'], b'1234-5678')
self.assertEqual(request_header['content-type'], b'text/plain')
- def test_no_content_type(self):
+ @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
@@ -1385,6 +1389,17 @@ class TestPutObject(MockHttpTest):
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/')
+ 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.assertNotIn('content-type', request_header)
+
def test_content_type_in_headers(self):
conn = c.http_connection(u'http://www.test.com/')
resp = MockHttpResponse(status=200)