Skip to content

Commit 4856eb1

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Enhance list extension unit test"
2 parents e003675 + 4208f02 commit 4856eb1

2 files changed

Lines changed: 137 additions & 40 deletions

File tree

openstackclient/tests/common/test_extension.py

Lines changed: 117 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@
1212
#
1313

1414
import copy
15+
import mock
1516

1617
from openstackclient.common import extension
1718
from openstackclient.tests import fakes
1819
from openstackclient.tests import utils
1920

21+
from openstackclient.tests.compute.v2 import fakes as compute_fakes
2022
from openstackclient.tests.identity.v2_0 import fakes as identity_fakes
2123
from openstackclient.tests.network.v2 import fakes as network_fakes
24+
from openstackclient.tests.volume.v2 import fakes as volume_fakes
2225

2326

2427
class TestExtension(utils.TestCommand):
@@ -34,6 +37,16 @@ def setUp(self):
3437
self.app.client_manager.identity.extensions)
3538
self.identity_extensions_mock.reset_mock()
3639

40+
self.app.client_manager.compute = compute_fakes.FakeComputev2Client(
41+
endpoint=fakes.AUTH_URL,
42+
token=fakes.AUTH_TOKEN,
43+
)
44+
45+
self.app.client_manager.volume = volume_fakes.FakeVolumeClient(
46+
endpoint=fakes.AUTH_URL,
47+
token=fakes.AUTH_TOKEN,
48+
)
49+
3750
network_client = network_fakes.FakeNetworkV2Client()
3851
self.app.client_manager.network = network_client
3952
self.network_extensions_mock = network_client.extensions
@@ -43,6 +56,8 @@ def setUp(self):
4356
class TestExtensionList(TestExtension):
4457

4558
columns = ('Name', 'Alias', 'Description')
59+
long_columns = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
60+
'Links')
4661

4762
def setUp(self):
4863
super(TestExtensionList, self).setUp()
@@ -55,36 +70,76 @@ def setUp(self):
5570
),
5671
]
5772

73+
self.app.client_manager.compute.list_extensions = mock.Mock()
74+
self.compute_extensions_mock = (
75+
self.app.client_manager.compute.list_extensions)
76+
self.compute_extensions_mock.show_all.return_value = [
77+
fakes.FakeResource(
78+
None,
79+
copy.deepcopy(compute_fakes.EXTENSION),
80+
loaded=True,
81+
),
82+
]
83+
84+
self.app.client_manager.volume.list_extensions = mock.Mock()
85+
self.volume_extensions_mock = (
86+
self.app.client_manager.volume.list_extensions)
87+
self.volume_extensions_mock.show_all.return_value = [
88+
fakes.FakeResource(
89+
None,
90+
copy.deepcopy(volume_fakes.EXTENSION),
91+
loaded=True,
92+
),
93+
]
94+
5895
# Get the command object to test
5996
self.cmd = extension.ListExtension(self.app, None)
6097

61-
def test_extension_list_no_options(self):
62-
arglist = []
63-
verifylist = []
98+
def _test_extension_list_helper(self, arglist, verifylist,
99+
expected_data, long=False):
64100
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
65101

66102
# In base command class Lister in cliff, abstract method take_action()
67103
# returns a tuple containing the column names and an iterable
68104
# containing the data to be listed.
69105
columns, data = self.cmd.take_action(parsed_args)
70106

71-
# no args should output from all services
72-
self.identity_extensions_mock.list.assert_called_with()
107+
if long:
108+
self.assertEqual(self.long_columns, columns)
109+
else:
110+
self.assertEqual(self.columns, columns)
111+
self.assertEqual(expected_data, tuple(data))
73112

74-
self.assertEqual(self.columns, columns)
113+
def test_extension_list_no_options(self):
114+
arglist = []
115+
verifylist = []
75116
datalist = (
76117
(
77118
identity_fakes.extension_name,
78119
identity_fakes.extension_alias,
79120
identity_fakes.extension_description,
80121
),
122+
(
123+
compute_fakes.extension_name,
124+
compute_fakes.extension_alias,
125+
compute_fakes.extension_description,
126+
),
127+
(
128+
volume_fakes.extension_name,
129+
volume_fakes.extension_alias,
130+
volume_fakes.extension_description,
131+
),
81132
(
82133
network_fakes.extension_name,
83134
network_fakes.extension_alias,
84135
network_fakes.extension_description,
85136
),
86137
)
87-
self.assertEqual(datalist, tuple(data))
138+
self._test_extension_list_helper(arglist, verifylist, datalist)
139+
self.identity_extensions_mock.list.assert_called_with()
140+
self.compute_extensions_mock.show_all.assert_called_with()
141+
self.volume_extensions_mock.show_all.assert_called_with()
142+
self.network_extensions_mock.assert_called_with()
88143

89144
def test_extension_list_long(self):
90145
arglist = [
@@ -93,19 +148,6 @@ def test_extension_list_long(self):
93148
verifylist = [
94149
('long', True),
95150
]
96-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
97-
98-
# In base command class Lister in cliff, abstract method take_action()
99-
# returns a tuple containing the column names and an iterable
100-
# containing the data to be listed.
101-
columns, data = self.cmd.take_action(parsed_args)
102-
103-
# no args should output from all services
104-
self.identity_extensions_mock.list.assert_called_with()
105-
106-
collist = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
107-
'Links')
108-
self.assertEqual(collist, columns)
109151
datalist = (
110152
(
111153
identity_fakes.extension_name,
@@ -115,6 +157,22 @@ def test_extension_list_long(self):
115157
identity_fakes.extension_updated,
116158
identity_fakes.extension_links,
117159
),
160+
(
161+
compute_fakes.extension_name,
162+
compute_fakes.extension_namespace,
163+
compute_fakes.extension_description,
164+
compute_fakes.extension_alias,
165+
compute_fakes.extension_updated,
166+
compute_fakes.extension_links,
167+
),
168+
(
169+
volume_fakes.extension_name,
170+
volume_fakes.extension_namespace,
171+
volume_fakes.extension_description,
172+
volume_fakes.extension_alias,
173+
volume_fakes.extension_updated,
174+
volume_fakes.extension_links,
175+
),
118176
(
119177
network_fakes.extension_name,
120178
network_fakes.extension_namespace,
@@ -124,7 +182,11 @@ def test_extension_list_long(self):
124182
network_fakes.extension_links,
125183
),
126184
)
127-
self.assertEqual(datalist, tuple(data))
185+
self._test_extension_list_helper(arglist, verifylist, datalist, True)
186+
self.identity_extensions_mock.list.assert_called_with()
187+
self.compute_extensions_mock.show_all.assert_called_with()
188+
self.volume_extensions_mock.show_all.assert_called_with()
189+
self.network_extensions_mock.assert_called_with()
128190

129191
def test_extension_list_identity(self):
130192
arglist = [
@@ -133,22 +195,13 @@ def test_extension_list_identity(self):
133195
verifylist = [
134196
('identity', True),
135197
]
136-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
137-
138-
# In base command class Lister in cliff, abstract method take_action()
139-
# returns a tuple containing the column names and an iterable
140-
# containing the data to be listed.
141-
columns, data = self.cmd.take_action(parsed_args)
142-
143-
self.identity_extensions_mock.list.assert_called_with()
144-
145-
self.assertEqual(self.columns, columns)
146198
datalist = ((
147199
identity_fakes.extension_name,
148200
identity_fakes.extension_alias,
149201
identity_fakes.extension_description,
150202
), )
151-
self.assertEqual(datalist, tuple(data))
203+
self._test_extension_list_helper(arglist, verifylist, datalist)
204+
self.identity_extensions_mock.list.assert_called_with()
152205

153206
def test_extension_list_network(self):
154207
arglist = [
@@ -157,18 +210,42 @@ def test_extension_list_network(self):
157210
verifylist = [
158211
('network', True),
159212
]
160-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
161-
162-
columns, data = self.cmd.take_action(parsed_args)
163-
164-
self.network_extensions_mock.assert_called_with()
165-
166-
self.assertEqual(self.columns, columns)
167213
datalist = (
168214
(
169215
network_fakes.extension_name,
170216
network_fakes.extension_alias,
171217
network_fakes.extension_description,
172218
),
173219
)
174-
self.assertEqual(datalist, tuple(data))
220+
self._test_extension_list_helper(arglist, verifylist, datalist)
221+
self.network_extensions_mock.assert_called_with()
222+
223+
def test_extension_list_compute(self):
224+
arglist = [
225+
'--compute',
226+
]
227+
verifylist = [
228+
('compute', True),
229+
]
230+
datalist = ((
231+
compute_fakes.extension_name,
232+
compute_fakes.extension_alias,
233+
compute_fakes.extension_description,
234+
), )
235+
self._test_extension_list_helper(arglist, verifylist, datalist)
236+
self.compute_extensions_mock.show_all.assert_called_with()
237+
238+
def test_extension_list_volume(self):
239+
arglist = [
240+
'--volume',
241+
]
242+
verifylist = [
243+
('volume', True),
244+
]
245+
datalist = ((
246+
volume_fakes.extension_name,
247+
volume_fakes.extension_alias,
248+
volume_fakes.extension_description,
249+
), )
250+
self._test_extension_list_helper(arglist, verifylist, datalist)
251+
self.volume_extensions_mock.show_all.assert_called_with()

openstackclient/tests/volume/v2/fakes.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,26 @@
211211
'name': image_name
212212
}
213213

214+
extension_name = 'SchedulerHints'
215+
extension_namespace = 'http://docs.openstack.org/'\
216+
'block-service/ext/scheduler-hints/api/v2'
217+
extension_description = 'Pass arbitrary key/value'\
218+
'pairs to the scheduler.'
219+
extension_updated = '2013-04-18T00:00:00+00:00'
220+
extension_alias = 'OS-SCH-HNT'
221+
extension_links = '[{"href":'\
222+
'"https://github.com/openstack/block-api", "type":'\
223+
' "text/html", "rel": "describedby"}]'
224+
225+
EXTENSION = {
226+
'name': extension_name,
227+
'namespace': extension_namespace,
228+
'description': extension_description,
229+
'updated': extension_updated,
230+
'alias': extension_alias,
231+
'links': extension_links,
232+
}
233+
214234

215235
class FakeVolumeClient(object):
216236

0 commit comments

Comments
 (0)