#4355 listUsers excepts userType as int, list and Nonetype
Opened 2 months ago by jcupova. Modified 9 days ago
jcupova/koji issue-4325  into  master

file modified
+2 -2
@@ -13501,8 +13501,8 @@ 

          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'),

@@ -61,7 +61,7 @@ 

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

          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)

Mostly we assume that list could be also tuple (isinstance(userType, (list, tuple))

rebased onto b21cb0b

22 days ago

rebased onto b21cb0b

22 days ago

@tkopecek fixed and added user tests.

rebased onto b63ef8a

9 days ago