Add CLI with users with given permission

Fixes: https://pagure.io/koji/issue/3950
This commit is contained in:
Jana Cupova 2024-01-09 10:56:04 +01:00 committed by Tomas Kopecek
parent 7d126abe91
commit c62e3467b5
4 changed files with 254 additions and 16 deletions

View file

@ -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)