diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-09-06 09:17:08 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-09-06 09:17:08 -0400 |
commit | d3aa773f9f42045a0922d6c194e01d029ee53a40 (patch) | |
tree | b499c7973ff4e6c14a50d8708e07a23aeb863cc4 /testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py | |
parent | 460a1c2a0f1caa7eb2043ad10ba64b8b55e43844 (diff) | |
download | bcfg2-d3aa773f9f42045a0922d6c194e01d029ee53a40.tar.gz bcfg2-d3aa773f9f42045a0922d6c194e01d029ee53a40.tar.bz2 bcfg2-d3aa773f9f42045a0922d6c194e01d029ee53a40.zip |
split up mammoth Plugin.py
Diffstat (limited to 'testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py')
-rw-r--r-- | testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py b/testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py new file mode 100644 index 000000000..9f2f618c9 --- /dev/null +++ b/testsuite/Testsrc/Testlib/TestServer/TestPlugin/Testbase.py @@ -0,0 +1,83 @@ +import os +import sys +import logging +from mock import Mock, MagicMock, patch +from Bcfg2.Server.Plugin.base import * + +# add all parent testsuite directories to sys.path to allow (most) +# relative imports in python 2.4 +path = os.path.dirname(__file__) +while path != '/': + if os.path.basename(path).lower().startswith("test"): + sys.path.append(path) + if os.path.basename(path) == "testsuite": + break + path = os.path.dirname(path) +from common import call, builtins, skip, skipIf, skipUnless, Bcfg2TestCase, \ + patchIf, datastore + + +class TestDebuggable(Bcfg2TestCase): + test_obj = Debuggable + + def get_obj(self): + return self.test_obj() + + def test__init(self): + d = self.get_obj() + self.assertIsInstance(d.logger, logging.Logger) + self.assertFalse(d.debug_flag) + + @patch("Bcfg2.Server.Plugin.base.%s.debug_log" % test_obj.__name__) + def test_toggle_debug(self, mock_debug): + d = self.get_obj() + orig = d.debug_flag + d.toggle_debug() + self.assertNotEqual(orig, d.debug_flag) + self.assertTrue(mock_debug.called) + + mock_debug.reset_mock() + + changed = d.debug_flag + d.toggle_debug() + self.assertNotEqual(changed, d.debug_flag) + self.assertEqual(orig, d.debug_flag) + self.assertTrue(mock_debug.called) + + def test_debug_log(self): + d = self.get_obj() + d.logger = Mock() + d.debug_flag = False + d.debug_log("test") + self.assertFalse(d.logger.error.called) + + d.logger.reset_mock() + d.debug_log("test", flag=True) + self.assertTrue(d.logger.error.called) + + d.logger.reset_mock() + d.debug_flag = True + d.debug_log("test") + self.assertTrue(d.logger.error.called) + + +class TestPlugin(TestDebuggable): + test_obj = Plugin + + def get_obj(self, core=None): + if core is None: + core = Mock() + return self.test_obj(core, datastore) + + def test__init(self): + core = Mock() + p = self.get_obj(core=core) + self.assertEqual(p.data, os.path.join(datastore, p.name)) + self.assertEqual(p.core, core) + self.assertIsInstance(p, Debuggable) + + @patch("os.makedirs") + def test_init_repo(self, mock_makedirs): + self.test_obj.init_repo(datastore) + mock_makedirs.assert_called_with(os.path.join(datastore, + self.test_obj.name)) |