Skip to content

Commit c3d4810

Browse files
author
Dean Troyer
committed
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
1 parent a68576b commit c3d4810

2 files changed

Lines changed: 21 additions & 43 deletions

File tree

openstackclient/tests/image/v2/fakes.py

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import random
1919
import uuid
2020

21+
from glanceclient.v2 import schemas
22+
import warlock
23+
2124
from openstackclient.common import utils as common_utils
2225
from openstackclient.tests import fakes
2326
from openstackclient.tests import utils
@@ -194,7 +197,7 @@ def create_one_image(attrs=None):
194197

195198
# Set default attribute
196199
image_info = {
197-
'id': 'image-id' + uuid.uuid4().hex,
200+
'id': str(uuid.uuid4()),
198201
'name': 'image-name' + uuid.uuid4().hex,
199202
'owner': 'image-owner' + uuid.uuid4().hex,
200203
'protected': bool(random.choice([0, 1])),
@@ -205,11 +208,13 @@ def create_one_image(attrs=None):
205208
# Overwrite default attributes if there are some attributes set
206209
image_info.update(attrs)
207210

208-
image = fakes.FakeResource(
209-
None,
210-
image_info,
211-
loaded=True)
212-
return image
211+
# Set up the schema
212+
model = warlock.model_factory(
213+
IMAGE_schema,
214+
schemas.SchemaBasedModel,
215+
)
216+
217+
return model(**image_info)
213218

214219
@staticmethod
215220
def create_images(attrs=None, count=2):
@@ -248,27 +253,6 @@ def get_images(images=None, count=2):
248253

249254
return mock.MagicMock(side_effect=images)
250255

251-
@staticmethod
252-
def get_image_info(image=None):
253-
"""Get the image info from a faked image object.
254-
255-
:param image:
256-
A FakeResource objects faking image
257-
:return
258-
A dictionary which includes the faked image info as follows:
259-
{
260-
'id': image_id,
261-
'name': image_name,
262-
'owner': image_owner,
263-
'protected': image_protected,
264-
'visibility': image_visibility,
265-
'tags': image_tags
266-
}
267-
"""
268-
if image is not None:
269-
return image._info
270-
return {}
271-
272256
@staticmethod
273257
def get_image_columns(image=None):
274258
"""Get the image columns from a faked image object.
@@ -280,9 +264,8 @@ def get_image_columns(image=None):
280264
('id', 'name', 'owner', 'protected', 'visibility', 'tags')
281265
"""
282266
if image is not None:
283-
return tuple(k for k in sorted(
284-
FakeImage.get_image_info(image).keys()))
285-
return tuple([])
267+
return tuple(sorted(image))
268+
return IMAGE_columns
286269

287270
@staticmethod
288271
def get_image_data(image=None):
@@ -296,7 +279,7 @@ def get_image_data(image=None):
296279
"""
297280
data_list = []
298281
if image is not None:
299-
for x in sorted(FakeImage.get_image_info(image).keys()):
282+
for x in sorted(image.keys()):
300283
if x == 'tags':
301284
# The 'tags' should be format_list
302285
data_list.append(

openstackclient/tests/image/v2/test_image.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ def setUp(self):
7575

7676
# This is the return value for utils.find_resource()
7777
self.images_mock.get.return_value = copy.deepcopy(
78-
image_fakes.FakeImage.get_image_info(self.new_image))
78+
self.new_image
79+
)
7980
self.images_mock.update.return_value = self.new_image
8081

8182
# Get the command object to test
@@ -492,7 +493,7 @@ def setUp(self):
492493

493494
self.api_mock = mock.Mock()
494495
self.api_mock.image_list.side_effect = [
495-
[image_fakes.FakeImage.get_image_info(self._image)], [],
496+
[self._image], [],
496497
]
497498
self.app.client_manager.image.api = self.api_mock
498499

@@ -632,10 +633,7 @@ def test_image_list_long_option(self):
632633

633634
@mock.patch('openstackclient.api.utils.simple_filter')
634635
def test_image_list_property_option(self, sf_mock):
635-
sf_mock.return_value = [
636-
copy.deepcopy(
637-
image_fakes.FakeImage.get_image_info(self._image)),
638-
]
636+
sf_mock.return_value = [copy.deepcopy(self._image)]
639637

640638
arglist = [
641639
'--property', 'a=1',
@@ -651,7 +649,7 @@ def test_image_list_property_option(self, sf_mock):
651649
columns, data = self.cmd.take_action(parsed_args)
652650
self.api_mock.image_list.assert_called_with()
653651
sf_mock.assert_called_with(
654-
[image_fakes.FakeImage.get_image_info(self._image)],
652+
[self._image],
655653
attr='a',
656654
value='1',
657655
property_field='properties',
@@ -662,10 +660,7 @@ def test_image_list_property_option(self, sf_mock):
662660

663661
@mock.patch('openstackclient.common.utils.sort_items')
664662
def test_image_list_sort_option(self, si_mock):
665-
si_mock.return_value = [
666-
copy.deepcopy(
667-
image_fakes.FakeImage.get_image_info(self._image))
668-
]
663+
si_mock.return_value = [copy.deepcopy(self._image)]
669664

670665
arglist = ['--sort', 'name:asc']
671666
verifylist = [('sort', 'name:asc')]
@@ -677,7 +672,7 @@ def test_image_list_sort_option(self, si_mock):
677672
columns, data = self.cmd.take_action(parsed_args)
678673
self.api_mock.image_list.assert_called_with()
679674
si_mock.assert_called_with(
680-
[image_fakes.FakeImage.get_image_info(self._image)],
675+
[self._image],
681676
'name:asc'
682677
)
683678
self.assertEqual(self.columns, columns)

0 commit comments

Comments
 (0)