Test GalaxyCLI when no actions are provided
Adds a new test for GalaxyCLI. Tests cases when: - no actions are provided - invalid actions are provided - each valid action is provided When parser() runs successfully the method returns True, creates a SortedOptParser instance, a Galaxy instance, and updates certain class data.
This commit is contained in:
parent
adea1f2b80
commit
93c5ec42cf
1 changed files with 108 additions and 1 deletions
|
@ -29,9 +29,12 @@ from nose.plugins.skip import SkipTest
|
|||
|
||||
from ansible.compat.six import PY3
|
||||
from ansible.compat.tests import unittest
|
||||
from mock import patch, call
|
||||
|
||||
import ansible
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError
|
||||
|
||||
from nose.plugins.skip import SkipTest
|
||||
|
||||
if PY3:
|
||||
raise SkipTest('galaxy is not ported to be py3 compatible yet')
|
||||
|
@ -159,3 +162,107 @@ class TestGalaxy(unittest.TestCase):
|
|||
# testing that error expected is not raised with --ignore-errors flag in use
|
||||
gc.run()
|
||||
self.assertTrue(mocked_display.called_once_with("- downloading role 'fake_role_name', owned by "))
|
||||
|
||||
def run_parse_common(self, galaxycli_obj, action):
|
||||
with patch.object(ansible.cli.SortedOptParser, "set_usage") as mocked_usage:
|
||||
with patch('sys.argv', ["-c"]):
|
||||
galaxy_parser = galaxycli_obj.parse()
|
||||
|
||||
# checking that the common results of parse() for all possible actions have been created/called
|
||||
self.assertTrue(galaxy_parser)
|
||||
self.assertTrue(isinstance(galaxycli_obj.parser, ansible.cli.SortedOptParser))
|
||||
self.assertTrue(isinstance(galaxycli_obj.galaxy, ansible.galaxy.Galaxy))
|
||||
if action in ['import', 'delete']:
|
||||
formatted_call = 'usage: %prog ' + action + ' [options] github_user github_repo'
|
||||
elif action == 'info':
|
||||
formatted_call = 'usage: %prog ' + action + ' [options] role_name[,version]'
|
||||
elif action == 'init':
|
||||
formatted_call = 'usage: %prog ' + action + ' [options] role_name'
|
||||
elif action == 'install':
|
||||
formatted_call = 'usage: %prog ' + action + ' [options] [-r FILE | role_name(s)[,version] | scm+role_repo_url[,version] | tar_file(s)]'
|
||||
elif action == 'list':
|
||||
formatted_call = 'usage: %prog ' + action + ' [role_name]'
|
||||
elif action == 'login':
|
||||
formatted_call = 'usage: %prog ' + action + ' [options]'
|
||||
elif action == 'remove':
|
||||
formatted_call = 'usage: %prog ' + action + ' role1 role2 ...'
|
||||
elif action == 'search':
|
||||
formatted_call = 'usage: %prog ' + action + ' [searchterm1 searchterm2] [--galaxy-tags galaxy_tag1,galaxy_tag2] [--platforms platform1,platform2] [--author username]'
|
||||
elif action == 'setup':
|
||||
formatted_call = 'usage: %prog ' + action + ' [options] source github_user github_repo secret'
|
||||
calls = [call('usage: %prog [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...'), call(formatted_call)]
|
||||
mocked_usage.assert_has_calls(calls)
|
||||
|
||||
def test_parse(self):
|
||||
''' systematically testing that the expected options parser is created '''
|
||||
# testing no action given
|
||||
gc = GalaxyCLI(args=[])
|
||||
with patch('sys.argv', ["-c"]):
|
||||
self.assertRaises(AnsibleOptionsError, gc.parse)
|
||||
|
||||
# testing action that doesn't exist
|
||||
gc = GalaxyCLI(args=["NOT_ACTION"])
|
||||
with patch('sys.argv', ["-c"]):
|
||||
self.assertRaises(AnsibleOptionsError, gc.parse)
|
||||
|
||||
# testing action 'delete'
|
||||
gc = GalaxyCLI(args=["delete"])
|
||||
self.run_parse_common(gc, "delete")
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
|
||||
# testing action 'import'
|
||||
gc = GalaxyCLI(args=["import"])
|
||||
self.run_parse_common(gc, "import")
|
||||
self.assertTrue(gc.options.wait==True)
|
||||
self.assertTrue(gc.options.reference==None)
|
||||
self.assertTrue(gc.options.check_status==False)
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
|
||||
# testing action 'info'
|
||||
gc = GalaxyCLI(args=["info"])
|
||||
self.run_parse_common(gc, "info")
|
||||
self.assertTrue(gc.options.offline==False)
|
||||
|
||||
# testing action 'init'
|
||||
gc = GalaxyCLI(args=["init"])
|
||||
self.run_parse_common(gc, "init")
|
||||
self.assertTrue(gc.options.offline==False)
|
||||
self.assertTrue(gc.options.force==False)
|
||||
|
||||
# testing action 'install'
|
||||
gc = GalaxyCLI(args=["install"])
|
||||
self.run_parse_common(gc, "install")
|
||||
self.assertTrue(gc.options.ignore_errors==False)
|
||||
self.assertTrue(gc.options.no_deps==False)
|
||||
self.assertTrue(gc.options.role_file==None)
|
||||
self.assertTrue(gc.options.force==False)
|
||||
|
||||
# testing action 'list'
|
||||
gc = GalaxyCLI(args=["list"])
|
||||
self.run_parse_common(gc, "list")
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
|
||||
# testing action 'login'
|
||||
gc = GalaxyCLI(args=["login"])
|
||||
self.run_parse_common(gc, "login")
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
self.assertTrue(gc.options.token==None)
|
||||
|
||||
# testing action 'remove'
|
||||
gc = GalaxyCLI(args=["remove"])
|
||||
self.run_parse_common(gc, "remove")
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
|
||||
# testing action 'search'
|
||||
gc = GalaxyCLI(args=["search"])
|
||||
self.run_parse_common(gc, "search")
|
||||
self.assertTrue(gc.options.platforms==None)
|
||||
self.assertTrue(gc.options.tags==None)
|
||||
self.assertTrue(gc.options.author==None)
|
||||
|
||||
# testing action 'setup'
|
||||
gc = GalaxyCLI(args=["setup"])
|
||||
self.run_parse_common(gc, "setup")
|
||||
self.assertTrue(gc.options.verbosity==0)
|
||||
self.assertTrue(gc.options.remove_id==None)
|
||||
self.assertTrue(gc.options.setup_list==False)
|
||||
|
|
Loading…
Reference in a new issue