diff options
Diffstat (limited to 'test/units/plugins/action/test_gather_facts.py')
-rw-r--r-- | test/units/plugins/action/test_gather_facts.py | 67 |
1 files changed, 56 insertions, 11 deletions
diff --git a/test/units/plugins/action/test_gather_facts.py b/test/units/plugins/action/test_gather_facts.py index e15edd396f..12fe4532b5 100644 --- a/test/units/plugins/action/test_gather_facts.py +++ b/test/units/plugins/action/test_gather_facts.py @@ -22,8 +22,9 @@ from units.compat import unittest from units.compat.mock import MagicMock, patch from ansible import constants as C -from ansible.plugins.action.gather_facts import ActionModule from ansible.playbook.task import Task +from ansible.plugins.action.gather_facts import ActionModule as GatherFactsAction +from ansible.plugins import loader as plugin_loader from ansible.template import Templar import ansible.executor.module_common as module_common @@ -45,15 +46,66 @@ class TestNetworkFacts(unittest.TestCase): def tearDown(self): pass + @patch.object(module_common, '_get_collection_metadata', return_value={}) + def test_network_gather_facts_smart_facts_module(self, mock_collection_metadata): + self.fqcn_task_vars = {'ansible_network_os': 'ios'} + self.task.action = 'gather_facts' + self.task.async_val = False + self.task.args = {} + + plugin = GatherFactsAction(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=None) + get_module_args = MagicMock() + plugin._get_module_args = get_module_args + plugin._execute_module = MagicMock() + + res = plugin.run(task_vars=self.fqcn_task_vars) + + # assert the gather_facts config is 'smart' + facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.fqcn_task_vars) + self.assertEqual(facts_modules, ['smart']) + + # assert the correct module was found + self.assertEqual(get_module_args.call_count, 1) + + self.assertEqual( + get_module_args.call_args.args, + ('ansible.legacy.ios_facts', {'ansible_network_os': 'ios'},) + ) + + @patch.object(module_common, '_get_collection_metadata', return_value={}) + def test_network_gather_facts_smart_facts_module_fqcn(self, mock_collection_metadata): + self.fqcn_task_vars = {'ansible_network_os': 'cisco.ios.ios'} + self.task.action = 'gather_facts' + self.task.async_val = False + self.task.args = {} + + plugin = GatherFactsAction(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=None) + get_module_args = MagicMock() + plugin._get_module_args = get_module_args + plugin._execute_module = MagicMock() + + res = plugin.run(task_vars=self.fqcn_task_vars) + + # assert the gather_facts config is 'smart' + facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.fqcn_task_vars) + self.assertEqual(facts_modules, ['smart']) + + # assert the correct module was found + self.assertEqual(get_module_args.call_count, 1) + + self.assertEqual( + get_module_args.call_args.args, + ('cisco.ios.ios_facts', {'ansible_network_os': 'cisco.ios.ios'},) + ) + def test_network_gather_facts(self): self.task_vars = {'ansible_network_os': 'ios'} self.task.action = 'gather_facts' self.task.async_val = False - self.task._ansible_internal_redirect_list = [] self.task.args = {'gather_subset': 'min'} self.task.module_defaults = [{'ios_facts': {'gather_subset': 'min'}}] - plugin = ActionModule(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=None) + plugin = GatherFactsAction(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=plugin_loader) plugin._execute_module = MagicMock() res = plugin.run(task_vars=self.task_vars) @@ -62,19 +114,15 @@ class TestNetworkFacts(unittest.TestCase): mod_args = plugin._get_module_args('ios_facts', task_vars=self.task_vars) self.assertEqual(mod_args['gather_subset'], 'min') - facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.task_vars) - self.assertEqual(facts_modules, ['ansible.legacy.ios_facts']) - @patch.object(module_common, '_get_collection_metadata', return_value={}) def test_network_gather_facts_fqcn(self, mock_collection_metadata): self.fqcn_task_vars = {'ansible_network_os': 'cisco.ios.ios'} self.task.action = 'gather_facts' - self.task._ansible_internal_redirect_list = ['cisco.ios.ios_facts'] self.task.async_val = False self.task.args = {'gather_subset': 'min'} self.task.module_defaults = [{'cisco.ios.ios_facts': {'gather_subset': 'min'}}] - plugin = ActionModule(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=None) + plugin = GatherFactsAction(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=plugin_loader) plugin._execute_module = MagicMock() res = plugin.run(task_vars=self.fqcn_task_vars) @@ -82,6 +130,3 @@ class TestNetworkFacts(unittest.TestCase): mod_args = plugin._get_module_args('cisco.ios.ios_facts', task_vars=self.fqcn_task_vars) self.assertEqual(mod_args['gather_subset'], 'min') - - facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.fqcn_task_vars) - self.assertEqual(facts_modules, ['cisco.ios.ios_facts']) |