import mock import os import platform import requests import tempfile from leap.testing.basetest import BaseLeapTest from leap.base.configuration import Configuration from leap.base import configuration as config try: import unittest2 as unittest except ImportError: import unittest _system = platform.system() class DefinitionTestCase(BaseLeapTest): __name__ = "provider_config_tests" def setUp(self): self.old_home = os.environ['HOME'] self.home = tempfile.mkdtemp() os.environ['HOME'] = self.home pass #Not correct removing the test directories but will be refactor out #with kali's new test classes def tearDown(self): os.environ['HOME'] = self.old_home pass def test_complete_file(self): with mock.patch.object(requests, "get") as mock_method: mock_method.return_value.status_code = 200 mock_method.return_value.json = { u'api_uri': u'https://api.testprovider.org/', u'api_version': u'0.1.0', u'ca_cert': u'8aab80ae4326fd30721689db813733783fe0bd7e', u'ca_cert_uri': u'https://testprovider.org/cacert.pem', u'description': {u'en': u'This is a test provider'}, u'display_name': {u'en': u'Test Provider'}, u'domain': u'testprovider.org', u'enrollment_policy': u'open', u'public_key': u'cb7dbd679f911e85bc2e51bd44afd7308ee19c21', u'serial': 1, u'services': [u'eip'], u'version': u'0.1.0'} cf = Configuration("http://localhost/") self.assertIn('default', cf.providers) def test_connection_error(self): with mock.patch.object(requests, "get") as mock_method: mock_method.side_effect = requests.ConnectionError cf = Configuration() self.assertIsInstance(cf.error, str) def test_file_not_found(self): with mock.patch.object(requests, "get") as mock_method: mock_method.side_effect = requests.HTTPError cf = Configuration() self.assertIsInstance(cf.error, str) def test_invalid_url(self): cf = Configuration("ht") self.assertTrue(cf.error) class ConfigHelperFunctions(BaseLeapTest): __name__ = "config_helper_tests" # # tests # # XXX fixme! /home/user should # be replaced for proper home lookup. @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' % config.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) # provider paths @unittest.skipUnless(_system == "Linux", "linux only") def test_get_default_provider_path(self): """ is default provider path ok? """ self.assertEqual( config.get_default_provider_path(), '/home/%s/.config/leap/providers/default/' % config.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') @unittest.skip def test_validate_domain(self): """ code to be written yet """ pass # # 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)