Merge "Refactor role list subcommand for identity v3 api"
This commit is contained in:
commit
c6cc1d72d5
openstackclient
@ -176,23 +176,6 @@ class ListGroup(lister.Lister):
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
help='Name or ID of group to list [required with --role]',
|
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]',
|
|
||||||
)
|
|
||||||
domain_or_project.add_argument(
|
|
||||||
'--project',
|
|
||||||
metavar='<project>',
|
|
||||||
help='Filter list by <project> [Only valid with --role]',
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--long',
|
'--long',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
@ -205,65 +188,12 @@ class ListGroup(lister.Lister):
|
|||||||
self.log.debug('take_action(%s)', parsed_args)
|
self.log.debug('take_action(%s)', parsed_args)
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
|
|
||||||
if parsed_args.role:
|
# List groups
|
||||||
# List roles belonging to group
|
if parsed_args.long:
|
||||||
|
columns = ('ID', 'Name', 'Domain ID', 'Description')
|
||||||
# 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 ([], [])
|
|
||||||
else:
|
else:
|
||||||
# List groups
|
columns = ('ID', 'Name')
|
||||||
if parsed_args.long:
|
data = identity_client.groups.list()
|
||||||
columns = ('ID', 'Name', 'Domain ID', 'Description')
|
|
||||||
else:
|
|
||||||
columns = ('ID', 'Name')
|
|
||||||
data = identity_client.groups.list()
|
|
||||||
|
|
||||||
return (columns,
|
return (columns,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
|
@ -192,10 +192,110 @@ class ListRole(lister.Lister):
|
|||||||
|
|
||||||
log = logging.getLogger(__name__ + '.ListRole')
|
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):
|
def take_action(self, parsed_args):
|
||||||
self.log.debug('take_action(%s)', parsed_args)
|
self.log.debug('take_action(%s)' % parsed_args)
|
||||||
columns = ('ID', 'Name')
|
identity_client = self.app.client_manager.identity
|
||||||
data = self.app.client_manager.identity.roles.list()
|
|
||||||
|
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,
|
return (columns,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
s, columns,
|
s, columns,
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import six
|
import six
|
||||||
import sys
|
|
||||||
|
|
||||||
from cliff import command
|
from cliff import command
|
||||||
from cliff import lister
|
from cliff import lister
|
||||||
@ -161,23 +160,6 @@ class ListUser(lister.Lister):
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
help='Name or ID of user to list [required with --role]',
|
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]',
|
|
||||||
)
|
|
||||||
domain_or_project.add_argument(
|
|
||||||
'--project',
|
|
||||||
metavar='<project>',
|
|
||||||
help='Filter list by <project> [Only valid with --role]',
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--long',
|
'--long',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
@ -187,70 +169,15 @@ class ListUser(lister.Lister):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
self.log.debug('take_action(%s)', parsed_args)
|
self.log.debug('take_action(%s)' % parsed_args)
|
||||||
identity_client = self.app.client_manager.identity
|
|
||||||
|
|
||||||
if parsed_args.role:
|
# List users
|
||||||
# List roles belonging to user
|
if parsed_args.long:
|
||||||
|
columns = ('ID', 'Name', 'Project Id', 'Domain Id',
|
||||||
# User is required here, bail if it is not supplied
|
'Description', 'Email', 'Enabled')
|
||||||
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 ([], [])
|
|
||||||
else:
|
else:
|
||||||
# List users
|
columns = ('ID', 'Name')
|
||||||
if parsed_args.long:
|
data = self.app.client_manager.identity.users.list()
|
||||||
columns = ('ID', 'Name', 'Project Id', 'Domain Id',
|
|
||||||
'Description', 'Email', 'Enabled')
|
|
||||||
else:
|
|
||||||
columns = ('ID', 'Name')
|
|
||||||
data = self.app.client_manager.identity.users.list()
|
|
||||||
|
|
||||||
return (columns,
|
return (columns,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
|
@ -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
|
# Get the command object to test
|
||||||
self.cmd = role.ListRole(self.app, None)
|
self.cmd = role.ListRole(self.app, None)
|
||||||
|
|
||||||
@ -317,6 +338,172 @@ class TestRoleList(TestRole):
|
|||||||
), )
|
), )
|
||||||
self.assertEqual(tuple(data), datalist)
|
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):
|
class TestRoleRemove(TestRole):
|
||||||
|
|
||||||
|
@ -476,33 +476,6 @@ class TestUserList(TestUser):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestUserList, self).setUp()
|
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(
|
|
||||||
None,
|
|
||||||
copy.deepcopy(identity_fakes.PROJECT),
|
|
||||||
loaded=True,
|
|
||||||
)
|
|
||||||
self.projects_mock.list.return_value = [
|
|
||||||
fakes.FakeResource(
|
|
||||||
None,
|
|
||||||
copy.deepcopy(identity_fakes.PROJECT),
|
|
||||||
loaded=True,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
self.roles_mock.list.return_value = [
|
|
||||||
fakes.FakeResource(
|
|
||||||
None,
|
|
||||||
copy.deepcopy(identity_fakes.ROLE),
|
|
||||||
loaded=True,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
self.users_mock.get.return_value = fakes.FakeResource(
|
self.users_mock.get.return_value = fakes.FakeResource(
|
||||||
None,
|
None,
|
||||||
copy.deepcopy(identity_fakes.USER),
|
copy.deepcopy(identity_fakes.USER),
|
||||||
@ -537,154 +510,6 @@ class TestUserList(TestUser):
|
|||||||
), )
|
), )
|
||||||
self.assertEqual(tuple(data), datalist)
|
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)
|
|
||||||
|
|
||||||
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_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)
|
|
||||||
|
|
||||||
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(),
|
|
||||||
}
|
|
||||||
# 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_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)
|
|
||||||
|
|
||||||
def test_user_list_role_project(self):
|
|
||||||
arglist = [
|
|
||||||
'--project', identity_fakes.project_name,
|
|
||||||
'--role',
|
|
||||||
identity_fakes.user_id,
|
|
||||||
]
|
|
||||||
verifylist = [
|
|
||||||
('project', identity_fakes.project_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 = {
|
|
||||||
'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_user_list_long(self):
|
def test_user_list_long(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--long',
|
'--long',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user