Support service client unit tests for headers also.

Some APIs like create image, returns only headers with empty response body.
We should have unit tests for those API also which required to add header
support in base service client test class.

This commit support header testing for service client and implement
create image unit tests which only return info in headers.

Change-Id: I9a79f862288e5fa827414ce1f26d80bcca4db687
This commit is contained in:
ghanshyam
2015-10-13 15:07:55 +09:00
parent a23ffbaa5b
commit 8e73ab78fa
2 changed files with 33 additions and 5 deletions

View File

@@ -20,19 +20,22 @@ from tempest_lib.tests import base
class BaseComputeServiceTest(base.TestCase):
def create_response(self, body, to_utf=False, status=200):
def create_response(self, body, to_utf=False, status=200, headers=None):
json_body = {}
if body:
json_body = json.dumps(body)
if to_utf:
json_body = json_body.encode('utf-8')
response = (httplib2.Response({'status': status}), json_body)
resp_dict = {'status': status}
if headers:
resp_dict.update(headers)
response = (httplib2.Response(resp_dict), json_body)
return response
def check_service_client_function(self, function, function2mock,
body, to_utf=False, status=200,
**kwargs):
mocked_response = self.create_response(body, to_utf, status)
headers=None, **kwargs):
mocked_response = self.create_response(body, to_utf, status, headers)
self.useFixture(mockpatch.Patch(
function2mock, return_value=mocked_response))
if kwargs:

View File

@@ -85,6 +85,7 @@ class TestImagesClient(base.BaseComputeServiceTest):
"progress": 100,
"status": "ACTIVE",
"updated": "2011-01-01T01:02:03Z"}},
"create": {},
"delete": {}
}
func2mock = {
@@ -94,6 +95,7 @@ class TestImagesClient(base.BaseComputeServiceTest):
'delete': 'tempest_lib.common.rest_client.RestClient.delete'}
# Variable definition
FAKE_IMAGE_ID = FAKE_IMAGE_DATA['show']['image']['id']
FAKE_SERVER_ID = "80a599e0-31e7-49b7-b260-868f441e343f"
FAKE_CREATE_INFO = {'location': 'None'}
FAKE_METADATA = FAKE_IMAGE_METADATA['show_item']['meta']
@@ -108,10 +110,27 @@ class TestImagesClient(base.BaseComputeServiceTest):
mock_operation = self.func2mock['get']
expected_op = self.FAKE_IMAGE_DATA[operation]
params = {"image_id": self.FAKE_IMAGE_ID}
headers = None
if operation == 'list':
function = self.client.list_images
elif operation == 'show':
function = self.client.show_image
elif operation == 'create':
function = self.client.create_image
mock_operation = self.func2mock['post']
params = {"server_id": self.FAKE_SERVER_ID}
response_code = 202
headers = {
'connection': 'keep-alive',
'content-length': '0',
'content-type': 'application/json',
'status': '202',
'x-compute-request-id': 'req-fake',
'vary': 'accept-encoding',
'x-openstack-nova-api-version': 'v2.1',
'date': '13 Oct 2015 05:55:36 GMT',
'location': 'http://fake.com/images/fake'
}
else:
function = self.client.delete_image
mock_operation = self.func2mock['delete']
@@ -119,7 +138,7 @@ class TestImagesClient(base.BaseComputeServiceTest):
self.check_service_client_function(
function, mock_operation, expected_op,
bytes_body, response_code, **params)
bytes_body, response_code, headers, **params)
def _test_image_metadata(self, operation="set_item", bytes_body=False):
response_code = 200
@@ -191,6 +210,12 @@ class TestImagesClient(base.BaseComputeServiceTest):
def test_show_image_with_bytes_body(self):
self._test_image_operation('show', True)
def test_create_image_with_str_body(self):
self._test_image_operation('create')
def test_create_image_with_bytes_body(self):
self._test_image_operation('create', True)
def test_delete_image_with_str_body(self):
self._test_image_operation('delete')