listUsers excepts userType as int, list and Nonetype

Fixes: https://pagure.io/koji/issue/4325
This commit is contained in:
Jana Librova 2025-03-25 16:19:30 +01:00 committed by Tomas Kopecek
parent b2eb8d94ee
commit 037d9e468e
2 changed files with 36 additions and 6 deletions

View file

@ -13504,8 +13504,8 @@ class RootExports(object):
if userType is not None:
if isinstance(userType, int):
userType = [userType]
else:
raise koji.ParameterError("userType must be integer or None")
elif not isinstance(userType, (list, tuple)):
raise koji.ParameterError("userType must be integer, list, tuple or None")
clauses.append('usertype IN %(userType)s')
fields = [
('users.id', 'id'),

View file

@ -61,7 +61,7 @@ class TestListUsers(unittest.TestCase):
self.assertEqual(query.joins, [
'LEFT JOIN user_groups ON user_id = users.id AND user_groups.active IS TRUE',
'LEFT JOIN user_perms ON users.id = user_perms.user_id '
'OR group_id = user_perms.user_id',
'OR group_id = user_perms.user_id',
'LEFT JOIN user_krb_principals ON users.id = user_krb_principals.user_id'])
self.assertEqual(query.clauses, [
'user_perms.active AND user_perms.perm_id = %(perm_id)s',
@ -81,8 +81,38 @@ class TestListUsers(unittest.TestCase):
self.assertEqual('queryOpts.group is not available for this API', str(cm.exception))
self.assertEqual(len(self.queries), 0)
def test_usertype_not_int_or_none(self):
def test_usertype_is_list(self):
self.exports.listUsers(userType=[1])
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['users'])
self.assertEqual(query.joins, [
'LEFT JOIN user_krb_principals ON users.id = user_krb_principals.user_id'])
self.assertEqual(query.clauses, ['usertype IN %(userType)s'])
def test_usertype_is_tuple(self):
self.exports.listUsers(userType=(1, 2))
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['users'])
self.assertEqual(query.joins, [
'LEFT JOIN user_krb_principals ON users.id = user_krb_principals.user_id'])
self.assertEqual(query.clauses, ['usertype IN %(userType)s'])
def test_usertype_is_integer(self):
self.exports.listUsers(userType=1)
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['users'])
self.assertEqual(query.joins, [
'LEFT JOIN user_krb_principals ON users.id = user_krb_principals.user_id'])
self.assertEqual(query.clauses, ['usertype IN %(userType)s'])
def test_usertype_invalid(self):
with self.assertRaises(koji.GenericError) as cm:
self.exports.listUsers(userType=[1])
self.assertEqual('userType must be integer or None', str(cm.exception))
self.exports.listUsers(userType='usertype')
self.assertEqual('userType must be integer, list, tuple or None', str(cm.exception))
self.assertEqual(len(self.queries), 0)