debian-koji/tests/test_cli/test_userinfo.py
Jana Cupova de192e10f1 Add repoID in listBuildroots and create repoinfo command
Add repoID param in listBuildroots and show result in repoInfo
Create new command repoinfo which provides equivalent info as repoInfo
Add number of buildroots related to repo in repoinfo page

Fixes: https://pagure.io/koji/issue/2549
2023-04-03 15:20:18 +02:00

94 lines
3.3 KiB
Python

from __future__ import absolute_import
import mock
from six.moves import StringIO
import koji
from koji_cli.commands import anon_handle_userinfo
from . import utils
class TestUserinfo(utils.CliTestCase):
def setUp(self):
self.options = mock.MagicMock()
self.options.debug = False
self.session = mock.MagicMock()
self.session.getAPIVersion.return_value = koji.API_VERSION
self.user = 'test-user'
self.user_info = {'id': 1,
'krb_principals': ['test-principal'],
'name': self.user,
'status': 0,
'usertype': 0}
self.user_perms = ['admin', 'tag']
self.count_list_packages = 2
self.count_list_builds = 3
self.count_list_tasks = 5
def __vm(self, result):
m = koji.VirtualCall('mcall_method', [], {})
if isinstance(result, dict) and result.get('faultCode'):
m._result = result
else:
m._result = (result,)
return m
@mock.patch('sys.stderr', new_callable=StringIO)
def test_userinfo_without_option(self, stderr):
expected = "Usage: %s userinfo [options] <username> [<username> ...]\n" \
"(Specify the --help global option for a list of other help options)\n\n" \
"%s: error: You must specify at least one " \
"username\n" % (self.progname, self.progname)
with self.assertRaises(SystemExit) as ex:
anon_handle_userinfo(self.options, self.session, [])
self.assertExitCode(ex, 2)
self.assert_console_message(stderr, expected)
@mock.patch('sys.stderr', new_callable=StringIO)
def test_userinfo_non_exist_user(self, stderr):
expected_warn = "No such user: %s\n\n" % self.user
mcall = self.session.multicall.return_value.__enter__.return_value
mcall.getUser.return_value = self.__vm(None)
anon_handle_userinfo(self.options, self.session, [self.user])
self.assert_console_message(stderr, expected_warn)
@mock.patch('sys.stdout', new_callable=StringIO)
@mock.patch('koji_cli.commands.ensure_connection')
def test_userinfo(self, ensure_connection, stdout):
expected = """User name: test-user
User ID: 1
krb principals:
test-principal
Permissions:
admin
tag
Status: NORMAL
Usertype: NORMAL
Number of packages: 2
Number of tasks: 5
Number of builds: 3
"""
mcall = self.session.multicall.return_value.__enter__.return_value
mcall.getUser.return_value = self.__vm(self.user_info)
mcall.getUserPerms.return_value = self.__vm(self.user_perms)
mcall.listPackages.return_value = self.__vm(self.count_list_packages)
mcall.listBuilds.return_value = self.__vm(self.count_list_builds)
mcall.listTasks.return_value = self.__vm(self.count_list_tasks)
anon_handle_userinfo(self.options, self.session, [self.user])
self.assert_console_message(stdout, expected)
def test_userinfo_help(self):
self.assert_help(
anon_handle_userinfo,
"""Usage: %s userinfo [options] <username> [<username> ...]
(Specify the --help global option for a list of other help options)
Options:
-h, --help show this help message and exit
""" % self.progname)