Add CLI with users with given permission
Fixes: https://pagure.io/koji/issue/3950
This commit is contained in:
parent
7d126abe91
commit
c62e3467b5
4 changed files with 254 additions and 16 deletions
|
|
@ -47,7 +47,8 @@ testuser
|
|||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
userType=koji.USERTYPES['NORMAL'], prefix=None)
|
||||
inherited_perm=False, perm=None, userType=koji.USERTYPES['NORMAL'], prefix=None)
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_list_users_with_prefix(self, stdout):
|
||||
|
|
@ -65,7 +66,8 @@ testuser
|
|||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
userType=koji.USERTYPES['NORMAL'], prefix='koji')
|
||||
inherited_perm=False, perm=None, userType=koji.USERTYPES['NORMAL'], prefix='koji')
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_list_users_with_usertype(self, stdout):
|
||||
|
|
@ -88,7 +90,8 @@ testhost
|
|||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
userType=koji.USERTYPES['HOST'], prefix=None)
|
||||
inherited_perm=False, perm=None, userType=koji.USERTYPES['HOST'], prefix=None)
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
def test_list_users_with_usertype_non_existing(self):
|
||||
arguments = ['--usertype', 'test']
|
||||
|
|
@ -100,6 +103,7 @@ testhost
|
|||
activate_session=None,
|
||||
exit_code=1)
|
||||
self.session.listUsers.assert_not_called()
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_list_users_with_usertype_and_prefix(self, stdout):
|
||||
|
|
@ -117,7 +121,95 @@ testhost
|
|||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
userType=koji.USERTYPES['HOST'], prefix='test')
|
||||
inherited_perm=False, perm=None, userType=koji.USERTYPES['HOST'], prefix='test')
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
def test_list_users_with_arg(self):
|
||||
arguments = ['test-arg']
|
||||
self.assert_system_exit(
|
||||
anon_handle_list_users,
|
||||
self.options, self.session, arguments,
|
||||
stderr=self.format_error_message("This command takes no arguments"),
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=2)
|
||||
self.activate_session.assert_not_called()
|
||||
self.session.listUsers.assert_not_called()
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
def test_list_users_not_exists_perm(self):
|
||||
arguments = ['--perm', 'test-non-exist-perm']
|
||||
self.session.getAllPerms.return_value = [{'name': 'test-perm'}, {'name': 'test-perm-2'}]
|
||||
self.assert_system_exit(
|
||||
anon_handle_list_users,
|
||||
self.options, self.session, arguments,
|
||||
stderr="Permission test-non-exist-perm does not exists\n",
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=1)
|
||||
self.activate_session.assert_called_once_with(self.session, self.options)
|
||||
self.session.listUsers.assert_not_called()
|
||||
self.session.getAllPerms.assert_called_once_with()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_list_users_with_empty_result_of_users(self, stdout):
|
||||
perm = 'test-perm'
|
||||
arguments = ['--perm', perm]
|
||||
self.session.getAllPerms.return_value = [{'name': 'test-perm'}, {'name': 'test-perm-2'}]
|
||||
self.session.listUsers.return_value = []
|
||||
rv = anon_handle_list_users(self.options, self.session, arguments)
|
||||
actual = stdout.getvalue()
|
||||
expected = """"""
|
||||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.activate_session.assert_called_once_with(self.session, self.options)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
inherited_perm=False, perm=perm, prefix=None, userType=None)
|
||||
self.session.getAllPerms.assert_called_once_with()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_list_users_with_perms_valid_and_inherited_perm(self, stdout):
|
||||
perm = 'test-perm'
|
||||
arguments = ['--perm', perm, '--inherited-perm']
|
||||
self.session.getAllPerms.return_value = [{'name': 'test-perm'}, {'name': 'test-perm-2'}]
|
||||
self.session.listUsers.return_value = [{
|
||||
'id': 1, 'krb_principals': [],
|
||||
'name': 'kojiadmin',
|
||||
'permission': perm,
|
||||
'status': 0,
|
||||
'usertype': 0},
|
||||
{'id': 4,
|
||||
'krb_principals': [],
|
||||
'name': 'testuser1234',
|
||||
'permission': perm,
|
||||
'status': 0,
|
||||
'usertype': 2},
|
||||
]
|
||||
rv = anon_handle_list_users(self.options, self.session, arguments)
|
||||
actual = stdout.getvalue()
|
||||
expected = """kojiadmin
|
||||
testuser1234
|
||||
"""
|
||||
self.assertMultiLineEqual(actual, expected)
|
||||
self.assertEqual(rv, None)
|
||||
self.session.listUsers.assert_called_once_with(
|
||||
inherited_perm=True, perm=perm, prefix=None, userType=None)
|
||||
self.session.getAllPerms.assert_called_once_with()
|
||||
self.activate_session.assert_called_once_with(self.session, self.options)
|
||||
|
||||
def test_list_users_inherited_perm_without_perm(self):
|
||||
arguments = ['--inherited-perm']
|
||||
self.assert_system_exit(
|
||||
anon_handle_list_users,
|
||||
self.options, self.session, arguments,
|
||||
stderr=self.format_error_message(
|
||||
"inherited_perm option must be used with perm option"),
|
||||
stdout='',
|
||||
activate_session=None,
|
||||
exit_code=2)
|
||||
self.activate_session.assert_not_called()
|
||||
self.session.listUsers.assert_not_called()
|
||||
self.session.getAllPerms.assert_not_called()
|
||||
|
||||
def test_anon_handle_list_users_help(self):
|
||||
self.assert_help(
|
||||
|
|
@ -130,4 +222,6 @@ Options:
|
|||
--usertype=USERTYPE List users that have a given usertype (e.g. NORMAL,
|
||||
HOST, GROUP)
|
||||
--prefix=PREFIX List users that have a given prefix
|
||||
--perm=PERM List users that have a given permission
|
||||
--inherited-perm List of users that inherited specific perm
|
||||
""" % self.progname)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue