Fix unit tests to use requests
python documentation recommends the use of the requests package when performing http requests. We could simplify our unit test interface that performs HTTP requests by replacing the use of http_client.HTTPConnection with requests. [1] https://docs.python.org/3/library/http.client.html Change-Id: I3dd1f836a3cb2b4d36ff3fbe6f0258f4b0e0ba71 Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
This commit is contained in:
parent
c97f89f6e5
commit
d487c2db72
@ -68,9 +68,9 @@ class TestCORSMiddleware(integrated_helpers._IntegratedTestBase):
|
|||||||
'Access-Control-Request-Method': 'GET',
|
'Access-Control-Request-Method': 'GET',
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.assertEqual(200, response.status)
|
self.assertEqual(200, response.status_code)
|
||||||
self.assertEqual(acao_header_expected,
|
self.assertEqual(acao_header_expected,
|
||||||
response.getheader('Access-Control-Allow-Origin'))
|
response.headers.get('Access-Control-Allow-Origin'))
|
||||||
|
|
||||||
@ddt.data(
|
@ddt.data(
|
||||||
('http://valid.example.com', 'http://valid.example.com'),
|
('http://valid.example.com', 'http://valid.example.com'),
|
||||||
@ -85,9 +85,9 @@ class TestCORSMiddleware(integrated_helpers._IntegratedTestBase):
|
|||||||
'Origin': origin_url
|
'Origin': origin_url
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.assertEqual(404, response.status)
|
self.assertEqual(404, response.status_code)
|
||||||
self.assertEqual(acao_header_expected,
|
self.assertEqual(acao_header_expected,
|
||||||
response.getheader('Access-Control-Allow-Origin'))
|
response.headers.get('Access-Control-Allow-Origin'))
|
||||||
|
|
||||||
|
|
||||||
class TestHealthCheckMiddleware(integrated_helpers._IntegratedTestBase):
|
class TestHealthCheckMiddleware(integrated_helpers._IntegratedTestBase):
|
||||||
|
@ -12,9 +12,11 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import http.client as http_client
|
import netaddr
|
||||||
from urllib import parse
|
from urllib import parse
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
|
||||||
@ -28,8 +30,8 @@ class OpenStackApiException(Exception):
|
|||||||
message = 'Unspecified error'
|
message = 'Unspecified error'
|
||||||
|
|
||||||
if response:
|
if response:
|
||||||
_status = response.status
|
_status = response.status_code
|
||||||
_body = response.read()
|
_body = response.text
|
||||||
|
|
||||||
message = ('%(message)s\nStatus Code: %(_status)s\n'
|
message = ('%(message)s\nStatus Code: %(_status)s\n'
|
||||||
'Body: %(_body)s') % {
|
'Body: %(_body)s') % {
|
||||||
@ -81,34 +83,28 @@ class TestOpenStackClient(object):
|
|||||||
# default project_id
|
# default project_id
|
||||||
self.project_id = 'openstack'
|
self.project_id = 'openstack'
|
||||||
|
|
||||||
def request(self, url, method='GET', body=None, headers=None):
|
def request(self, url, method='GET', body=None, headers=None,
|
||||||
|
ssl_verify=True, stream=False):
|
||||||
_headers = {'Content-Type': 'application/json'}
|
_headers = {'Content-Type': 'application/json'}
|
||||||
_headers.update(headers or {})
|
_headers.update(headers or {})
|
||||||
|
|
||||||
parsed_url = parse.urlparse(url)
|
parsed_url = parse.urlparse(url)
|
||||||
port = parsed_url.port
|
port = parsed_url.port or ''
|
||||||
hostname = parsed_url.hostname
|
hostname = parsed_url.hostname
|
||||||
|
if netaddr.valid_ipv6(hostname):
|
||||||
|
hostname = "[%s]" % hostname
|
||||||
scheme = parsed_url.scheme
|
scheme = parsed_url.scheme
|
||||||
|
|
||||||
if scheme == 'http':
|
|
||||||
conn = http_client.HTTPConnection(hostname,
|
|
||||||
port=port)
|
|
||||||
elif scheme == 'https':
|
|
||||||
conn = http_client.HTTPSConnection(hostname,
|
|
||||||
port=port)
|
|
||||||
else:
|
|
||||||
raise OpenStackApiException("Unknown scheme: %s" % url)
|
|
||||||
|
|
||||||
relative_url = parsed_url.path
|
relative_url = parsed_url.path
|
||||||
if parsed_url.query:
|
if parsed_url.query:
|
||||||
relative_url = relative_url + "?" + parsed_url.query
|
relative_url = relative_url + "?" + parsed_url.query
|
||||||
LOG.info("Doing %(method)s on %(relative_url)s",
|
LOG.debug("Doing %(method)s on %(relative_url)s, body: %(body)s",
|
||||||
{"method": method, "relative_url": relative_url})
|
{"method": method, "relative_url": relative_url,
|
||||||
if body:
|
"body": body or {}})
|
||||||
LOG.info("Body: %s", body)
|
|
||||||
|
|
||||||
conn.request(method, relative_url, body, _headers)
|
_url = "%s://%s:%s%s" % (scheme, hostname, port, relative_url)
|
||||||
response = conn.getresponse()
|
|
||||||
|
response = requests.request(method, _url, data=body, headers=_headers,
|
||||||
|
verify=ssl_verify, stream=stream)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def _authenticate(self):
|
def _authenticate(self):
|
||||||
@ -121,7 +117,7 @@ class TestOpenStackClient(object):
|
|||||||
response = self.request(self.endpoint,
|
response = self.request(self.endpoint,
|
||||||
headers=headers)
|
headers=headers)
|
||||||
|
|
||||||
http_status = response.status
|
http_status = response.status_code
|
||||||
LOG.debug("%(endpoint)s => code %(http_status)s.",
|
LOG.debug("%(endpoint)s => code %(http_status)s.",
|
||||||
{"endpoint": self.endpoint,
|
{"endpoint": self.endpoint,
|
||||||
"http_status": http_status})
|
"http_status": http_status})
|
||||||
@ -129,11 +125,7 @@ class TestOpenStackClient(object):
|
|||||||
if http_status == 401:
|
if http_status == 401:
|
||||||
raise OpenStackApiAuthenticationException(response=response)
|
raise OpenStackApiAuthenticationException(response=response)
|
||||||
|
|
||||||
auth_headers = {}
|
self.auth_result = response.headers
|
||||||
for k, v in response.getheaders():
|
|
||||||
auth_headers[k.lower()] = v
|
|
||||||
|
|
||||||
self.auth_result = auth_headers
|
|
||||||
return self.auth_result
|
return self.auth_result
|
||||||
|
|
||||||
def api_request(self, relative_uri, check_response_status=None, **kwargs):
|
def api_request(self, relative_uri, check_response_status=None, **kwargs):
|
||||||
@ -148,7 +140,7 @@ class TestOpenStackClient(object):
|
|||||||
|
|
||||||
response = self.request(full_uri, **kwargs)
|
response = self.request(full_uri, **kwargs)
|
||||||
|
|
||||||
http_status = response.status
|
http_status = response.status_code
|
||||||
LOG.debug("%(relative_uri)s => code %(http_status)s.",
|
LOG.debug("%(relative_uri)s => code %(http_status)s.",
|
||||||
{"relative_uri": relative_uri, "http_status": http_status})
|
{"relative_uri": relative_uri, "http_status": http_status})
|
||||||
|
|
||||||
@ -166,7 +158,7 @@ class TestOpenStackClient(object):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
def _decode_json(self, response):
|
def _decode_json(self, response):
|
||||||
body = response.read()
|
body = response.text
|
||||||
LOG.debug("Decoding JSON: %s.", (body))
|
LOG.debug("Decoding JSON: %s.", (body))
|
||||||
if body:
|
if body:
|
||||||
return jsonutils.loads(body)
|
return jsonutils.loads(body)
|
||||||
|
@ -33,7 +33,7 @@ class ExtensionsTest(integrated_helpers._IntegratedTestBase):
|
|||||||
def test_get_foxnsocks(self):
|
def test_get_foxnsocks(self):
|
||||||
"""Simple check that fox-n-socks works."""
|
"""Simple check that fox-n-socks works."""
|
||||||
response = self.api.api_request('/foxnsocks')
|
response = self.api.api_request('/foxnsocks')
|
||||||
foxnsocks = response.read()
|
foxnsocks = response.text
|
||||||
LOG.debug("foxnsocks: %s.", foxnsocks)
|
LOG.debug("foxnsocks: %s.", foxnsocks)
|
||||||
self.assertEqual('Try to say this Mr. Knox, sir...'.encode("utf-8"),
|
self.assertEqual('Try to say this Mr. Knox, sir...',
|
||||||
foxnsocks)
|
foxnsocks)
|
||||||
|
Loading…
Reference in New Issue
Block a user