Merge "Enhance list extension unit test"

This commit is contained in:
Jenkins 2016-03-11 04:50:26 +00:00 committed by Gerrit Code Review
commit 4856eb144a
2 changed files with 137 additions and 40 deletions
openstackclient/tests

@ -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,23 +104,42 @@ 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,
identity_fakes.extension_alias,
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,
@ -115,6 +157,22 @@ class TestExtensionList(TestExtension):
identity_fakes.extension_updated,
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,
@ -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()

@ -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):