summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authors-hertel <hertels@berea.edu>2016-07-11 13:54:29 -0400
committerjctanner <tanner.jc@gmail.com>2016-07-11 13:54:29 -0400
commit9c925eeeab116373f4f54b57c2cd404d3c57a562 (patch)
treec4517b840475d8e50039e0eed94c17efd2e067bd
parent54fc1a10fe574f9a6f9fa95b6baaa7421138d164 (diff)
downloadansible-9c925eeeab116373f4f54b57c2cd404d3c57a562.tar.gz
Adding a test for GalaxyCLI and two methods on which it depends. Tes… (#16651)
* Adding a test for GalaxyCLI and two methods on which it depends. Tests execute_info method. * Adding a test for GalaxyCLI and two methods on which it depends. Tests execute_remove method. * Update test_galaxy.py * Revising test for GalaxyCLI execute_remove. * Removing mocks
-rw-r--r--test/units/cli/test_galaxy.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/units/cli/test_galaxy.py b/test/units/cli/test_galaxy.py
index faea529242..a7a44a766f 100644
--- a/test/units/cli/test_galaxy.py
+++ b/test/units/cli/test_galaxy.py
@@ -23,6 +23,12 @@ from ansible.compat.six import PY3
from ansible.compat.tests import unittest
from nose.plugins.skip import SkipTest
+import ansible
+import os
+import shutil
+import tarfile
+
+from mock import patch
if PY3:
raise SkipTest('galaxy is not ported to be py3 compatible yet')
@@ -30,6 +36,56 @@ if PY3:
from ansible.cli.galaxy import GalaxyCLI
class TestGalaxy(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
+ '''creating prerequisites for installing a role; setUpClass occurs ONCE whereas setUp occurs with every method tested.'''
+ # class data for easy viewing: role_dir, role_tar, role_name, role_req, role_path
+
+ if os.path.exists("./delete_me"):
+ shutil.rmtree("./delete_me")
+
+ # creating framework for a role
+ gc = GalaxyCLI(args=["init"])
+ with patch('sys.argv', ["-c", "delete_me"]):
+ gc.parse()
+ gc.run()
+ cls.role_dir = "./delete_me"
+ cls.role_name = "delete_me"
+ cls.role_path = "/etc/ansible/roles"
+
+ # creating a tar file name for class data
+ cls.role_tar = './delete_me.tar.gz'
+ cls.makeTar(cls.role_tar, cls.role_dir)
+
+ # creating a temp file with installation requirements
+ cls.role_req = './delete_me_requirements.yml'
+ fd = open(cls.role_req, "w")
+ fd.write("- 'src': '%s'\n 'name': '%s'\n 'path': '%s'" % (cls.role_tar, cls.role_name, cls.role_path))
+ fd.close()
+
+ @classmethod
+ def makeTar(cls, output_file, source_dir):
+ ''' used for making a tarfile from a role directory '''
+ # adding directory into a tar file
+ try:
+ tar = tarfile.open(output_file, "w:gz")
+ tar.add(source_dir, arcname=os.path.basename(source_dir))
+ except AttributeError: # tarfile obj. has no attribute __exit__ prior to python 2. 7
+ pass
+ finally: # ensuring closure of tarfile obj
+ tar.close()
+
+ @classmethod
+ def tearDownClass(cls):
+ '''After tests are finished removes things created in setUpClass'''
+ # deleting the temp role directory
+ if os.path.exists(cls.role_dir):
+ shutil.rmtree(cls.role_dir)
+ if os.path.exists(cls.role_req):
+ os.remove(cls.role_req)
+ if os.path.exists(cls.role_tar):
+ os.remove(cls.role_tar)
+
def setUp(self):
self.default_args = []
@@ -51,3 +107,26 @@ class TestGalaxy(unittest.TestCase):
display_result = gc._display_role_info(role_info)
if display_result.find('\t\tgalaxy_tags:') > -1:
self.fail('Expected galaxy_tags to be indented twice')
+
+ def test_execute_remove(self):
+ # installing role
+ gc = GalaxyCLI(args=["install"])
+ with patch('sys.argv', ["--offline", "-r", self.role_req]):
+ galaxy_parser = gc.parse()
+ gc.run()
+
+ # checking that installation worked
+ role_file = os.path.join(self.role_path, self.role_name)
+ self.assertTrue(os.path.exists(role_file))
+
+ # removing role
+ gc.args = ["remove"]
+ with patch('sys.argv', ["-c", self.role_name]):
+ galaxy_parser = gc.parse()
+ super(GalaxyCLI, gc).run()
+ gc.api = ansible.galaxy.api.GalaxyAPI(gc.galaxy)
+ completed_task = gc.execute_remove()
+
+ # testing role was removed
+ self.assertTrue(completed_task == 0)
+ self.assertTrue(not os.path.exists(role_file))