Fix credential client to return raw response

Identity v3 credential APIs return credential information
in 'blob' element which is a dict embedded in string.

And service client does json.load on that and then return the
response which should not be done.

Each service client should return the raw response they gets
from API server.

This commit fix the same and move the json loading of nested dict
on test side.

Partially implements blueprint consistent-service-method-names

Related-Bug: 1622806

Change-Id: Ied8c379af2dcb9ab1cbde859f110d218dd9aea5f
diff --git a/tempest/api/identity/admin/v3/test_credentials.py b/tempest/api/identity/admin/v3/test_credentials.py
index 12b236f..a0d8748 100644
--- a/tempest/api/identity/admin/v3/test_credentials.py
+++ b/tempest/api/identity/admin/v3/test_credentials.py
@@ -12,6 +12,7 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
+from oslo_serialization import jsonutils as json
 
 from tempest.api.identity import base
 from tempest.common.utils import data_utils
@@ -70,6 +71,7 @@
         update_body = self.creds_client.update_credential(
             cred['id'], blob=blob, project_id=self.projects[1],
             type='ec2')['credential']
+        update_body['blob'] = json.loads(update_body['blob'])
         self.assertEqual(cred['id'], update_body['id'])
         self.assertEqual(self.projects[1], update_body['project_id'])
         self.assertEqual(self.user_body['id'], update_body['user_id'])
@@ -77,6 +79,7 @@
         self.assertEqual(update_body['blob']['secret'], new_keys[1])
 
         get_body = self.creds_client.show_credential(cred['id'])['credential']
+        get_body['blob'] = json.loads(get_body['blob'])
         for value1 in self.creds_list[0]:
             self.assertEqual(update_body[value1],
                              get_body[value1])
diff --git a/tempest/lib/services/identity/v3/credentials_client.py b/tempest/lib/services/identity/v3/credentials_client.py
index c063cae..b259416 100644
--- a/tempest/lib/services/identity/v3/credentials_client.py
+++ b/tempest/lib/services/identity/v3/credentials_client.py
@@ -36,7 +36,6 @@
         resp, body = self.post('credentials', post_body)
         self.expected_success(201, resp.status)
         body = json.loads(body)
-        body['credential']['blob'] = json.loads(body['credential']['blob'])
         return rest_client.ResponseBody(resp, body)
 
     def update_credential(self, credential_id, **kwargs):
@@ -49,7 +48,6 @@
         resp, body = self.patch('credentials/%s' % credential_id, post_body)
         self.expected_success(200, resp.status)
         body = json.loads(body)
-        body['credential']['blob'] = json.loads(body['credential']['blob'])
         return rest_client.ResponseBody(resp, body)
 
     def show_credential(self, credential_id):
@@ -62,7 +60,6 @@
         resp, body = self.get('credentials/%s' % credential_id)
         self.expected_success(200, resp.status)
         body = json.loads(body)
-        body['credential']['blob'] = json.loads(body['credential']['blob'])
         return rest_client.ResponseBody(resp, body)
 
     def list_credentials(self, **params):
diff --git a/tempest/tests/lib/services/base.py b/tempest/tests/lib/services/base.py
index 3165689..a244aa2 100644
--- a/tempest/tests/lib/services/base.py
+++ b/tempest/tests/lib/services/base.py
@@ -12,7 +12,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import copy
 from oslo_serialization import jsonutils as json
 from oslotest import mockpatch
 
@@ -32,7 +31,7 @@
 
     def check_service_client_function(self, function, function2mock,
                                       body, to_utf=False, status=200,
-                                      headers=None, cr_blob=False, **kwargs):
+                                      headers=None, **kwargs):
         mocked_response = self.create_response(body, to_utf, status, headers)
         self.useFixture(mockpatch.Patch(
             function2mock, return_value=mocked_response))
@@ -40,11 +39,4 @@
             resp = function(**kwargs)
         else:
             resp = function()
-
-        if cr_blob:
-            evaluated_body = copy.deepcopy(body)
-            nested_json = json.loads(evaluated_body['credential']['blob'])
-            evaluated_body['credential']['blob'] = nested_json
-            self.assertEqual(evaluated_body, resp)
-        else:
-            self.assertEqual(body, resp)
+        self.assertEqual(body, resp)
diff --git a/tempest/tests/lib/services/identity/v3/test_credentials_client.py b/tempest/tests/lib/services/identity/v3/test_credentials_client.py
index a2a22ff..29d7496 100644
--- a/tempest/tests/lib/services/identity/v3/test_credentials_client.py
+++ b/tempest/tests/lib/services/identity/v3/test_credentials_client.py
@@ -121,14 +121,14 @@
             self.client.create_credential,
             'tempest.lib.common.rest_client.RestClient.post',
             self.FAKE_CREATE_CREDENTIAL,
-            bytes_body, status=201, cr_blob=True)
+            bytes_body, status=201)
 
     def _test_show_credential(self, bytes_body=False):
         self.check_service_client_function(
             self.client.show_credential,
             'tempest.lib.common.rest_client.RestClient.get',
             self.FAKE_INFO_CREDENTIAL,
-            bytes_body, cr_blob=True,
+            bytes_body,
             credential_id="207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4f")
 
     def _test_update_credential(self, bytes_body=False):
@@ -136,7 +136,7 @@
             self.client.update_credential,
             'tempest.lib.common.rest_client.RestClient.patch',
             self.FAKE_INFO_CREDENTIAL,
-            bytes_body, cr_blob=True,
+            bytes_body,
             credential_id="207e9b76935efc03804d3dd6ab52d22e9b22a0711e4ada4f")
 
     def _test_list_credentials(self, bytes_body=False):