Merge "Fix getting header in redirect processing"

This commit is contained in:
Jenkins 2013-10-09 17:36:54 +00:00 committed by Gerrit Code Review
commit 5ec5e7baec
2 changed files with 26 additions and 1 deletions
glanceclient/common
tests

@ -233,7 +233,8 @@ class HTTPClient(object):
raise exc.from_response(resp, body_str)
elif resp.status in (301, 302, 305):
# Redirected. Reissue the request to the new location.
return self._http_request(resp['location'], method, **kwargs)
return self._http_request(resp.getheader('location', None), method,
**kwargs)
elif resp.status == 300:
raise exc.from_response(resp)

@ -100,6 +100,30 @@ class TestClient(testtools.TestCase):
(comm_err.message, self.endpoint))
self.assertTrue(self.endpoint in comm_err.message, fail_msg)
def test_request_redirected(self):
resp = utils.FakeResponse({'location': 'http://www.example.com'},
status=302, body=StringIO.StringIO())
httplib.HTTPConnection.request(
mox.IgnoreArg(),
mox.IgnoreArg(),
headers=mox.IgnoreArg(),
)
httplib.HTTPConnection.getresponse().AndReturn(resp)
# The second request should be to the redirected location
expected_response = 'Ok'
resp2 = utils.FakeResponse({}, StringIO.StringIO(expected_response))
httplib.HTTPConnection.request(
'GET',
'http://www.example.com',
headers=mox.IgnoreArg(),
)
httplib.HTTPConnection.getresponse().AndReturn(resp2)
self.mock.ReplayAll()
self.client.json_request('GET', '/v1/images/detail')
def test_http_encoding(self):
httplib.HTTPConnection.request(
mox.IgnoreArg(),