Skip to content

Commit 0fd3a8c

Browse files
author
Huanxuan Ao
committed
Update unit test test_extension with fake class
Add FakeExtension class in networkv2, computev2, volumev2, identityv2_0 and update unit test test/common/test_extension.py Change-Id: I94815de7801860edb7fa91a7d146455cab946652
1 parent 5293bb1 commit 0fd3a8c

5 files changed

Lines changed: 222 additions & 159 deletions

File tree

openstackclient/tests/common/test_extension.py

Lines changed: 75 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
# under the License.
1212
#
1313

14-
import copy
1514
import mock
1615

1716
from openstackclient.common import extension
@@ -29,26 +28,38 @@ class TestExtension(utils.TestCommand):
2928
def setUp(self):
3029
super(TestExtension, self).setUp()
3130

32-
self.app.client_manager.identity = identity_fakes.FakeIdentityv2Client(
31+
identity_client = identity_fakes.FakeIdentityv2Client(
3332
endpoint=fakes.AUTH_URL,
3433
token=fakes.AUTH_TOKEN,
3534
)
36-
self.identity_extensions_mock = (
37-
self.app.client_manager.identity.extensions)
35+
self.app.client_manager.identity = identity_client
36+
self.identity_extensions_mock = identity_client.extensions
3837
self.identity_extensions_mock.reset_mock()
3938

40-
self.app.client_manager.compute = compute_fakes.FakeComputev2Client(
39+
compute_client = compute_fakes.FakeComputev2Client(
4140
endpoint=fakes.AUTH_URL,
4241
token=fakes.AUTH_TOKEN,
4342
)
43+
self.app.client_manager.compute = compute_client
44+
compute_client.list_extensions = mock.Mock()
45+
self.compute_extensions_mock = compute_client.list_extensions
46+
self.compute_extensions_mock.reset_mock()
4447

45-
self.app.client_manager.volume = volume_fakes.FakeVolumeClient(
48+
volume_client = volume_fakes.FakeVolumeClient(
4649
endpoint=fakes.AUTH_URL,
4750
token=fakes.AUTH_TOKEN,
4851
)
52+
self.app.client_manager.volume = volume_client
53+
volume_client.list_extensions = mock.Mock()
54+
self.volume_extensions_mock = volume_client.list_extensions
55+
self.volume_extensions_mock.reset_mock()
4956

50-
network_client = network_fakes.FakeNetworkV2Client()
57+
network_client = network_fakes.FakeNetworkV2Client(
58+
endpoint=fakes.AUTH_URL,
59+
token=fakes.AUTH_TOKEN,
60+
)
5161
self.app.client_manager.network = network_client
62+
network_client.extensions = mock.Mock()
5263
self.network_extensions_mock = network_client.extensions
5364
self.network_extensions_mock.reset_mock()
5465

@@ -59,38 +70,21 @@ class TestExtensionList(TestExtension):
5970
long_columns = ('Name', 'Namespace', 'Description', 'Alias', 'Updated',
6071
'Links')
6172

73+
volume_extension = volume_fakes.FakeExtension.create_one_extension()
74+
identity_extension = identity_fakes.FakeExtension.create_one_extension()
75+
compute_extension = compute_fakes.FakeExtension.create_one_extension()
76+
network_extension = network_fakes.FakeExtension.create_one_extension()
77+
6278
def setUp(self):
6379
super(TestExtensionList, self).setUp()
6480

6581
self.identity_extensions_mock.list.return_value = [
66-
fakes.FakeResource(
67-
None,
68-
copy.deepcopy(identity_fakes.EXTENSION),
69-
loaded=True,
70-
),
71-
]
72-
73-
self.app.client_manager.compute.list_extensions = mock.Mock()
74-
self.compute_extensions_mock = (
75-
self.app.client_manager.compute.list_extensions)
82+
self.identity_extension]
7683
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)
84+
self.compute_extension]
8785
self.volume_extensions_mock.show_all.return_value = [
88-
fakes.FakeResource(
89-
None,
90-
copy.deepcopy(volume_fakes.EXTENSION),
91-
loaded=True,
92-
),
93-
]
86+
self.volume_extension]
87+
self.network_extensions_mock.return_value = [self.network_extension]
9488

9589
# Get the command object to test
9690
self.cmd = extension.ListExtension(self.app, None)
@@ -115,24 +109,24 @@ def test_extension_list_no_options(self):
115109
verifylist = []
116110
datalist = (
117111
(
118-
identity_fakes.extension_name,
119-
identity_fakes.extension_alias,
120-
identity_fakes.extension_description,
112+
self.identity_extension.name,
113+
self.identity_extension.alias,
114+
self.identity_extension.description,
121115
),
122116
(
123-
compute_fakes.extension_name,
124-
compute_fakes.extension_alias,
125-
compute_fakes.extension_description,
117+
self.compute_extension.name,
118+
self.compute_extension.alias,
119+
self.compute_extension.description,
126120
),
127121
(
128-
volume_fakes.extension_name,
129-
volume_fakes.extension_alias,
130-
volume_fakes.extension_description,
122+
self.volume_extension.name,
123+
self.volume_extension.alias,
124+
self.volume_extension.description,
131125
),
132126
(
133-
network_fakes.extension_name,
134-
network_fakes.extension_alias,
135-
network_fakes.extension_description,
127+
self.network_extension.name,
128+
self.network_extension.alias,
129+
self.network_extension.description,
136130
),
137131
)
138132
self._test_extension_list_helper(arglist, verifylist, datalist)
@@ -150,36 +144,36 @@ def test_extension_list_long(self):
150144
]
151145
datalist = (
152146
(
153-
identity_fakes.extension_name,
154-
identity_fakes.extension_namespace,
155-
identity_fakes.extension_description,
156-
identity_fakes.extension_alias,
157-
identity_fakes.extension_updated,
158-
identity_fakes.extension_links,
147+
self.identity_extension.name,
148+
self.identity_extension.namespace,
149+
self.identity_extension.description,
150+
self.identity_extension.alias,
151+
self.identity_extension.updated,
152+
self.identity_extension.links,
159153
),
160154
(
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,
155+
self.compute_extension.name,
156+
self.compute_extension.namespace,
157+
self.compute_extension.description,
158+
self.compute_extension.alias,
159+
self.compute_extension.updated,
160+
self.compute_extension.links,
167161
),
168162
(
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,
163+
self.volume_extension.name,
164+
self.volume_extension.namespace,
165+
self.volume_extension.description,
166+
self.volume_extension.alias,
167+
self.volume_extension.updated,
168+
self.volume_extension.links,
175169
),
176170
(
177-
network_fakes.extension_name,
178-
network_fakes.extension_namespace,
179-
network_fakes.extension_description,
180-
network_fakes.extension_alias,
181-
network_fakes.extension_updated,
182-
network_fakes.extension_links,
171+
self.network_extension.name,
172+
self.network_extension.namespace,
173+
self.network_extension.description,
174+
self.network_extension.alias,
175+
self.network_extension.updated,
176+
self.network_extension.links,
183177
),
184178
)
185179
self._test_extension_list_helper(arglist, verifylist, datalist, True)
@@ -196,9 +190,9 @@ def test_extension_list_identity(self):
196190
('identity', True),
197191
]
198192
datalist = ((
199-
identity_fakes.extension_name,
200-
identity_fakes.extension_alias,
201-
identity_fakes.extension_description,
193+
self.identity_extension.name,
194+
self.identity_extension.alias,
195+
self.identity_extension.description,
202196
), )
203197
self._test_extension_list_helper(arglist, verifylist, datalist)
204198
self.identity_extensions_mock.list.assert_called_with()
@@ -212,9 +206,9 @@ def test_extension_list_network(self):
212206
]
213207
datalist = (
214208
(
215-
network_fakes.extension_name,
216-
network_fakes.extension_alias,
217-
network_fakes.extension_description,
209+
self.network_extension.name,
210+
self.network_extension.alias,
211+
self.network_extension.description,
218212
),
219213
)
220214
self._test_extension_list_helper(arglist, verifylist, datalist)
@@ -228,9 +222,9 @@ def test_extension_list_compute(self):
228222
('compute', True),
229223
]
230224
datalist = ((
231-
compute_fakes.extension_name,
232-
compute_fakes.extension_alias,
233-
compute_fakes.extension_description,
225+
self.compute_extension.name,
226+
self.compute_extension.alias,
227+
self.compute_extension.description,
234228
), )
235229
self._test_extension_list_helper(arglist, verifylist, datalist)
236230
self.compute_extensions_mock.show_all.assert_called_with()
@@ -243,9 +237,9 @@ def test_extension_list_volume(self):
243237
('volume', True),
244238
]
245239
datalist = ((
246-
volume_fakes.extension_name,
247-
volume_fakes.extension_alias,
248-
volume_fakes.extension_description,
240+
self.volume_extension.name,
241+
self.volume_extension.alias,
242+
self.volume_extension.description,
249243
), )
250244
self._test_extension_list_helper(arglist, verifylist, datalist)
251245
self.volume_extensions_mock.show_all.assert_called_with()

openstackclient/tests/compute/v2/fakes.py

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,6 @@
2424
from openstackclient.tests import utils
2525
from openstackclient.tests.volume.v2 import fakes as volume_fakes
2626

27-
28-
extension_name = 'Multinic'
29-
extension_namespace = 'http://docs.openstack.org/compute/ext/'\
30-
'multinic/api/v1.1'
31-
extension_description = 'Multiple network support'
32-
extension_updated = '2014-01-07T12:00:0-00:00'
33-
extension_alias = 'NMN'
34-
extension_links = '[{"href":'\
35-
'"https://github.com/openstack/compute-api", "type":'\
36-
' "text/html", "rel": "describedby"}]'
37-
38-
EXTENSION = {
39-
'name': extension_name,
40-
'namespace': extension_namespace,
41-
'description': extension_description,
42-
'updated': extension_updated,
43-
'alias': extension_alias,
44-
'links': extension_links,
45-
}
46-
4727
floating_ip_num = 100
4828
fix_ip_num = 100
4929
injected_file_num = 100
@@ -259,6 +239,42 @@ def create_agents(attrs=None, count=2):
259239
return agents
260240

261241

242+
class FakeExtension(object):
243+
"""Fake one or more extension."""
244+
245+
@staticmethod
246+
def create_one_extension(attrs=None):
247+
"""Create a fake extension.
248+
249+
:param Dictionary attrs:
250+
A dictionary with all attributes
251+
:return:
252+
A FakeResource object with name, namespace, etc.
253+
"""
254+
attrs = attrs or {}
255+
256+
# Set default attributes.
257+
extension_info = {
258+
'name': 'name-' + uuid.uuid4().hex,
259+
'namespace': (
260+
'http://docs.openstack.org/compute/ext/multinic/api/v1.1'),
261+
'description': 'description-' + uuid.uuid4().hex,
262+
'updated': '2014-01-07T12:00:0-00:00',
263+
'alias': 'NMN',
264+
'links': ('[{"href":'
265+
'"https://github.com/openstack/compute-api", "type":'
266+
' "text/html", "rel": "describedby"}]')
267+
}
268+
269+
# Overwrite default attributes.
270+
extension_info.update(attrs)
271+
272+
extension = fakes.FakeResource(
273+
info=copy.deepcopy(extension_info),
274+
loaded=True)
275+
return extension
276+
277+
262278
class FakeHypervisor(object):
263279
"""Fake one or more hypervisor."""
264280

openstackclient/tests/identity/v2_0/fakes.py

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
# under the License.
1414
#
1515

16+
import copy
1617
import mock
18+
import uuid
1719

1820
from openstackclient.tests import fakes
1921
from openstackclient.tests import utils
@@ -106,26 +108,6 @@
106108
'service_id': endpoint_service_id,
107109
}
108110

109-
extension_name = 'OpenStack Keystone User CRUD'
110-
extension_namespace = 'http://docs.openstack.org/identity/'\
111-
'api/ext/OS-KSCRUD/v1.0'
112-
extension_description = 'OpenStack extensions to Keystone v2.0 API'\
113-
' enabling User Operations.'
114-
extension_updated = '2013-07-07T12:00:0-00:00'
115-
extension_alias = 'OS-KSCRUD'
116-
extension_links = '[{"href":'\
117-
'"https://github.com/openstack/identity-api", "type":'\
118-
' "text/html", "rel": "describedby"}]'
119-
120-
EXTENSION = {
121-
'name': extension_name,
122-
'namespace': extension_namespace,
123-
'description': extension_description,
124-
'updated': extension_updated,
125-
'alias': extension_alias,
126-
'links': extension_links,
127-
}
128-
129111

130112
class FakeIdentityv2Client(object):
131113

@@ -166,3 +148,39 @@ def setUp(self):
166148
endpoint=fakes.AUTH_URL,
167149
token=fakes.AUTH_TOKEN,
168150
)
151+
152+
153+
class FakeExtension(object):
154+
"""Fake one or more extension."""
155+
156+
@staticmethod
157+
def create_one_extension(attrs=None):
158+
"""Create a fake extension.
159+
160+
:param Dictionary attrs:
161+
A dictionary with all attributes
162+
:return:
163+
A FakeResource object with name, namespace, etc.
164+
"""
165+
attrs = attrs or {}
166+
167+
# Set default attributes.
168+
extension_info = {
169+
'name': 'name-' + uuid.uuid4().hex,
170+
'namespace': ('http://docs.openstack.org/identity/'
171+
'api/ext/OS-KSCRUD/v1.0'),
172+
'description': 'description-' + uuid.uuid4().hex,
173+
'updated': '2013-07-07T12:00:0-00:00',
174+
'alias': 'OS-KSCRUD',
175+
'links': ('[{"href":'
176+
'"https://github.com/openstack/identity-api", "type":'
177+
' "text/html", "rel": "describedby"}]')
178+
}
179+
180+
# Overwrite default attributes.
181+
extension_info.update(attrs)
182+
183+
extension = fakes.FakeResource(
184+
info=copy.deepcopy(extension_info),
185+
loaded=True)
186+
return extension

0 commit comments

Comments
 (0)