""" Unittests for ooinstall utils. """ import unittest import copy import mock import six from ooinstall.utils import debug_env, is_valid_hostname class TestUtils(unittest.TestCase): """ Parent unittest TestCase. """ def setUp(self): self.debug_all_params = { 'OPENSHIFT_FOO': 'bar', 'ANSIBLE_FOO': 'bar', 'OO_FOO': 'bar' } self.expected = [ mock.call('ANSIBLE_FOO: bar'), mock.call('OPENSHIFT_FOO: bar'), mock.call('OO_FOO: bar'), ] ###################################################################### # Validate ooinstall.utils.debug_env functionality def test_utils_debug_env_all_debugged(self): """Verify debug_env debugs specific env variables""" with mock.patch('ooinstall.utils.installer_log') as _il: debug_env(self.debug_all_params) # Debug was called for each item we expect self.assertEqual( len(self.debug_all_params), _il.debug.call_count) # Each item we expect was logged six.assertCountEqual( self, self.expected, _il.debug.call_args_list) def test_utils_debug_env_some_debugged(self): """Verify debug_env skips non-wanted env variables""" debug_some_params = copy.deepcopy(self.debug_all_params) # This will not be logged by debug_env debug_some_params['MG_FRBBR'] = "SKIPPED" with mock.patch('ooinstall.utils.installer_log') as _il: debug_env(debug_some_params) # The actual number of debug calls was less than the # number of items passed to debug_env self.assertLess( _il.debug.call_count, len(debug_some_params)) six.assertCountEqual( self, self.expected, _il.debug.call_args_list) ###################################################################### def test_utils_is_valid_hostname_invalid(self): """Verify is_valid_hostname can detect None or too-long hostnames""" # A hostname that's empty, None, or more than 255 chars is invalid empty_hostname = '' res = is_valid_hostname(empty_hostname) self.assertFalse(res) none_hostname = None res = is_valid_hostname(none_hostname) self.assertFalse(res) too_long_hostname = "a" * 256 res = is_valid_hostname(too_long_hostname) self.assertFalse(res) def test_utils_is_valid_hostname_ends_with_dot(self): """Verify is_valid_hostname can parse hostnames with trailing periods""" hostname = "foo.example.com." res = is_valid_hostname(hostname) self.assertTrue(res) def test_utils_is_valid_hostname_normal_hostname(self): """Verify is_valid_hostname can parse regular hostnames""" hostname = "foo.example.com" res = is_valid_hostname(hostname) self.assertTrue(res)