#3180 Add unit test for get_options
Merged 5 months ago by tkopecek. Opened 5 months ago by jcupova.
jcupova/koji unittest-get-options  into  master

Add unit test for get_options
Jana Cupova • 5 months ago  
@@ -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)

rebased onto 016a66d

5 months ago

Commit 6fd7845 fixes this pull-request

Pull-Request has been merged by tkopecek

5 months ago

Metadata Update from @tkopecek:
- Pull-request tagged with: no_qe

5 months ago
Metadata