diff --git a/test/units/inventory/test_host.py b/test/units/inventory/test_host.py index 5c0945f7b4e..c56956d77bf 100644 --- a/test/units/inventory/test_host.py +++ b/test/units/inventory/test_host.py @@ -15,12 +15,18 @@ # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -import unittest +# for __setstate__/__getstate__ tests +import pickle +from ansible.compat.six import string_types +from ansible.compat.tests import unittest + +from ansible.inventory.group import Group from ansible.inventory.host import Host class TestHost(unittest.TestCase): + ansible_port = 22 def setUp(self): self.hostA = Host('a') @@ -34,3 +40,99 @@ class TestHost(unittest.TestCase): def test_hashability(self): # equality implies the hash values are the same self.assertEqual(hash(self.hostA), hash(Host('a'))) + + def test_get_vars(self): + host_vars = self.hostA.get_vars() + self.assertIsInstance(host_vars, dict) + + def test_get_group_vars(self): + group_vars = self.hostA.get_group_vars() + self.assertIsInstance(group_vars, dict) + + def test_repr(self): + host_repr = repr(self.hostA) + self.assertIsInstance(host_repr, string_types) + + def test_gathered_facts_empty(self): + gathered_facts = self.hostA.gathered_facts + self.assertFalse(gathered_facts) + + def test_add_group(self): + group = Group('some_group') + group_len = len(self.hostA.groups) + self.hostA.add_group(group) + self.assertEqual(len(self.hostA.groups), group_len + 1) + + def test_get_groups(self): + group = Group('some_group') + self.hostA.add_group(group) + groups = self.hostA.get_groups() + self.assertEqual(len(groups), 1) + for _group in groups: + self.assertIsInstance(_group, Group) + + def test_get_group_vars_with_groups(self): + group = Group('some_group') + self.hostA.add_group(group) + group_vars = self.hostA.get_group_vars() + self.assertIsInstance(group_vars, dict) + + def test_get_group_vars_with_nested_groups(self): + parent_group = Group('some_parent_group') + parent_group.set_variable('parent_some_key', 'parent_some_value') + child_group = Group('some_child_group') + child_group.set_variable('child_some_key', 'child_some_value') + parent_group.add_child_group(child_group) + self.hostA.add_group(child_group) + group_vars = self.hostA.get_group_vars() + self.assertIsInstance(group_vars, dict) + self.assertIn('parent_some_key', group_vars) + self.assertIn('child_some_key', group_vars) + + def test_equals_none(self): + other = None + self.hostA == other + other == self.hostA + self.hostA != other + other != self.hostA + self.assertNotEqual(self.hostA, other) + + def test_serialize(self): + group = Group('some_group') + self.hostA.add_group(group) + data = self.hostA.serialize() + self.assertIsInstance(data, dict) + + def test_serialize_then_deserialize(self): + group = Group('some_group') + self.hostA.add_group(group) + hostA_data = self.hostA.serialize() + + hostA_clone = Host() + hostA_clone.deserialize(hostA_data) + self.assertEquals(self.hostA, hostA_clone) + + def test_set_state(self): + group = Group('some_group') + self.hostA.add_group(group) + + pickled_hostA = pickle.dumps(self.hostA) + + hostA_clone = pickle.loads(pickled_hostA) + self.assertEquals(self.hostA, hostA_clone) + + def test_set_gathered_facts(self): + self.hostA.set_gathered_facts(True) + self.assertTrue(self.hostA.gathered_facts) + + +class TestHostWithPort(TestHost): + ansible_port = 8822 + + def setUp(self): + self.hostA = Host(name='a', port=self.ansible_port) + self.hostB = Host(name='b', port=self.ansible_port) + + def test_get_vars_ansible_port(self): + host_vars = self.hostA.get_vars() + self.assertEquals(host_vars['ansible_port'], self.ansible_port)