Merge "Type conflict in trusted_filter.py using attestation_port default value" into stable/juno
This commit is contained in:
@@ -105,7 +105,7 @@ class AttestationService(object):
|
||||
# :returns: result data
|
||||
# :raises: IOError if the request fails
|
||||
|
||||
action_url = "https://%s:%d%s/%s" % (self.host, self.port,
|
||||
action_url = "https://%s:%s%s/%s" % (self.host, self.port,
|
||||
self.api_url, action_url)
|
||||
try:
|
||||
res = requests.request(method, action_url, data=body,
|
||||
@@ -119,7 +119,7 @@ class AttestationService(object):
|
||||
requests.codes.NO_CONTENT):
|
||||
try:
|
||||
return requests.codes.OK, jsonutils.loads(res.text)
|
||||
except ValueError:
|
||||
except (TypeError, ValueError):
|
||||
return requests.codes.OK, res.text
|
||||
return status_code, None
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import mock
|
||||
from oslo.config import cfg
|
||||
import requests
|
||||
|
||||
from nova.openstack.common import jsonutils
|
||||
from nova.openstack.common import timeutils
|
||||
from nova.scheduler.filters import trusted_filter
|
||||
from nova import test
|
||||
@@ -22,6 +23,71 @@ from nova.tests.scheduler import fakes
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class AttestationServiceTestCase(test.NoDBTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(AttestationServiceTestCase, self).setUp()
|
||||
self.api_url = '/OpenAttestationWebServices/V1.0'
|
||||
self.host = 'localhost'
|
||||
self.port = '8443'
|
||||
self.statuses = (requests.codes.OK, requests.codes.CREATED,
|
||||
requests.codes.ACCEPTED, requests.codes.NO_CONTENT)
|
||||
|
||||
@mock.patch.object(requests, 'request')
|
||||
def test_do_request_possible_statuses(self, request_mock):
|
||||
"""This test case checks if '_do_request()' method returns
|
||||
appropriate status_code (200) and result (text converted to json),
|
||||
while status_code returned by request is in one of fourth eligible
|
||||
statuses
|
||||
"""
|
||||
|
||||
for status_code in self.statuses:
|
||||
request_mock.return_value.status_code = status_code
|
||||
request_mock.return_value.text = '{"test": "test"}'
|
||||
|
||||
attestation_service = trusted_filter.AttestationService()
|
||||
status, result = attestation_service._do_request(
|
||||
'POST', 'PollHosts', {}, {})
|
||||
|
||||
self.assertEqual(requests.codes.OK, status)
|
||||
self.assertEqual(jsonutils.loads(request_mock.return_value.text),
|
||||
result)
|
||||
|
||||
@mock.patch.object(requests, 'request')
|
||||
def test_do_request_other_status(self, request_mock):
|
||||
"""This test case checks if '_do_request()' method returns
|
||||
appropriate status (this returned by request method) and result
|
||||
(None), while status_code returned by request is not in one of fourth
|
||||
eligible statuses
|
||||
"""
|
||||
|
||||
request_mock.return_value.status_code = requests.codes.NOT_FOUND
|
||||
request_mock.return_value.text = '{"test": "test"}'
|
||||
|
||||
attestation_service = trusted_filter.AttestationService()
|
||||
status, result = attestation_service._do_request(
|
||||
'POST', 'PollHosts', {}, {})
|
||||
|
||||
self.assertEqual(requests.codes.NOT_FOUND, status)
|
||||
self.assertIsNone(result)
|
||||
|
||||
@mock.patch.object(requests, 'request')
|
||||
def test_do_request_unconvertible_text(self, request_mock):
|
||||
for status_code in self.statuses:
|
||||
# this unconvertible_texts leads to TypeError and ValueError
|
||||
# in jsonutils.loads(res.text) in _do_request() method
|
||||
for unconvertible_text in ({"test": "test"}, '{}{}'):
|
||||
request_mock.return_value.status_code = status_code
|
||||
request_mock.return_value.text = unconvertible_text
|
||||
|
||||
attestation_service = trusted_filter.AttestationService()
|
||||
status, result = attestation_service._do_request(
|
||||
'POST', 'PollHosts', {}, {})
|
||||
|
||||
self.assertEqual(requests.codes.OK, status)
|
||||
self.assertEqual(unconvertible_text, result)
|
||||
|
||||
|
||||
@mock.patch.object(trusted_filter.AttestationService, '_request')
|
||||
class TestTrustedFilter(test.NoDBTestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user