diff --git a/keystoneclient/utils.py b/keystoneclient/utils.py index db3ce74a6..479f7c01c 100644 --- a/keystoneclient/utils.py +++ b/keystoneclient/utils.py @@ -108,7 +108,7 @@ def find_resource(manager, name_or_id): msg = ("Multiple %s matches found for '%s', use an ID to be more" " specific." % (manager.resource_class.__name__.lower(), name_or_id)) - raise exc.CommandError(msg) + raise exceptions.CommandError(msg) def unauthenticated(f): diff --git a/keystoneclient/v3/users.py b/keystoneclient/v3/users.py index f4870939e..7bd781f62 100644 --- a/keystoneclient/v3/users.py +++ b/keystoneclient/v3/users.py @@ -17,6 +17,7 @@ import logging from keystoneclient import base +from keystoneclient import exceptions LOG = logging.getLogger(__name__) diff --git a/tests/test_utils.py b/tests/test_utils.py index ea3b039e2..94c4a09e6 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -38,6 +38,9 @@ class FakeManager(object): raise exceptions.NotFound(resource_id) def find(self, name=None): + if name == '9999': + # NOTE(morganfainberg): special case that raises NoUniqueMatch. + raise exceptions.NoUniqueMatch() for resource_id, resource in self.resources.items(): if resource['name'] == str(name): return resource @@ -76,3 +79,9 @@ class FindResourceTestCase(test_utils.TestCase): def test_find_by_int_name(self): output = utils.find_resource(self.manager, 9876) self.assertEqual(output, self.manager.resources['5678']) + + def test_find_no_unique_match(self): + self.assertRaises(exceptions.CommandError, + utils.find_resource, + self.manager, + 9999) diff --git a/tests/v3/test_users.py b/tests/v3/test_users.py index d1974b2ee..9982feab2 100644 --- a/tests/v3/test_users.py +++ b/tests/v3/test_users.py @@ -20,6 +20,7 @@ import uuid import requests +from keystoneclient import exceptions from keystoneclient.v3 import users from tests.v3 import utils @@ -63,6 +64,10 @@ class UserTests(utils.TestCase, utils.CrudTests): self.mox.ReplayAll() self.manager.add_to_group(user=ref['id'], group=group_id) + self.assertRaises(exceptions.ValidationError, + self.manager.remove_from_group, + user=ref['id'], + group=None) def test_list_users_in_group(self): group_id = uuid.uuid4().hex @@ -110,6 +115,11 @@ class UserTests(utils.TestCase, utils.CrudTests): self.manager.check_in_group(user=ref['id'], group=group_id) + self.assertRaises(exceptions.ValidationError, + self.manager.check_in_group, + user=ref['id'], + group=None) + def test_remove_user_from_group(self): group_id = uuid.uuid4().hex ref = self.new_ref() @@ -131,6 +141,10 @@ class UserTests(utils.TestCase, utils.CrudTests): self.mox.ReplayAll() self.manager.remove_from_group(user=ref['id'], group=group_id) + self.assertRaises(exceptions.ValidationError, + self.manager.remove_from_group, + user=ref['id'], + group=None) def test_create_with_project(self): # Can create a user with the deprecated project option rather than