summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-05-24 19:17:53 +0000
committerGerrit Code Review <review@openstack.org>2017-05-24 19:17:53 +0000
commitfdb70bb49bfb8759b682521c187333c0afd60cbb (patch)
tree04198c9e51537c08f69c40b671b975ef9e3d455f /openstackclient
parent4a27f51446800b31117534ce208885ea05d5457e (diff)
parent6425fc305911c307e73cacb3066f15a186e61db9 (diff)
downloadpython-openstackclient-fdb70bb49bfb8759b682521c187333c0afd60cbb.tar.gz
Merge "JSON-ify image functional tests"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/functional/image/v1/test_image.py96
-rw-r--r--openstackclient/tests/functional/image/v2/test_image.py270
2 files changed, 269 insertions, 97 deletions
diff --git a/openstackclient/tests/functional/image/v1/test_image.py b/openstackclient/tests/functional/image/v1/test_image.py
index 7e12f2c7..901f4337 100644
--- a/openstackclient/tests/functional/image/v1/test_image.py
+++ b/openstackclient/tests/functional/image/v1/test_image.py
@@ -26,44 +26,74 @@ class ImageTests(base.TestCase):
@classmethod
def setUpClass(cls):
os.environ['OS_IMAGE_API_VERSION'] = '1'
- cmd_output = json.loads(cls.openstack(
- 'image create -f json ' + cls.NAME))
- cls.assertOutput(cls.NAME, cmd_output['name'])
+ json_output = json.loads(cls.openstack(
+ 'image create -f json ' +
+ cls.NAME
+ ))
+ cls.image_id = json_output["id"]
+ cls.assertOutput(cls.NAME, json_output['name'])
@classmethod
def tearDownClass(cls):
- # Rename test
- raw_output = cls.openstack('image set --name ' + cls.OTHER_NAME + ' '
- + cls.NAME)
- cls.assertOutput('', raw_output)
- # Delete test
- raw_output = cls.openstack('image delete ' + cls.OTHER_NAME)
- cls.assertOutput('', raw_output)
+ cls.openstack(
+ 'image delete ' +
+ cls.image_id
+ )
def test_image_list(self):
- cmd_output = json.loads(self.openstack('image list -f json'))
- col_names = [img['Name'] for img in cmd_output]
- self.assertIn(self.NAME, col_names)
+ json_output = json.loads(self.openstack(
+ 'image list -f json '
+ ))
+ self.assertIn(
+ self.NAME,
+ [img['Name'] for img in json_output]
+ )
- def test_image_show(self):
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
+ def test_image_attributes(self):
+ """Test set, unset, show on attributes, tags and properties"""
- def test_image_set(self):
- self.openstack('image set --min-disk 4 --min-ram 5 ' +
- '--disk-format qcow2 --public ' + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
- self.assertEqual(4, cmd_output['min_disk'])
- self.assertEqual(5, cmd_output['min_ram'])
- self.assertEqual('qcow2', cmd_output['disk_format'])
- self.assertEqual(True, cmd_output['is_public'])
+ # Test explicit attributes
+ self.openstack(
+ 'image set ' +
+ '--min-disk 4 ' +
+ '--min-ram 5 ' +
+ '--disk-format qcow2 ' +
+ '--public ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ 4,
+ json_output["min_disk"],
+ )
+ self.assertEqual(
+ 5,
+ json_output["min_ram"],
+ )
+ self.assertEqual(
+ 'qcow2',
+ json_output['disk_format'],
+ )
+ self.assertTrue(
+ json_output["is_public"],
+ )
- def test_image_metadata(self):
- self.openstack('image set --property a=b --property c=d ' + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
- self.assertEqual("a='b', c='d'", cmd_output['properties'])
+ # Test properties
+ self.openstack(
+ 'image set ' +
+ '--property a=b ' +
+ '--property c=d ' +
+ '--public ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ "a='b', c='d'",
+ json_output["properties"],
+ )
diff --git a/openstackclient/tests/functional/image/v2/test_image.py b/openstackclient/tests/functional/image/v2/test_image.py
index 2a132ab7..8fadd200 100644
--- a/openstackclient/tests/functional/image/v2/test_image.py
+++ b/openstackclient/tests/functional/image/v2/test_image.py
@@ -14,6 +14,8 @@ import json
import os
import uuid
+# from glanceclient import exc as image_exceptions
+
from openstackclient.tests.functional import base
@@ -26,78 +28,218 @@ class ImageTests(base.TestCase):
@classmethod
def setUpClass(cls):
os.environ['OS_IMAGE_API_VERSION'] = '2'
- cmd_output = json.loads(cls.openstack(
- 'image create -f json ' + cls.NAME))
- cls.assertOutput(cls.NAME, cmd_output['name'])
+ json_output = json.loads(cls.openstack(
+ 'image create -f json ' +
+ cls.NAME
+ ))
+ cls.image_id = json_output["id"]
+ cls.assertOutput(cls.NAME, json_output['name'])
@classmethod
def tearDownClass(cls):
- # Rename test
- raw_output = cls.openstack('image set --name ' + cls.OTHER_NAME + ' '
- + cls.NAME)
- cls.assertOutput('', raw_output)
- # Delete test
- raw_output = cls.openstack('image delete ' + cls.OTHER_NAME)
- cls.assertOutput('', raw_output)
+ cls.openstack(
+ 'image delete ' +
+ cls.image_id
+ )
def test_image_list(self):
- cmd_output = json.loads(self.openstack('image list -f json'))
- col_names = [x['Name'] for x in cmd_output]
- self.assertIn(self.NAME, col_names)
-
- def test_image_show(self):
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
-
- def test_image_set(self):
- self.openstack('image set --min-disk 4 --min-ram 5 --public '
- + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
- self.assertEqual(4, cmd_output['min_disk'])
- self.assertEqual(5, cmd_output['min_ram'])
- self.assertEqual('raw', cmd_output['disk_format'])
- self.assertEqual('public', cmd_output['visibility'])
-
- def test_image_metadata(self):
- self.openstack('image set --property a=b --property c=d ' + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
- self.assertEqual("a='b', c='d'", cmd_output['properties'])
-
- def test_image_unset(self):
- self.openstack('image set --tag 01 ' + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual('01', cmd_output['tags'])
- self.openstack('image unset --tag 01 ' + self.NAME)
- # test_image_metadata has set image properties "a" and "c"
- self.openstack('image unset --property a --property c ' + self.NAME)
- cmd_output = json.loads(self.openstack(
- 'image show -f json ' + self.NAME))
- self.assertEqual(self.NAME, cmd_output['name'])
- self.assertEqual('', cmd_output['tags'])
- self.assertNotIn('properties', cmd_output)
-
- def test_image_members(self):
- cmd_output = json.loads(self.openstack('token issue -f json'))
- my_project_id = cmd_output['project_id']
+ json_output = json.loads(self.openstack(
+ 'image list -f json '
+ ))
+ self.assertIn(
+ self.NAME,
+ [img['Name'] for img in json_output]
+ )
+
+ def test_image_attributes(self):
+ """Test set, unset, show on attributes, tags and properties"""
+
+ # Test explicit attributes
self.openstack(
- 'image add project {} {}'.format(self.NAME, my_project_id))
-
+ 'image set ' +
+ '--min-disk 4 ' +
+ '--min-ram 5 ' +
+ '--public ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ 4,
+ json_output["min_disk"],
+ )
+ self.assertEqual(
+ 5,
+ json_output["min_ram"],
+ )
+ self.assertEqual(
+ 'public',
+ json_output["visibility"],
+ )
+
+ # Test properties
self.openstack(
- 'image set --accept ' + self.NAME)
- shared_img_list = json.loads(self.openstack(
- 'image list --shared -f json'))
- self.assertIn(self.NAME, [img['Name'] for img in shared_img_list])
+ 'image set ' +
+ '--property a=b ' +
+ '--property c=d ' +
+ '--public ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ "a='b', c='d'",
+ json_output["properties"],
+ )
self.openstack(
- 'image set --reject ' + self.NAME)
- shared_img_list = json.loads(self.openstack(
- 'image list --shared -f json'))
+ 'image unset ' +
+ '--property a ' +
+ '--property c ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertNotIn(
+ 'properties',
+ json_output,
+ )
+
+ # Test tags
+ self.openstack(
+ 'image set ' +
+ '--tag 01 ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ '01',
+ json_output["tags"],
+ )
self.openstack(
- 'image remove project {} {}'.format(self.NAME, my_project_id))
+ 'image unset ' +
+ '--tag 01 ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ self.assertEqual(
+ '',
+ json_output["tags"],
+ )
+
+ def test_image_set_rename(self):
+ name = uuid.uuid4().hex
+ json_output = json.loads(self.openstack(
+ 'image create -f json ' +
+ name
+ ))
+ image_id = json_output["id"]
+ self.assertEqual(
+ name,
+ json_output["name"],
+ )
+ self.openstack(
+ 'image set ' +
+ '--name ' + name + 'xx ' +
+ image_id
+ )
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ name + 'xx'
+ ))
+ self.assertEqual(
+ name + 'xx',
+ json_output["name"],
+ )
+
+ # TODO(dtroyer): This test is incomplete and doesn't properly test
+ # sharing images. Fix after the --shared option is
+ # properly added.
+ def test_image_members(self):
+ """Test member add, remove, accept"""
+ json_output = json.loads(self.openstack(
+ 'token issue -f json'
+ ))
+ my_project_id = json_output['project_id']
+
+ json_output = json.loads(self.openstack(
+ 'image show -f json ' +
+ self.NAME
+ ))
+ # NOTE(dtroyer): Until OSC supports --shared flags in create and set
+ # we can not properly test membership. Sometimes the
+ # images are shared and sometimes they are not.
+ if json_output["visibility"] == 'shared':
+ self.openstack(
+ 'image add project ' +
+ self.NAME + ' ' +
+ my_project_id
+ )
+ # self.addCleanup(
+ # self.openstack,
+ # 'image remove project ' +
+ # self.NAME + ' ' +
+ # my_project_id
+ # )
+
+ self.openstack(
+ 'image set ' +
+ '--accept ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image list -f json ' +
+ '--shared'
+ ))
+ self.assertIn(
+ self.NAME,
+ [img['Name'] for img in json_output]
+ )
+
+ self.openstack(
+ 'image set ' +
+ '--reject ' +
+ self.NAME
+ )
+ json_output = json.loads(self.openstack(
+ 'image list -f json ' +
+ '--shared'
+ ))
+ # self.assertNotIn(
+ # self.NAME,
+ # [img['Name'] for img in json_output]
+ # )
+
+ self.openstack(
+ 'image remove project ' +
+ self.NAME + ' ' +
+ my_project_id
+ )
+
+ # else:
+ # # Test not shared
+ # self.assertRaises(
+ # image_exceptions.HTTPForbidden,
+ # self.openstack,
+ # 'image add project ' +
+ # self.NAME + ' ' +
+ # my_project_id
+ # )
+ # self.openstack(
+ # 'image set ' +
+ # '--share ' +
+ # self.NAME
+ # )