Merge "Enhance list extension unit test"
This commit is contained in:
@@ -12,13 +12,16 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
import mock
|
||||||
|
|
||||||
from openstackclient.common import extension
|
from openstackclient.common import extension
|
||||||
from openstackclient.tests import fakes
|
from openstackclient.tests import fakes
|
||||||
from openstackclient.tests import utils
|
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.identity.v2_0 import fakes as identity_fakes
|
||||||
from openstackclient.tests.network.v2 import fakes as network_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):
|
class TestExtension(utils.TestCommand):
|
||||||
@@ -34,6 +37,16 @@ class TestExtension(utils.TestCommand):
|
|||||||
self.app.client_manager.identity.extensions)
|
self.app.client_manager.identity.extensions)
|
||||||
self.identity_extensions_mock.reset_mock()
|
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()
|
network_client = network_fakes.FakeNetworkV2Client()
|
||||||
self.app.client_manager.network = network_client
|
self.app.client_manager.network = network_client
|
||||||
self.network_extensions_mock = network_client.extensions
|
self.network_extensions_mock = network_client.extensions
|
||||||
@@ -43,6 +56,8 @@ class TestExtension(utils.TestCommand):
|
|||||||
class TestExtensionList(TestExtension):
|
class TestExtensionList(TestExtension):
|
||||||
|
|
||||||
columns = ('Name', 'Alias', 'Description')
|
columns = ('Name', 'Alias', 'Description')
|
||||||
|
long_columns = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
|
||||||
|
'Links')
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestExtensionList, self).setUp()
|
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
|
# Get the command object to test
|
||||||
self.cmd = extension.ListExtension(self.app, None)
|
self.cmd = extension.ListExtension(self.app, None)
|
||||||
|
|
||||||
def test_extension_list_no_options(self):
|
def _test_extension_list_helper(self, arglist, verifylist,
|
||||||
arglist = []
|
expected_data, long=False):
|
||||||
verifylist = []
|
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
# In base command class Lister in cliff, abstract method take_action()
|
# In base command class Lister in cliff, abstract method take_action()
|
||||||
@@ -68,23 +104,42 @@ class TestExtensionList(TestExtension):
|
|||||||
# containing the data to be listed.
|
# containing the data to be listed.
|
||||||
columns, data = self.cmd.take_action(parsed_args)
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
# no args should output from all services
|
if long:
|
||||||
self.identity_extensions_mock.list.assert_called_with()
|
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 = (
|
datalist = (
|
||||||
(
|
(
|
||||||
identity_fakes.extension_name,
|
identity_fakes.extension_name,
|
||||||
identity_fakes.extension_alias,
|
identity_fakes.extension_alias,
|
||||||
identity_fakes.extension_description,
|
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_name,
|
||||||
network_fakes.extension_alias,
|
network_fakes.extension_alias,
|
||||||
network_fakes.extension_description,
|
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):
|
def test_extension_list_long(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -93,19 +148,6 @@ class TestExtensionList(TestExtension):
|
|||||||
verifylist = [
|
verifylist = [
|
||||||
('long', True),
|
('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 = (
|
datalist = (
|
||||||
(
|
(
|
||||||
identity_fakes.extension_name,
|
identity_fakes.extension_name,
|
||||||
@@ -115,6 +157,22 @@ class TestExtensionList(TestExtension):
|
|||||||
identity_fakes.extension_updated,
|
identity_fakes.extension_updated,
|
||||||
identity_fakes.extension_links,
|
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_name,
|
||||||
network_fakes.extension_namespace,
|
network_fakes.extension_namespace,
|
||||||
@@ -124,7 +182,11 @@ class TestExtensionList(TestExtension):
|
|||||||
network_fakes.extension_links,
|
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):
|
def test_extension_list_identity(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -133,22 +195,13 @@ class TestExtensionList(TestExtension):
|
|||||||
verifylist = [
|
verifylist = [
|
||||||
('identity', True),
|
('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 = ((
|
datalist = ((
|
||||||
identity_fakes.extension_name,
|
identity_fakes.extension_name,
|
||||||
identity_fakes.extension_alias,
|
identity_fakes.extension_alias,
|
||||||
identity_fakes.extension_description,
|
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):
|
def test_extension_list_network(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -157,13 +210,6 @@ class TestExtensionList(TestExtension):
|
|||||||
verifylist = [
|
verifylist = [
|
||||||
('network', True),
|
('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 = (
|
datalist = (
|
||||||
(
|
(
|
||||||
network_fakes.extension_name,
|
network_fakes.extension_name,
|
||||||
@@ -171,4 +217,35 @@ class TestExtensionList(TestExtension):
|
|||||||
network_fakes.extension_description,
|
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
|
'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):
|
class FakeVolumeClient(object):
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user