| |
@@ -0,0 +1,103 @@
|
| |
+ from __future__ import absolute_import
|
| |
+
|
| |
+ import mock
|
| |
+ import optparse
|
| |
+
|
| |
+ import koji
|
| |
+ import unittest
|
| |
+
|
| |
+ from . import loadcli
|
| |
+
|
| |
+ cli = loadcli.cli
|
| |
+
|
| |
+
|
| |
+ class TestGetOptions(unittest.TestCase):
|
| |
+
|
| |
+ def setUp(self):
|
| |
+ self.expanduser = mock.patch('os.path.expanduser').start()
|
| |
+ self.read_config = mock.patch('koji.read_config').start()
|
| |
+ self.config_dict = {'server': 'http://localhost/kojihub',
|
| |
+ 'weburl': 'http://localhost/koji',
|
| |
+ 'topurl': None, 'pkgurl': None, 'topdir': '/mnt/koji',
|
| |
+ 'max_retries': 30, 'retry_interval': 20, 'anon_retry': False,
|
| |
+ 'offline_retry': False, 'offline_retry_interval': 20,
|
| |
+ 'timeout': 50000, 'auth_timeout': 60, 'use_fast_upload': False,
|
| |
+ 'upload_blocksize': 1048576, 'poll_interval': 6, 'principal': None,
|
| |
+ 'keytab': None, 'cert': None, 'serverca': None, 'no_ssl_verify': False,
|
| |
+ 'authtype': None, 'debug': False, 'debug_xmlrpc': False, 'pyver': None,
|
| |
+ 'plugin_paths': None, 'force_auth': False, 'config': 'path/to/config'}
|
| |
+ self.expanduser_values = ['path/topdir', 'cert.crt', 'serverca.crt']
|
| |
+ self.orig_basedir = koji.BASEDIR
|
| |
+ self.orig_pathinfo_topdir = koji.pathinfo.topdir
|
| |
+ self.orig_load_plugins = cli.load_plugins
|
| |
+ self.load_plugins = cli.load_plugins = mock.MagicMock()
|
| |
+
|
| |
+ def tearDown(self):
|
| |
+ koji.BASEDIR = self.orig_basedir
|
| |
+ koji.pathinfo.topdir = self.orig_pathinfo_topdir
|
| |
+ cli.load_plugins = self.orig_load_plugins
|
| |
+
|
| |
+ def test_get_options(self):
|
| |
+ self.read_config.return_value = self.config_dict
|
| |
+ self.expanduser.side_effect = self.expanduser_values
|
| |
+ options = ['--user', 'kojiadmin', '--password', 'testpass', '--profile', 'brew',
|
| |
+ '--config', 'path/to/config', '--principal', 'testuser@kerberos.org',
|
| |
+ '--runas', 'testuser2', '--noauth', '--plugin-paths', 'path/to/plugins',
|
| |
+ '--force-auth', '--authtype', 'kerberos', '--debug', '--debug-xmlrpc',
|
| |
+ '--quiet', '--skip-main', '--server', 'https://serverkoji.com/kojihub',
|
| |
+ '--topdir', 'path/topdir', '--weburl', 'http://serverkoji.com/koji',
|
| |
+ '--topurl', 'http://serverkoji.com/kojifiles', '--help-commands',
|
| |
+ '--keytab', 'testkeytab']
|
| |
+ orig = optparse.OptionParser
|
| |
+
|
| |
+ def gargs(self, args):
|
| |
+ return options
|
| |
+
|
| |
+ original_get_args = orig._get_args
|
| |
+ orig._get_args = gargs
|
| |
+ opts, cmd, args = cli.get_options()
|
| |
+ orig._get_args = original_get_args
|
| |
+ self.assertEqual(opts.user, 'kojiadmin')
|
| |
+ self.assertEqual(opts.password, 'testpass')
|
| |
+ self.assertEqual(opts.profile, 'brew')
|
| |
+ self.assertEqual(opts.config, 'path/to/config')
|
| |
+ self.assertEqual(opts.principal, 'testuser@kerberos.org')
|
| |
+ self.assertEqual(opts.runas, 'testuser2')
|
| |
+ self.assertEqual(opts.noauth, True)
|
| |
+ self.assertEqual(opts.force_auth, True)
|
| |
+ self.assertEqual(opts.plugin_paths, 'path/to/plugins')
|
| |
+ self.assertEqual(opts.authtype, 'kerberos')
|
| |
+ self.assertEqual(opts.debug, True)
|
| |
+ self.assertEqual(opts.debug_xmlrpc, True)
|
| |
+ self.assertEqual(opts.quiet, True)
|
| |
+ self.assertEqual(opts.skip_main, True)
|
| |
+ self.assertEqual(opts.server, 'https://serverkoji.com/kojihub')
|
| |
+ self.assertEqual(opts.topdir, 'path/topdir')
|
| |
+ self.assertEqual(opts.weburl, 'http://serverkoji.com/koji')
|
| |
+ self.assertEqual(opts.topurl, 'http://serverkoji.com/kojifiles')
|
| |
+ self.assertEqual(opts.help_commands, True)
|
| |
+ self.assertEqual(opts.keytab, 'testkeytab')
|
| |
+ self.load_plugins.assert_called_once_with('path/to/plugins')
|
| |
+
|
| |
+ def test_get_options_shorten(self):
|
| |
+ self.read_config.return_value = self.config_dict
|
| |
+ self.expanduser.side_effect = self.expanduser_values
|
| |
+
|
| |
+ options = ['-p', 'brew', '-c', 'path/to/config', '-d', '-q', '-s',
|
| |
+ 'https://serverkoji.com/kojihub']
|
| |
+
|
| |
+ orig = optparse.OptionParser
|
| |
+
|
| |
+ def gargs(self, args):
|
| |
+ return options
|
| |
+
|
| |
+ original_get_args = orig._get_args
|
| |
+ orig._get_args = gargs
|
| |
+ opts, cmd, args = cli.get_options()
|
| |
+ orig._get_args = original_get_args
|
| |
+ self.assertEqual(opts.profile, 'brew')
|
| |
+ self.assertEqual(opts.config, 'path/to/config')
|
| |
+ self.assertEqual(opts.debug, True)
|
| |
+ self.assertEqual(opts.quiet, True)
|
| |
+ self.assertEqual(opts.server, 'https://serverkoji.com/kojihub')
|
| |
+ self.load_plugins.assert_called_once_with(None)
|
| |
Fixes: https://pagure.io/koji/issue/3181