diff options
author | kali <kali@leap.se> | 2012-08-13 17:53:11 +0900 |
---|---|---|
committer | kali <kali@leap.se> | 2012-08-13 17:53:11 +0900 |
commit | e1f935f2b06385285dadafecf35315d4d055f8b8 (patch) | |
tree | a9657d09020952f5a4b34b6320d70557db31eca6 | |
parent | 9576c67821627e5da67f9eba873ee44eafc65529 (diff) |
test_config conditional tests
-rw-r--r-- | src/leap/eip/config.py | 4 | ||||
-rw-r--r-- | src/leap/eip/test_config.py | 150 |
2 files changed, 120 insertions, 34 deletions
diff --git a/src/leap/eip/config.py b/src/leap/eip/config.py index 52f2147..11788ff 100644 --- a/src/leap/eip/config.py +++ b/src/leap/eip/config.py @@ -136,6 +136,10 @@ def check_or_create_default_vpnconf(config): # instead. try: + # XXX by now, we're expecting + # only IP format for remote. + # We should allow also domain names, + # and make a reverse resolv. remote_ip = config.get('provider', 'remote_ip') validate_ip(remote_ip) diff --git a/src/leap/eip/test_config.py b/src/leap/eip/test_config.py index 997b05e..d92ace9 100644 --- a/src/leap/eip/test_config.py +++ b/src/leap/eip/test_config.py @@ -1,24 +1,43 @@ import os import platform -import unittest +import shutil +import socket +import tempfile + +try: + import unittest2 as unittest +except ImportError: + import unittest from leap.eip import config +_system = platform.system() + class NotImplementedError(Exception): pass +# XXX use mock_open here? + class EIPConfigTest(unittest.TestCase): + __name__ = "eip_config_tests" + def setUp(self): - self.system = platform.system() self.old_path = os.environ['PATH'] - # XXX mktemp - # XXX os.environ['PATH'] = ... + + self.tdir = tempfile.mkdtemp() + + bin_tdir = os.path.join( + self.tdir, + 'bin') + os.mkdir(bin_tdir) + os.environ['PATH'] = bin_tdir def tearDown(self): os.environ['PATH'] = self.old_path + shutil.rmtree(self.tdir) # # helpers # @@ -26,11 +45,20 @@ class EIPConfigTest(unittest.TestCase): def get_username(self): return os.getlogin() - def raise_not_implemented_for_this(self): - raise NotImplementedError( - "This test is not implemented " - "for the running platform: %s" % - self.system) + #@unittest.skip + def _missing_test_for_plat(self, do_raise=False): + if do_raise: + raise NotImplementedError( + "This test is not implemented " + "for the running platform: %s" % + _system) + + def touch_exec(self): + tfile = os.path.join( + self.tdir, + 'bin', + 'openvpn') + open(tfile, 'bw').close() # # tests @@ -39,33 +67,87 @@ class EIPConfigTest(unittest.TestCase): # XXX fixme! /home/user should # be replaced for proper home lookup. - def test_get_config_file(self): - if self.system == "Linux": - self.assertEqual( - config.get_config_file( - 'test', folder="foo/bar"), - '/home/%s/.config/leap/foo/bar/test' % - self.get_username()) - else: - self.missing_test_for_plat() - - def test_get_config_dir(self): - if self.system == "Linux": - self.assertEqual( - config.get_config_dir(), - '/home/%s/.config/leap' % - self.get_username()) - else: - self.missing_test_for_plat() + @unittest.skipUnless(_system == "Linux", "linux only") + def test_lin_get_config_file(self): + """ + config file path where expected? (linux) + """ + self.assertEqual( + config.get_config_file( + 'test', folder="foo/bar"), + '/home/%s/.config/leap/foo/bar/test' % + self.get_username()) + + @unittest.skipUnless(_system == "Darwin", "mac only") + def test_mac_get_config_file(self): + """ + config file path where expected? (mac) + """ + self._missing_test_for_plat(do_raise=True) + + @unittest.skipUnless(_system == "Windows", "win only") + def test_win_get_config_file(self): + """ + config file path where expected? + """ + self._missing_test_for_plat(do_raise=True) + # + # XXX hey, I'm raising exceptions here + # on purpose. just wanted to make sure + # that the skip stuff is doing it right. + # If you're working on win/macos tests, + # feel free to remove tests that you see + # are too redundant. + + @unittest.skipUnless(_system == "Linux", "linux only") + def test_lin_get_config_dir(self): + """ + nice config dir? (linux) + """ + self.assertEqual( + config.get_config_dir(), + '/home/%s/.config/leap' % + self.get_username()) + + @unittest.skipUnless(_system == "Darwin", "mac only") + def test_mac_get_config_dir(self): + """ + nice config dir? (mac) + """ + self._missing_test_for_plat(do_raise=True) + + @unittest.skipUnless(_system == "Windows", "win only") + def test_win_get_config_dir(self): + """ + nice config dir? (win) + """ + self._missing_test_for_plat(do_raise=True) + + # provider paths + + @unittest.skipUnless(_system == "Linux", "linux only") def test_get_default_provider_path(self): - if self.system == "Linux": - self.assertEqual( - config.get_default_provider_path(), - '/home/%s/.config/leap/providers/default/' % - self.get_username()) - else: - self.missing_test_for_plat() + """ + is default provider path ok? + """ + self.assertEqual( + config.get_default_provider_path(), + '/home/%s/.config/leap/providers/default/' % + self.get_username()) + + # validate ip def test_validate_ip(self): + """ + check our ip validation + """ config.validate_ip('3.3.3.3') + with self.assertRaises(socket.error): + config.validate_ip('255.255.255.256') + with self.assertRaises(socket.error): + config.validate_ip('foobar') + + +if __name__ == "__main__": + unittest.main() |