From ce65164155dcf6dddf7695fbc5ca6352c121cc04 Mon Sep 17 00:00:00 2001 From: TerryHowe Date: Wed, 3 Jun 2015 17:18:38 -0600 Subject: [PATCH] Add functional tests for image set This patch includes functional tests for image set and it includes a change to use the OSC utils.format_dict method to format the properties. This will give a more user friendly format to the image commands and it gives a more consistent testable format to the output. Instead of: {u'a': u'b', u'c': u'd'} The user will see: a=b, c=d Change-Id: Ib396316586ffc5dbab231064d5b6dc9425507934 --- functional/tests/image/v1/test_image.py | 23 ++++++++++++++++++++++- openstackclient/image/v1/image.py | 3 +++ openstackclient/tests/image/v1/fakes.py | 6 ++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/functional/tests/image/v1/test_image.py b/functional/tests/image/v1/test_image.py index e27ab24cd1..9f6ddcc5df 100644 --- a/functional/tests/image/v1/test_image.py +++ b/functional/tests/image/v1/test_image.py @@ -19,6 +19,7 @@ class ImageTests(test.TestCase): """Functional tests for image. """ NAME = uuid.uuid4().hex + OTHER_NAME = uuid.uuid4().hex HEADERS = ['Name'] FIELDS = ['name'] @@ -31,7 +32,13 @@ class ImageTests(test.TestCase): @classmethod def tearDownClass(cls): - raw_output = cls.openstack('image delete ' + cls.NAME) + # Rename test + opts = cls.get_show_opts(cls.FIELDS) + raw_output = cls.openstack( + 'image set --name ' + cls.OTHER_NAME + ' ' + cls.NAME + opts) + cls.assertOutput(cls.OTHER_NAME + "\n", raw_output) + # Delete test + raw_output = cls.openstack('image delete ' + cls.OTHER_NAME) cls.assertOutput('', raw_output) def test_image_list(self): @@ -43,3 +50,17 @@ class ImageTests(test.TestCase): opts = self.get_show_opts(self.FIELDS) raw_output = self.openstack('image show ' + self.NAME + opts) self.assertEqual(self.NAME + "\n", raw_output) + + def test_image_set(self): + opts = self.get_show_opts([ + "disk_format", "is_public", "min_disk", "min_ram", "name"]) + raw_output = self.openstack('image set --min-disk 4 --min-ram 5 ' + + '--disk-format qcow2 --public ' + + self.NAME + opts) + self.assertEqual("qcow2\nTrue\n4\n5\n" + self.NAME + '\n', raw_output) + + def test_image_metadata(self): + opts = self.get_show_opts(["name", "properties"]) + raw_output = self.openstack( + 'image set --property a=b --property c=d ' + self.NAME + opts) + self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output) diff --git a/openstackclient/image/v1/image.py b/openstackclient/image/v1/image.py index d4d45fa287..85a9e07683 100644 --- a/openstackclient/image/v1/image.py +++ b/openstackclient/image/v1/image.py @@ -275,6 +275,7 @@ class CreateImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) @@ -608,6 +609,7 @@ class SetImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) @@ -636,4 +638,5 @@ class ShowImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) diff --git a/openstackclient/tests/image/v1/fakes.py b/openstackclient/tests/image/v1/fakes.py index 972e641589..95a8a39ceb 100644 --- a/openstackclient/tests/image/v1/fakes.py +++ b/openstackclient/tests/image/v1/fakes.py @@ -30,7 +30,7 @@ image_properties = { 'Beta': 'b', 'Gamma': 'g', } -image_properties_str = "{'Alpha': 'a', 'Beta': 'b', 'Gamma': 'g'}" +image_properties_str = "Alpha='a', Beta='b', Gamma='g'" image_data = 'line 1\nline 2\n' IMAGE = { @@ -47,7 +47,9 @@ IMAGE = { } IMAGE_columns = tuple(sorted(IMAGE)) -IMAGE_data = tuple((IMAGE[x] for x in sorted(IMAGE))) +IMAGE_output = dict(IMAGE) +IMAGE_output['properties'] = image_properties_str +IMAGE_data = tuple((IMAGE_output[x] for x in sorted(IMAGE_output))) class FakeImagev1Client(object):