Fix image tests to use warlock resources

We have been testing (incorrectly) Image v2 using our usual
FakeResource objects, when the v2 API actually uses warlock
schema modelled resources.

Bring this to the tests (TestImageSet was already doing this)

Change-Id: Ia6ed3a8e28a8961f770c241b49d47cce9ff328d3
This commit is contained in:
Dean Troyer 2016-05-19 12:53:01 -05:00
parent a68576b34b
commit c3d4810850
2 changed files with 21 additions and 43 deletions

View File

@ -18,6 +18,9 @@ import mock
import random
import uuid
from glanceclient.v2 import schemas
import warlock
from openstackclient.common import utils as common_utils
from openstackclient.tests import fakes
from openstackclient.tests import utils
@ -194,7 +197,7 @@ class FakeImage(object):
# Set default attribute
image_info = {
'id': 'image-id' + uuid.uuid4().hex,
'id': str(uuid.uuid4()),
'name': 'image-name' + uuid.uuid4().hex,
'owner': 'image-owner' + uuid.uuid4().hex,
'protected': bool(random.choice([0, 1])),
@ -205,11 +208,13 @@ class FakeImage(object):
# Overwrite default attributes if there are some attributes set
image_info.update(attrs)
image = fakes.FakeResource(
None,
image_info,
loaded=True)
return image
# Set up the schema
model = warlock.model_factory(
IMAGE_schema,
schemas.SchemaBasedModel,
)
return model(**image_info)
@staticmethod
def create_images(attrs=None, count=2):
@ -248,27 +253,6 @@ class FakeImage(object):
return mock.MagicMock(side_effect=images)
@staticmethod
def get_image_info(image=None):
"""Get the image info from a faked image object.
:param image:
A FakeResource objects faking image
:return
A dictionary which includes the faked image info as follows:
{
'id': image_id,
'name': image_name,
'owner': image_owner,
'protected': image_protected,
'visibility': image_visibility,
'tags': image_tags
}
"""
if image is not None:
return image._info
return {}
@staticmethod
def get_image_columns(image=None):
"""Get the image columns from a faked image object.
@ -280,9 +264,8 @@ class FakeImage(object):
('id', 'name', 'owner', 'protected', 'visibility', 'tags')
"""
if image is not None:
return tuple(k for k in sorted(
FakeImage.get_image_info(image).keys()))
return tuple([])
return tuple(sorted(image))
return IMAGE_columns
@staticmethod
def get_image_data(image=None):
@ -296,7 +279,7 @@ class FakeImage(object):
"""
data_list = []
if image is not None:
for x in sorted(FakeImage.get_image_info(image).keys()):
for x in sorted(image.keys()):
if x == 'tags':
# The 'tags' should be format_list
data_list.append(

View File

@ -75,7 +75,8 @@ class TestImageCreate(TestImage):
# This is the return value for utils.find_resource()
self.images_mock.get.return_value = copy.deepcopy(
image_fakes.FakeImage.get_image_info(self.new_image))
self.new_image
)
self.images_mock.update.return_value = self.new_image
# Get the command object to test
@ -492,7 +493,7 @@ class TestImageList(TestImage):
self.api_mock = mock.Mock()
self.api_mock.image_list.side_effect = [
[image_fakes.FakeImage.get_image_info(self._image)], [],
[self._image], [],
]
self.app.client_manager.image.api = self.api_mock
@ -632,10 +633,7 @@ class TestImageList(TestImage):
@mock.patch('openstackclient.api.utils.simple_filter')
def test_image_list_property_option(self, sf_mock):
sf_mock.return_value = [
copy.deepcopy(
image_fakes.FakeImage.get_image_info(self._image)),
]
sf_mock.return_value = [copy.deepcopy(self._image)]
arglist = [
'--property', 'a=1',
@ -651,7 +649,7 @@ class TestImageList(TestImage):
columns, data = self.cmd.take_action(parsed_args)
self.api_mock.image_list.assert_called_with()
sf_mock.assert_called_with(
[image_fakes.FakeImage.get_image_info(self._image)],
[self._image],
attr='a',
value='1',
property_field='properties',
@ -662,10 +660,7 @@ class TestImageList(TestImage):
@mock.patch('openstackclient.common.utils.sort_items')
def test_image_list_sort_option(self, si_mock):
si_mock.return_value = [
copy.deepcopy(
image_fakes.FakeImage.get_image_info(self._image))
]
si_mock.return_value = [copy.deepcopy(self._image)]
arglist = ['--sort', 'name:asc']
verifylist = [('sort', 'name:asc')]
@ -677,7 +672,7 @@ class TestImageList(TestImage):
columns, data = self.cmd.take_action(parsed_args)
self.api_mock.image_list.assert_called_with()
si_mock.assert_called_with(
[image_fakes.FakeImage.get_image_info(self._image)],
[self._image],
'name:asc'
)
self.assertEqual(self.columns, columns)