Skip to content

Commit 97659ad

Browse files
author
Dean Troyer
committed
Add tests for find_resource()
Add a couple of tests for utils.find_resource() for the odd resources and managers without resource_class. Change-Id: I2ed9b491d1361b5259b3a5f80b4fac787a7087c1
1 parent 83282bc commit 97659ad

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

openstackclient/tests/common/test_utils.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,26 @@
2020

2121
from openstackclient.common import exceptions
2222
from openstackclient.common import utils
23+
from openstackclient.tests import fakes
2324
from openstackclient.tests import utils as test_utils
2425

2526
PASSWORD = "Pa$$w0rd"
2627
WASSPORD = "Wa$$p0rd"
2728
DROWSSAP = "dr0w$$aP"
2829

2930

31+
class FakeOddballResource(fakes.FakeResource):
32+
33+
def get(self, attr):
34+
"""get() is needed for utils.find_resource()"""
35+
if attr == 'id':
36+
return self.id
37+
elif attr == 'name':
38+
return self.name
39+
else:
40+
return None
41+
42+
3043
class TestUtils(test_utils.TestCase):
3144

3245
def test_get_password_good(self):
@@ -242,6 +255,47 @@ def test_find_resource_find_no_unique(self):
242255
self.manager.get.assert_called_with(self.name)
243256
self.manager.find.assert_called_with(name=self.name)
244257

258+
def test_find_resource_silly_resource(self):
259+
# We need a resource with no resource_class for this test, start fresh
260+
self.manager = mock.Mock()
261+
self.manager.get = mock.Mock(side_effect=Exception('Boom!'))
262+
self.manager.find = mock.Mock(
263+
side_effect=AttributeError(
264+
"'Controller' object has no attribute 'find'",
265+
)
266+
)
267+
silly_resource = FakeOddballResource(
268+
None,
269+
{'id': '12345', 'name': self.name},
270+
loaded=True,
271+
)
272+
self.manager.list = mock.Mock(
273+
return_value=[silly_resource, ],
274+
)
275+
result = utils.find_resource(self.manager, self.name)
276+
self.assertEqual(silly_resource, result)
277+
self.manager.get.assert_called_with(self.name)
278+
self.manager.find.assert_called_with(name=self.name)
279+
280+
def test_find_resource_silly_resource_not_found(self):
281+
# We need a resource with no resource_class for this test, start fresh
282+
self.manager = mock.Mock()
283+
self.manager.get = mock.Mock(side_effect=Exception('Boom!'))
284+
self.manager.find = mock.Mock(
285+
side_effect=AttributeError(
286+
"'Controller' object has no attribute 'find'",
287+
)
288+
)
289+
self.manager.list = mock.Mock(return_value=[])
290+
result = self.assertRaises(exceptions.CommandError,
291+
utils.find_resource,
292+
self.manager,
293+
self.name)
294+
self.assertEqual("Could not find resource legos",
295+
str(result))
296+
self.manager.get.assert_called_with(self.name)
297+
self.manager.find.assert_called_with(name=self.name)
298+
245299
def test_format_dict(self):
246300
expected = "a='b', c='d', e='f'"
247301
self.assertEqual(expected,

0 commit comments

Comments
 (0)