Decode bytes data to string

json in python3.5 requires that json object must be a string, not
byte object. In python2.7 or 3.6 it doesn't matter, it accepts both.

Depends-On: https://review.opendev.org/#/c/702448/
Change-Id: I10a2805b599767cbd1f5553c1640f68c25e85522
This commit is contained in:
Martin Kopec 2020-01-15 00:51:26 +00:00
parent 2188ec07e1
commit 9f9ed67d30
5 changed files with 8 additions and 5 deletions

View File

@ -65,7 +65,7 @@ class Service(object):
if r.status >= 400:
raise ServiceError("Request on service '%s' with url '%s' failed"
" with code %d" % (self.s_type, url, r.status))
return r.data
return r.data.decode('utf-8')
def set_extensions(self):
self.extensions = []

View File

@ -88,7 +88,8 @@ class IdentityService(VersionedService):
headers={'Accept': 'application/json-home'})
ext_h = 'https://docs.openstack.org/api/openstack-identity/3/ext/'
res = [x for x in json.loads(r.content)['resources'].keys()]
content = r.content.decode('utf-8')
res = [x for x in json.loads(content)['resources'].keys()]
ext = [ex for ex in res if 'ext' in ex]
ext = [str(e).replace(ext_h, '').split('/')[0] for e in ext]
self.extensions_v3 = list(set(ext))

View File

@ -270,8 +270,10 @@ class BaseServiceTest(base.BaseTestCase):
}
)
def __init__(self):
def __init__(self, bytes_content=False):
self.content = json.dumps(self.FAKE_V3_EXTENSIONS)
if bytes_content:
self.content = self.content.encode('utf-8')
class FakeServiceClient(object):
def __init__(self, services=None):

View File

@ -34,7 +34,7 @@ class TestService(BaseServiceTest):
expected_resp = mock_http.request('GET',
self.FAKE_URL,
self.FAKE_HEADERS)
return expected_resp.data
return expected_resp.data.decode('utf-8')
@mock.patch('config_tempest.services.base.urllib3')
def test_do_get(self, mock_urllib3):

View File

@ -50,7 +50,7 @@ class TestIdentityService(BaseServiceTest):
def test_set_identity_v3_extensions(self):
expected_resp = ['OS-INHERIT', 'OS-OAUTH1',
'OS-SIMPLE-CERT', 'OS-EP-FILTER']
fake_resp = self.FakeRequestResponse()
fake_resp = self.FakeRequestResponse(bytes_content=True)
mocked_requests = mock.Mock()
mocked_requests.return_value = fake_resp
self.useFixture(MonkeyPatch('requests.get', mocked_requests))