summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkali <kali@leap.se>2012-08-13 17:53:11 +0900
committerkali <kali@leap.se>2012-08-13 17:53:11 +0900
commite1f935f2b06385285dadafecf35315d4d055f8b8 (patch)
treea9657d09020952f5a4b34b6320d70557db31eca6
parent9576c67821627e5da67f9eba873ee44eafc65529 (diff)
test_config conditional tests
-rw-r--r--src/leap/eip/config.py4
-rw-r--r--src/leap/eip/test_config.py150
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()