diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/identity/v2_0/token.py | 4 | ||||
| -rw-r--r-- | openstackclient/identity/v3/group.py | 121 | ||||
| -rw-r--r-- | openstackclient/identity/v3/role.py | 106 | ||||
| -rw-r--r-- | openstackclient/identity/v3/token.py | 2 | ||||
| -rw-r--r-- | openstackclient/identity/v3/user.py | 125 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v3/test_group.py | 193 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v3/test_role.py | 187 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v3/test_user.py | 183 |
8 files changed, 611 insertions, 310 deletions
diff --git a/openstackclient/identity/v2_0/token.py b/openstackclient/identity/v2_0/token.py index 5cd41bb3..fe1557a5 100644 --- a/openstackclient/identity/v2_0/token.py +++ b/openstackclient/identity/v2_0/token.py @@ -23,7 +23,7 @@ from cliff import show class CreateToken(show.ShowOne): - """Create token command""" + """Issue token command""" log = logging.getLogger(__name__ + '.CreateToken') @@ -40,7 +40,7 @@ class CreateToken(show.ShowOne): class DeleteToken(command.Command): - """Delete token command""" + """Revoke token command""" log = logging.getLogger(__name__ + '.DeleteToken') diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py index f51129c9..4eb14489 100644 --- a/openstackclient/identity/v3/group.py +++ b/openstackclient/identity/v3/group.py @@ -164,34 +164,21 @@ class DeleteGroup(command.Command): class ListGroup(lister.Lister): - """List groups and optionally roles assigned to groups""" + """List groups""" log = logging.getLogger(__name__ + '.ListGroup') def get_parser(self, prog_name): parser = super(ListGroup, self).get_parser(prog_name) parser.add_argument( - 'group', - metavar='<group>', - nargs='?', - help='Name or ID of group to list [required with --role]', - ) - parser.add_argument( - '--role', - action='store_true', - default=False, - help='List the roles assigned to <group>', - ) - domain_or_project = parser.add_mutually_exclusive_group() - domain_or_project.add_argument( '--domain', metavar='<domain>', - help='Filter list by <domain> [Only valid with --role]', + help='Filter group list by <domain>', ) - domain_or_project.add_argument( - '--project', - metavar='<project>', - help='Filter list by <project> [Only valid with --role]', + parser.add_argument( + '--user', + metavar='<user>', + help='List group memberships for <user> (name or ID)', ) parser.add_argument( '--long', @@ -205,71 +192,39 @@ class ListGroup(lister.Lister): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - if parsed_args.role: - # List roles belonging to group - - # Group is required here, bail if it is not supplied - if not parsed_args.group: - sys.stderr.write('Error: Group must be specified') - # TODO(dtroyer): This lists the commands...I want it to - # show the help for _this_ command. - self.app.DeferredHelpAction( - self.app.parser, - self.app.parser, - None, - None, - ) - return ([], []) - - group = utils.find_resource( - identity_client.groups, - parsed_args.group, - ) - - if parsed_args.domain: - columns = ('ID', 'Name', 'Domain', 'Group') - domain = utils.find_resource( - identity_client.domains, - parsed_args.domain, - ) - data = identity_client.roles.list( - group=group, - domain=domain, - ) - for group_role in data: - group_role.group = group.name - group_role.domain = domain.name - elif parsed_args.project: - columns = ('ID', 'Name', 'Project', 'Group') - project = utils.find_resource( - identity_client.projects, - parsed_args.project, - ) - data = identity_client.roles.list( - group=group, - project=project, - ) - for group_role in data: - group_role.group = group.name - group_role.project = project.name - else: - # TODO(dtroyer): raise exception here, this really is an error - sys.stderr.write("Error: Must specify --domain or --project " - "with --role\n") - return ([], []) + if parsed_args.domain: + domain = utils.find_resource( + identity_client.domains, + parsed_args.domain, + ).id + else: + domain = None + + if parsed_args.user: + user = utils.find_resource( + identity_client.users, + parsed_args.user, + ).id + else: + user = None + + # List groups + if parsed_args.long: + columns = ('ID', 'Name', 'Domain ID', 'Description') else: - # List groups - if parsed_args.long: - columns = ('ID', 'Name', 'Domain ID', 'Description') - else: - columns = ('ID', 'Name') - data = identity_client.groups.list() - - return (columns, - (utils.get_item_properties( - s, columns, - formatters={}, - ) for s in data)) + columns = ('ID', 'Name') + data = identity_client.groups.list( + domain=domain, + user=user, + ) + + return ( + columns, + (utils.get_item_properties( + s, columns, + formatters={}, + ) for s in data) + ) class RemoveUserFromGroup(command.Command): diff --git a/openstackclient/identity/v3/role.py b/openstackclient/identity/v3/role.py index 69c0aa6a..2aabc00c 100644 --- a/openstackclient/identity/v3/role.py +++ b/openstackclient/identity/v3/role.py @@ -192,10 +192,110 @@ class ListRole(lister.Lister): log = logging.getLogger(__name__ + '.ListRole') + def get_parser(self, prog_name): + parser = super(ListRole, self).get_parser(prog_name) + domain_or_project = parser.add_mutually_exclusive_group() + domain_or_project.add_argument( + '--domain', + metavar='<domain>', + help='Filter role list by <domain>', + ) + domain_or_project.add_argument( + '--project', + metavar='<project>', + help='Filter role list by <project>', + ) + user_or_group = parser.add_mutually_exclusive_group() + user_or_group.add_argument( + '--user', + metavar='<user>', + help='Name or ID of user to list roles asssigned to', + ) + user_or_group.add_argument( + '--group', + metavar='<group>', + help='Name or ID of group to list roles asssigned to', + ) + return parser + def take_action(self, parsed_args): - self.log.debug('take_action(%s)', parsed_args) - columns = ('ID', 'Name') - data = self.app.client_manager.identity.roles.list() + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + + if parsed_args.user: + user = utils.find_resource( + identity_client.users, + parsed_args.user, + ) + elif parsed_args.group: + group = utils.find_resource( + identity_client.groups, + parsed_args.group, + ) + + if parsed_args.domain: + domain = utils.find_resource( + identity_client.domains, + parsed_args.domain, + ) + elif parsed_args.project: + project = utils.find_resource( + identity_client.projects, + parsed_args.project, + ) + + # no user or group specified, list all roles in the system + if not parsed_args.user and not parsed_args.group: + columns = ('ID', 'Name') + data = identity_client.roles.list() + elif parsed_args.user and parsed_args.domain: + columns = ('ID', 'Name', 'Domain', 'User') + data = identity_client.roles.list( + user=user, + domain=domain, + ) + for user_role in data: + user_role.user = user.name + user_role.domain = domain.name + elif parsed_args.user and parsed_args.project: + columns = ('ID', 'Name', 'Project', 'User') + data = identity_client.roles.list( + user=user, + project=project, + ) + for user_role in data: + user_role.user = user.name + user_role.project = project.name + elif parsed_args.user: + columns = ('ID', 'Name') + data = identity_client.roles.list( + user=user, + domain='default', + ) + elif parsed_args.group and parsed_args.domain: + columns = ('ID', 'Name', 'Domain', 'Group') + data = identity_client.roles.list( + group=group, + domain=domain, + ) + for group_role in data: + group_role.group = group.name + group_role.domain = domain.name + elif parsed_args.group and parsed_args.project: + columns = ('ID', 'Name', 'Project', 'Group') + data = identity_client.roles.list( + group=group, + project=project, + ) + for group_role in data: + group_role.group = group.name + group_role.project = project.name + else: + sys.stderr.write("Error: If a user or group is specified, either " + "--domain or --project must also be specified to " + "list role grants.\n") + return ([], []) + return (columns, (utils.get_item_properties( s, columns, diff --git a/openstackclient/identity/v3/token.py b/openstackclient/identity/v3/token.py index b038e3fe..cd73d03a 100644 --- a/openstackclient/identity/v3/token.py +++ b/openstackclient/identity/v3/token.py @@ -149,7 +149,7 @@ class CreateRequestToken(show.ShowOne): class CreateToken(show.ShowOne): - """Create token command""" + """Issue token command""" log = logging.getLogger(__name__ + '.CreateToken') diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py index e628e884..38c34973 100644 --- a/openstackclient/identity/v3/user.py +++ b/openstackclient/identity/v3/user.py @@ -17,7 +17,6 @@ import logging import six -import sys from cliff import command from cliff import lister @@ -149,34 +148,21 @@ class DeleteUser(command.Command): class ListUser(lister.Lister): - """List users and optionally roles assigned to users""" + """List users""" log = logging.getLogger(__name__ + '.ListUser') def get_parser(self, prog_name): parser = super(ListUser, self).get_parser(prog_name) parser.add_argument( - 'user', - metavar='<user>', - nargs='?', - help='Name or ID of user to list [required with --role]', - ) - parser.add_argument( - '--role', - action='store_true', - default=False, - help='List the roles assigned to <user>', - ) - domain_or_project = parser.add_mutually_exclusive_group() - domain_or_project.add_argument( '--domain', metavar='<domain>', - help='Filter list by <domain> [Only valid with --role]', + help='Filter group list by <domain>', ) - domain_or_project.add_argument( - '--project', - metavar='<project>', - help='Filter list by <project> [Only valid with --role]', + parser.add_argument( + '--group', + metavar='<group>', + help='List memberships of <group> (name or ID)', ) parser.add_argument( '--long', @@ -190,73 +176,40 @@ class ListUser(lister.Lister): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - if parsed_args.role: - # List roles belonging to user - - # User is required here, bail if it is not supplied - if not parsed_args.user: - sys.stderr.write('Error: User must be specified') - return ([], []) - - user = utils.find_resource( - identity_client.users, - parsed_args.user, - ) - - # List a user's roles - if not parsed_args.domain and not parsed_args.project: - columns = ('ID', 'Name') - data = identity_client.roles.list( - user=user, - domain='default', - ) - # List a user's roles on a domain - elif parsed_args.user and parsed_args.domain: - columns = ('ID', 'Name', 'Domain', 'User') - domain = utils.find_resource( - identity_client.domains, - parsed_args.domain, - ) - data = identity_client.roles.list( - user=user, - domain=domain, - ) - for user_role in data: - user_role.user = user.name - user_role.domain = domain.name - # List a user's roles on a project - elif parsed_args.user and parsed_args.project: - columns = ('ID', 'Name', 'Project', 'User') - project = utils.find_resource( - identity_client.projects, - parsed_args.project, - ) - data = identity_client.roles.list( - user=user, - project=project, - ) - for user_role in data: - user_role.user = user.name - user_role.project = project.name - else: - # TODO(dtroyer): raise exception here, this really is an error - sys.stderr.write("Error: Must specify --domain or --project " - "with --role\n") - return ([], []) + if parsed_args.domain: + domain = utils.find_resource( + identity_client.domains, + parsed_args.domain, + ).id + else: + domain = None + + if parsed_args.group: + group = utils.find_resource( + identity_client.groups, + parsed_args.group, + ).id else: - # List users - if parsed_args.long: - columns = ('ID', 'Name', 'Project Id', 'Domain Id', - 'Description', 'Email', 'Enabled') - else: - columns = ('ID', 'Name') - data = self.app.client_manager.identity.users.list() - - return (columns, - (utils.get_item_properties( - s, columns, - formatters={}, - ) for s in data)) + group = None + + # List users + if parsed_args.long: + columns = ('ID', 'Name', 'Project Id', 'Domain Id', + 'Description', 'Email', 'Enabled') + else: + columns = ('ID', 'Name') + data = identity_client.users.list( + domain=domain, + group=group, + ) + + return ( + columns, + (utils.get_item_properties( + s, columns, + formatters={}, + ) for s in data) + ) class SetUser(command.Command): diff --git a/openstackclient/tests/identity/v3/test_group.py b/openstackclient/tests/identity/v3/test_group.py new file mode 100644 index 00000000..dce56362 --- /dev/null +++ b/openstackclient/tests/identity/v3/test_group.py @@ -0,0 +1,193 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +import copy + +from openstackclient.identity.v3 import group +from openstackclient.tests import fakes +from openstackclient.tests.identity.v3 import fakes as identity_fakes + + +class TestGroup(identity_fakes.TestIdentityv3): + + def setUp(self): + super(TestGroup, self).setUp() + + # Get a shortcut to the DomainManager Mock + self.domains_mock = self.app.client_manager.identity.domains + self.domains_mock.reset_mock() + + # Get a shortcut to the GroupManager Mock + self.groups_mock = self.app.client_manager.identity.groups + self.groups_mock.reset_mock() + + # Get a shortcut to the UserManager Mock + self.users_mock = self.app.client_manager.identity.users + self.users_mock.reset_mock() + + +class TestGroupList(TestGroup): + + def setUp(self): + super(TestGroupList, self).setUp() + + self.groups_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.GROUP), + loaded=True, + ) + self.groups_mock.list.return_value = [ + fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.GROUP), + loaded=True, + ), + ] + + self.domains_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.DOMAIN), + loaded=True, + ) + + self.users_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.USER), + loaded=True, + ) + + # Get the command object to test + self.cmd = group.ListGroup(self.app, None) + + def test_group_list_no_options(self): + arglist = [] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': None, + 'user': None, + } + + self.groups_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.group_id, + identity_fakes.group_name, + ), ) + self.assertEqual(datalist, tuple(data)) + + def test_group_list_domain(self): + arglist = [ + '--domain', identity_fakes.domain_id, + ] + verifylist = [ + ('domain', identity_fakes.domain_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': identity_fakes.domain_id, + 'user': None, + } + + self.groups_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.group_id, + identity_fakes.group_name, + ), ) + self.assertEqual(datalist, tuple(data)) + + def test_group_list_user(self): + arglist = [ + '--user', identity_fakes.user_name, + ] + verifylist = [ + ('user', identity_fakes.user_name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': None, + 'user': identity_fakes.user_id, + } + + self.groups_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.group_id, + identity_fakes.group_name, + ), ) + self.assertEqual(datalist, tuple(data)) + + def test_group_list_long(self): + arglist = [ + '--long', + ] + verifylist = [ + ('long', True), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': None, + 'user': None, + } + + self.groups_mock.list.assert_called_with( + **kwargs + ) + + collist = ( + 'ID', + 'Name', + 'Domain ID', + 'Description', + ) + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.group_id, + identity_fakes.group_name, + '', + '', + ), ) + self.assertEqual(datalist, tuple(data)) diff --git a/openstackclient/tests/identity/v3/test_role.py b/openstackclient/tests/identity/v3/test_role.py index 0c0551e1..fa02ecb9 100644 --- a/openstackclient/tests/identity/v3/test_role.py +++ b/openstackclient/tests/identity/v3/test_role.py @@ -296,6 +296,27 @@ class TestRoleList(TestRole): ), ] + self.domains_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.DOMAIN), + loaded=True, + ) + self.projects_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.PROJECT), + loaded=True, + ) + self.users_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.USER), + loaded=True, + ) + self.groups_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.GROUP), + loaded=True, + ) + # Get the command object to test self.cmd = role.ListRole(self.app, None) @@ -317,6 +338,172 @@ class TestRoleList(TestRole): ), ) self.assertEqual(tuple(data), datalist) + def test_user_list_user(self): + arglist = [ + '--user', identity_fakes.user_id, + ] + verifylist = [ + ('user', identity_fakes.user_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': 'default', + 'user': self.users_mock.get(), + } + # RoleManager.list(user=, group=, domain=, project=, **kwargs) + self.roles_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.role_id, + identity_fakes.role_name, + ), ) + self.assertEqual(tuple(data), datalist) + + def test_role_list_domain_user(self): + arglist = [ + '--domain', identity_fakes.domain_name, + '--user', identity_fakes.user_id, + ] + verifylist = [ + ('domain', identity_fakes.domain_name), + ('user', identity_fakes.user_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': self.domains_mock.get(), + 'user': self.users_mock.get(), + } + # RoleManager.list(user=, group=, domain=, project=, **kwargs) + self.roles_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name', 'Domain', 'User') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.role_id, + identity_fakes.role_name, + identity_fakes.domain_name, + identity_fakes.user_name, + ), ) + self.assertEqual(tuple(data), datalist) + + def test_role_list_domain_group(self): + arglist = [ + '--domain', identity_fakes.domain_name, + '--group', identity_fakes.group_id, + ] + verifylist = [ + ('domain', identity_fakes.domain_name), + ('group', identity_fakes.group_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'domain': self.domains_mock.get(), + 'group': self.groups_mock.get(), + } + # RoleManager.list(user=, group=, domain=, project=, **kwargs) + self.roles_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name', 'Domain', 'Group') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.role_id, + identity_fakes.role_name, + identity_fakes.domain_name, + identity_fakes.group_name, + ), ) + self.assertEqual(tuple(data), datalist) + + def test_role_list_project_user(self): + arglist = [ + '--project', identity_fakes.project_name, + '--user', identity_fakes.user_id, + ] + verifylist = [ + ('project', identity_fakes.project_name), + ('user', identity_fakes.user_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'project': self.projects_mock.get(), + 'user': self.users_mock.get(), + } + # RoleManager.list(user=, group=, domain=, project=, **kwargs) + self.roles_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name', 'Project', 'User') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.role_id, + identity_fakes.role_name, + identity_fakes.project_name, + identity_fakes.user_name, + ), ) + self.assertEqual(tuple(data), datalist) + + def test_role_list_project_group(self): + arglist = [ + '--project', identity_fakes.project_name, + '--group', identity_fakes.group_id, + ] + verifylist = [ + ('project', identity_fakes.project_name), + ('group', identity_fakes.group_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'project': self.projects_mock.get(), + 'group': self.groups_mock.get(), + } + # RoleManager.list(user=, group=, domain=, project=, **kwargs) + self.roles_mock.list.assert_called_with( + **kwargs + ) + + collist = ('ID', 'Name', 'Project', 'Group') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.role_id, + identity_fakes.role_name, + identity_fakes.project_name, + identity_fakes.group_name, + ), ) + self.assertEqual(tuple(data), datalist) + class TestRoleRemove(TestRole): diff --git a/openstackclient/tests/identity/v3/test_user.py b/openstackclient/tests/identity/v3/test_user.py index 093d919b..569d9140 100644 --- a/openstackclient/tests/identity/v3/test_user.py +++ b/openstackclient/tests/identity/v3/test_user.py @@ -34,9 +34,9 @@ class TestUser(identity_fakes.TestIdentityv3): self.projects_mock = self.app.client_manager.identity.projects self.projects_mock.reset_mock() - # Get a shortcut to the RoleManager Mock - self.roles_mock = self.app.client_manager.identity.roles - self.roles_mock.reset_mock() + # Get a shortcut to the GroupManager Mock + self.groups_mock = self.app.client_manager.identity.groups + self.groups_mock.reset_mock() # Get a shortcut to the UserManager Mock self.users_mock = self.app.client_manager.identity.users @@ -476,45 +476,30 @@ class TestUserList(TestUser): def setUp(self): super(TestUserList, self).setUp() - self.domains_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy(identity_fakes.DOMAIN), - loaded=True, - ) - - self.projects_mock.get.return_value = fakes.FakeResource( + self.users_mock.get.return_value = fakes.FakeResource( None, - copy.deepcopy(identity_fakes.PROJECT), + copy.deepcopy(identity_fakes.USER), loaded=True, ) - self.projects_mock.list.return_value = [ + self.users_mock.list.return_value = [ fakes.FakeResource( None, - copy.deepcopy(identity_fakes.PROJECT), + copy.deepcopy(identity_fakes.USER), loaded=True, ), ] - self.roles_mock.list.return_value = [ - fakes.FakeResource( - None, - copy.deepcopy(identity_fakes.ROLE), - loaded=True, - ), - ] + self.domains_mock.get.return_value = fakes.FakeResource( + None, + copy.deepcopy(identity_fakes.DOMAIN), + loaded=True, + ) - self.users_mock.get.return_value = fakes.FakeResource( + self.groups_mock.get.return_value = fakes.FakeResource( None, - copy.deepcopy(identity_fakes.USER), + copy.deepcopy(identity_fakes.GROUP), loaded=True, ) - self.users_mock.list.return_value = [ - fakes.FakeResource( - None, - copy.deepcopy(identity_fakes.USER), - loaded=True, - ), - ] # Get the command object to test self.cmd = user.ListUser(self.app, None) @@ -527,29 +512,15 @@ class TestUserList(TestUser): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - self.users_mock.list.assert_called_with() - - collist = ('ID', 'Name') - self.assertEqual(columns, collist) - datalist = (( - identity_fakes.user_id, - identity_fakes.user_name, - ), ) - self.assertEqual(tuple(data), datalist) - - def test_user_list_project(self): - arglist = [ - '--project', identity_fakes.project_id, - ] - verifylist = [ - ('project', identity_fakes.project_id), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # DisplayCommandBase.take_action() returns two tuples - columns, data = self.cmd.take_action(parsed_args) + # Set expected values + kwargs = { + 'domain': None, + 'group': None, + } - self.users_mock.list.assert_called_with() + self.users_mock.list.assert_called_with( + **kwargs + ) collist = ('ID', 'Name') self.assertEqual(columns, collist) @@ -557,7 +528,7 @@ class TestUserList(TestUser): identity_fakes.user_id, identity_fakes.user_name, ), ) - self.assertEqual(tuple(data), datalist) + self.assertEqual(datalist, tuple(data)) def test_user_list_domain(self): arglist = [ @@ -571,94 +542,30 @@ class TestUserList(TestUser): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - self.users_mock.list.assert_called_with() - - collist = ('ID', 'Name') - self.assertEqual(columns, collist) - datalist = (( - identity_fakes.user_id, - identity_fakes.user_name, - ), ) - self.assertEqual(tuple(data), datalist) - - def test_user_list_role_user(self): - arglist = [ - '--role', - identity_fakes.user_id, - ] - verifylist = [ - ('role', True), - ('user', identity_fakes.user_id), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # DisplayCommandBase.take_action() returns two tuples - columns, data = self.cmd.take_action(parsed_args) - # Set expected values kwargs = { - 'domain': 'default', - 'user': self.users_mock.get(), + 'domain': identity_fakes.domain_id, + 'group': None, } - # RoleManager.list(user=, group=, domain=, project=, **kwargs) - self.roles_mock.list.assert_called_with( + + self.users_mock.list.assert_called_with( **kwargs ) collist = ('ID', 'Name') self.assertEqual(columns, collist) datalist = (( - identity_fakes.role_id, - identity_fakes.role_name, - ), ) - self.assertEqual(tuple(data), datalist) - - def test_user_list_role_domain(self): - arglist = [ - '--domain', identity_fakes.domain_name, - '--role', identity_fakes.user_id, - ] - verifylist = [ - ('domain', identity_fakes.domain_name), - ('role', True), - ('user', identity_fakes.user_id), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # DisplayCommandBase.take_action() returns two tuples - columns, data = self.cmd.take_action(parsed_args) - - # Set expected values - kwargs = { - 'domain': self.domains_mock.get(), - 'user': self.users_mock.get(), - } - # RoleManager.list(user=, group=, domain=, project=, **kwargs) - self.roles_mock.list.assert_called_with( - **kwargs - ) - - collist = ('ID', 'Name', 'Domain', 'User') - self.assertEqual(columns, collist) - datalist = (( - identity_fakes.role_id, - identity_fakes.role_name, - identity_fakes.domain_name, identity_fakes.user_name, ), ) - self.assertEqual(tuple(data), datalist) + self.assertEqual(datalist, tuple(data)) - def test_user_list_role_project(self): + def test_user_list_group(self): arglist = [ - '--project', identity_fakes.project_name, - '--role', - identity_fakes.user_id, + '--group', identity_fakes.group_name, ] verifylist = [ - ('project', identity_fakes.project_name), - ('role', True), - ('user', identity_fakes.user_id), + ('group', identity_fakes.group_name), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -667,23 +574,21 @@ class TestUserList(TestUser): # Set expected values kwargs = { - 'project': self.projects_mock.get(), - 'user': self.users_mock.get(), + 'domain': None, + 'group': identity_fakes.group_id, } - # RoleManager.list(user=, group=, domain=, project=, **kwargs) - self.roles_mock.list.assert_called_with( + + self.users_mock.list.assert_called_with( **kwargs ) - collist = ('ID', 'Name', 'Project', 'User') + collist = ('ID', 'Name') self.assertEqual(columns, collist) datalist = (( - identity_fakes.role_id, - identity_fakes.role_name, - identity_fakes.project_name, + identity_fakes.user_id, identity_fakes.user_name, ), ) - self.assertEqual(tuple(data), datalist) + self.assertEqual(datalist, tuple(data)) def test_user_list_long(self): arglist = [ @@ -697,7 +602,15 @@ class TestUserList(TestUser): # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) - self.users_mock.list.assert_called_with() + # Set expected values + kwargs = { + 'domain': None, + 'group': None, + } + + self.users_mock.list.assert_called_with( + **kwargs + ) collist = ( 'ID', @@ -718,7 +631,7 @@ class TestUserList(TestUser): identity_fakes.user_email, True, ), ) - self.assertEqual(tuple(data), datalist) + self.assertEqual(datalist, tuple(data)) class TestUserSet(TestUser): |
