Julien Danjou 3758c260a0 utils.find_resource fixes + fix for volumes
Nova volumes do not have a name property but a displayName one, therefore we
modify find_resource() so it looks for this. Then, we modify the test suite
for utils.py so it uses the novaclient.base.ManagerWithFind class for its
FakeManager rather than implementing its own find() method. This way we are
sure that the utils.py functions work correctly with ManagerWithFind and its
way to search in objects list.

FakeResource class is now used, whereas it was not before.

Change-Id: I4c4838250e6987e05022e1607e8d099eb8fb7fff
Signed-off-by: Julien Danjou <julien@danjou.info>
2011-12-22 12:03:59 +01:00

75 lines
2.1 KiB
Python

from novaclient import exceptions
from novaclient import utils
from novaclient import base
from tests import utils as test_utils
UUID = '8e8ec658-c7b0-4243-bdf8-6f7f2952c0d0'
class FakeResource(object):
def __init__(self, _id, properties):
self.id = _id
try:
self.name = properties['name']
except KeyError:
pass
try:
self.displayName = properties['displayName']
except KeyError:
pass
class FakeManager(base.ManagerWithFind):
resource_class = FakeResource
resources = [
FakeResource('1234', {'name': 'entity_one'}),
FakeResource(UUID, {'name': 'entity_two'}),
FakeResource('4242', {'displayName': 'entity_three'}),
FakeResource('5678', {'name': '9876'})
]
def get(self, resource_id):
for resource in self.resources:
if resource.id == str(resource_id):
return resource
raise exceptions.NotFound(resource_id)
def list(self):
return self.resources
class FindResourceTestCase(test_utils.TestCase):
def setUp(self):
self.manager = FakeManager(None)
def test_find_none(self):
self.assertRaises(exceptions.CommandError,
utils.find_resource,
self.manager,
'asdf')
def test_find_by_integer_id(self):
output = utils.find_resource(self.manager, 1234)
self.assertEqual(output, self.manager.get('1234'))
def test_find_by_str_id(self):
output = utils.find_resource(self.manager, '1234')
self.assertEqual(output, self.manager.get('1234'))
def test_find_by_uuid(self):
output = utils.find_resource(self.manager, UUID)
self.assertEqual(output, self.manager.get(UUID))
def test_find_by_str_name(self):
output = utils.find_resource(self.manager, 'entity_one')
self.assertEqual(output, self.manager.get('1234'))
def test_find_by_str_displayname(self):
output = utils.find_resource(self.manager, 'entity_three')
self.assertEqual(output, self.manager.get('4242'))