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
2 changed files with 137 additions and 40 deletions

View File

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

View File

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