summaryrefslogtreecommitdiff
path: root/test/units/plugins
diff options
context:
space:
mode:
authorTrishna Guha <trishnaguha17@gmail.com>2019-09-17 18:35:44 +0530
committerGitHub <noreply@github.com>2019-09-17 18:35:44 +0530
commit5cd3be9129c81388c213bcd6b5de7741b9eee8c4 (patch)
tree3066777f2202a69deb4ca4451ff20c4718dbae2b /test/units/plugins
parent74e4993628bc536466542ff4cc30925bc74a0e13 (diff)
downloadansible-5cd3be9129c81388c213bcd6b5de7741b9eee8c4.tar.gz
gather_facts action plugin: Fix loading network facts modules for smart gathering (#59856)
* fix smart gathering for network_os in gather_facts action plugin Signed-off-by: Trishna Guha <trishnaguha17@gmail.com> * Fix detection of network_os for smart gathering Signed-off-by: Trishna Guha <trishnaguha17@gmail.com> * Add unittest Signed-off-by: Trishna Guha <trishnaguha17@gmail.com> * make pep8 happy Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>
Diffstat (limited to 'test/units/plugins')
-rw-r--r--test/units/plugins/action/test_gather_facts.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/units/plugins/action/test_gather_facts.py b/test/units/plugins/action/test_gather_facts.py
new file mode 100644
index 0000000000..d65542fb64
--- /dev/null
+++ b/test/units/plugins/action/test_gather_facts.py
@@ -0,0 +1,64 @@
+# (c) 2016, Saran Ahluwalia <ahlusar.ahluwalia@gmail.com>
+#
+# This file is part of Ansible
+#
+# Ansible is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ansible is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from units.compat import unittest
+from units.compat.mock import MagicMock
+
+from ansible import constants as C
+from ansible.plugins.action.gather_facts import ActionModule
+from ansible.playbook.task import Task
+from ansible.template import Templar
+
+from units.mock.loader import DictDataLoader
+
+
+class TestNetworkFacts(unittest.TestCase):
+ task = MagicMock(Task)
+ task_vars = {'ansible_network_os': 'ios'}
+ play_context = MagicMock()
+ play_context.check_mode = False
+ connection = MagicMock()
+ fake_loader = DictDataLoader({
+ })
+ templar = Templar(loader=fake_loader)
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_network_gather_facts(self):
+ self.task.action = 'gather_facts'
+ self.task.async_val = False
+ 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._execute_module = MagicMock()
+
+ res = plugin.run(task_vars=self.task_vars)
+ self.assertEqual(res['ansible_facts']['_ansible_facts_gathered'], True)
+
+ 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, ['ios_facts'])