summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFang Zhen <zhen.fang@easystack.cn>2016-03-10 18:51:22 +0800
committerFang Zhen <zhen.fang@easystack.cn>2016-03-11 10:39:15 +0800
commit4208f02a20af6d7561bd925406893b261a5fbbe1 (patch)
treebc6849cef1675c2717a4a22cd77ee81aa32d8a51
parent4bb48c088d6be71a138990dd2a0fe25ec269ba9e (diff)
downloadpython-openstackclient-4208f02a20af6d7561bd925406893b261a5fbbe1.tar.gz
Enhance list extension unit test
Extension list involves identity, compute, volume and network. Current test covers only identity and network. This patch added test against compute and volum. Also refactored current implentation. Change-Id: If9b36cba24c50a817a17f685801e418fb898596a
-rw-r--r--openstackclient/tests/common/test_extension.py157
-rw-r--r--openstackclient/tests/volume/v2/fakes.py20
2 files changed, 137 insertions, 40 deletions
diff --git a/openstackclient/tests/common/test_extension.py b/openstackclient/tests/common/test_extension.py
index 66532827..0736a3e5 100644
--- a/openstackclient/tests/common/test_extension.py
+++ b/openstackclient/tests/common/test_extension.py
@@ -12,13 +12,16 @@
#
import copy
+import mock
from openstackclient.common import extension
from openstackclient.tests import fakes
from openstackclient.tests import utils
+from openstackclient.tests.compute.v2 import fakes as compute_fakes
from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
from openstackclient.tests.network.v2 import fakes as network_fakes
+from openstackclient.tests.volume.v2 import fakes as volume_fakes
class TestExtension(utils.TestCommand):
@@ -34,6 +37,16 @@ class TestExtension(utils.TestCommand):
self.app.client_manager.identity.extensions)
self.identity_extensions_mock.reset_mock()
+ self.app.client_manager.compute = compute_fakes.FakeComputev2Client(
+ endpoint=fakes.AUTH_URL,
+ token=fakes.AUTH_TOKEN,
+ )
+
+ self.app.client_manager.volume = volume_fakes.FakeVolumeClient(
+ endpoint=fakes.AUTH_URL,
+ token=fakes.AUTH_TOKEN,
+ )
+
network_client = network_fakes.FakeNetworkV2Client()
self.app.client_manager.network = network_client
self.network_extensions_mock = network_client.extensions
@@ -43,6 +56,8 @@ class TestExtension(utils.TestCommand):
class TestExtensionList(TestExtension):
columns = ('Name', 'Alias', 'Description')
+ long_columns = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
+ 'Links')
def setUp(self):
super(TestExtensionList, self).setUp()
@@ -55,12 +70,33 @@ class TestExtensionList(TestExtension):
),
]
+ self.app.client_manager.compute.list_extensions = mock.Mock()
+ self.compute_extensions_mock = (
+ self.app.client_manager.compute.list_extensions)
+ self.compute_extensions_mock.show_all.return_value = [
+ fakes.FakeResource(
+ None,
+ copy.deepcopy(compute_fakes.EXTENSION),
+ loaded=True,
+ ),
+ ]
+
+ self.app.client_manager.volume.list_extensions = mock.Mock()
+ self.volume_extensions_mock = (
+ self.app.client_manager.volume.list_extensions)
+ self.volume_extensions_mock.show_all.return_value = [
+ fakes.FakeResource(
+ None,
+ copy.deepcopy(volume_fakes.EXTENSION),
+ loaded=True,
+ ),
+ ]
+
# Get the command object to test
self.cmd = extension.ListExtension(self.app, None)
- def test_extension_list_no_options(self):
- arglist = []
- verifylist = []
+ def _test_extension_list_helper(self, arglist, verifylist,
+ expected_data, long=False):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# In base command class Lister in cliff, abstract method take_action()
@@ -68,10 +104,15 @@ class TestExtensionList(TestExtension):
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
- # no args should output from all services
- self.identity_extensions_mock.list.assert_called_with()
+ if long:
+ self.assertEqual(self.long_columns, columns)
+ else:
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(expected_data, tuple(data))
- self.assertEqual(self.columns, columns)
+ def test_extension_list_no_options(self):
+ arglist = []
+ verifylist = []
datalist = (
(
identity_fakes.extension_name,
@@ -79,12 +120,26 @@ class TestExtensionList(TestExtension):
identity_fakes.extension_description,
),
(
+ compute_fakes.extension_name,
+ compute_fakes.extension_alias,
+ compute_fakes.extension_description,
+ ),
+ (
+ volume_fakes.extension_name,
+ volume_fakes.extension_alias,
+ volume_fakes.extension_description,
+ ),
+ (
network_fakes.extension_name,
network_fakes.extension_alias,
network_fakes.extension_description,
),
)
- self.assertEqual(datalist, tuple(data))
+ self._test_extension_list_helper(arglist, verifylist, datalist)
+ self.identity_extensions_mock.list.assert_called_with()
+ self.compute_extensions_mock.show_all.assert_called_with()
+ self.volume_extensions_mock.show_all.assert_called_with()
+ self.network_extensions_mock.assert_called_with()
def test_extension_list_long(self):
arglist = [
@@ -93,19 +148,6 @@ class TestExtensionList(TestExtension):
verifylist = [
('long', True),
]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- # In base command class Lister in cliff, abstract method take_action()
- # returns a tuple containing the column names and an iterable
- # containing the data to be listed.
- columns, data = self.cmd.take_action(parsed_args)
-
- # no args should output from all services
- self.identity_extensions_mock.list.assert_called_with()
-
- collist = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
- 'Links')
- self.assertEqual(collist, columns)
datalist = (
(
identity_fakes.extension_name,
@@ -116,6 +158,22 @@ class TestExtensionList(TestExtension):
identity_fakes.extension_links,
),
(
+ compute_fakes.extension_name,
+ compute_fakes.extension_namespace,
+ compute_fakes.extension_description,
+ compute_fakes.extension_alias,
+ compute_fakes.extension_updated,
+ compute_fakes.extension_links,
+ ),
+ (
+ volume_fakes.extension_name,
+ volume_fakes.extension_namespace,
+ volume_fakes.extension_description,
+ volume_fakes.extension_alias,
+ volume_fakes.extension_updated,
+ volume_fakes.extension_links,
+ ),
+ (
network_fakes.extension_name,
network_fakes.extension_namespace,
network_fakes.extension_description,
@@ -124,7 +182,11 @@ class TestExtensionList(TestExtension):
network_fakes.extension_links,
),
)
- self.assertEqual(datalist, tuple(data))
+ self._test_extension_list_helper(arglist, verifylist, datalist, True)
+ self.identity_extensions_mock.list.assert_called_with()
+ self.compute_extensions_mock.show_all.assert_called_with()
+ self.volume_extensions_mock.show_all.assert_called_with()
+ self.network_extensions_mock.assert_called_with()
def test_extension_list_identity(self):
arglist = [
@@ -133,22 +195,13 @@ class TestExtensionList(TestExtension):
verifylist = [
('identity', True),
]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- # In base command class Lister in cliff, abstract method take_action()
- # returns a tuple containing the column names and an iterable
- # containing the data to be listed.
- columns, data = self.cmd.take_action(parsed_args)
-
- self.identity_extensions_mock.list.assert_called_with()
-
- self.assertEqual(self.columns, columns)
datalist = ((
identity_fakes.extension_name,
identity_fakes.extension_alias,
identity_fakes.extension_description,
), )
- self.assertEqual(datalist, tuple(data))
+ self._test_extension_list_helper(arglist, verifylist, datalist)
+ self.identity_extensions_mock.list.assert_called_with()
def test_extension_list_network(self):
arglist = [
@@ -157,13 +210,6 @@ class TestExtensionList(TestExtension):
verifylist = [
('network', True),
]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- columns, data = self.cmd.take_action(parsed_args)
-
- self.network_extensions_mock.assert_called_with()
-
- self.assertEqual(self.columns, columns)
datalist = (
(
network_fakes.extension_name,
@@ -171,4 +217,35 @@ class TestExtensionList(TestExtension):
network_fakes.extension_description,
),
)
- self.assertEqual(datalist, tuple(data))
+ self._test_extension_list_helper(arglist, verifylist, datalist)
+ self.network_extensions_mock.assert_called_with()
+
+ def test_extension_list_compute(self):
+ arglist = [
+ '--compute',
+ ]
+ verifylist = [
+ ('compute', True),
+ ]
+ datalist = ((
+ compute_fakes.extension_name,
+ compute_fakes.extension_alias,
+ compute_fakes.extension_description,
+ ), )
+ self._test_extension_list_helper(arglist, verifylist, datalist)
+ self.compute_extensions_mock.show_all.assert_called_with()
+
+ def test_extension_list_volume(self):
+ arglist = [
+ '--volume',
+ ]
+ verifylist = [
+ ('volume', True),
+ ]
+ datalist = ((
+ volume_fakes.extension_name,
+ volume_fakes.extension_alias,
+ volume_fakes.extension_description,
+ ), )
+ self._test_extension_list_helper(arglist, verifylist, datalist)
+ self.volume_extensions_mock.show_all.assert_called_with()
diff --git a/openstackclient/tests/volume/v2/fakes.py b/openstackclient/tests/volume/v2/fakes.py
index 61d9df3a..97bbc59b 100644
--- a/openstackclient/tests/volume/v2/fakes.py
+++ b/openstackclient/tests/volume/v2/fakes.py
@@ -211,6 +211,26 @@ IMAGE = {
'name': image_name
}
+extension_name = 'SchedulerHints'
+extension_namespace = 'http://docs.openstack.org/'\
+ 'block-service/ext/scheduler-hints/api/v2'
+extension_description = 'Pass arbitrary key/value'\
+ 'pairs to the scheduler.'
+extension_updated = '2013-04-18T00:00:00+00:00'
+extension_alias = 'OS-SCH-HNT'
+extension_links = '[{"href":'\
+ '"https://github.com/openstack/block-api", "type":'\
+ ' "text/html", "rel": "describedby"}]'
+
+EXTENSION = {
+ 'name': extension_name,
+ 'namespace': extension_namespace,
+ 'description': extension_description,
+ 'updated': extension_updated,
+ 'alias': extension_alias,
+ 'links': extension_links,
+}
+
class FakeVolumeClient(object):