diff options
author | sushma-alethea <52454757+sushma-alethea@users.noreply.github.com> | 2019-07-31 20:01:41 +0530 |
---|---|---|
committer | Ganesh Nalawade <ganesh634@gmail.com> | 2019-07-31 20:01:41 +0530 |
commit | f2cb44633aad25e8668997e088139ed5354c6f3d (patch) | |
tree | 90fe2f3eb842415fb3bc0a94358836ca0310dc17 /test/units | |
parent | 58a53fe0ebc80e2c663010729e634a8ad1e16495 (diff) | |
download | ansible-f2cb44633aad25e8668997e088139ed5354c6f3d.tar.gz |
Modules to manage ICX devices (#58969)
* new module
* new terminal
* new terminal
* new cliconf
* cliconf
* icx cliconf
* icx_cliconf
* icx test units module
* icx units module
* icx banner unit test
* PR changes resolved
* changes resolved
* Changes Resolved
* check_running_config changes resolved
* added notes
* removed icx rst
* new commit
* new changes
* deleted icx rst
* icx .rst
* modified platform_index.rst
* modified platform_index.rst
* changes resolved
* PR comments resolved
* Update platform_index.rst
PR comment resolved
Diffstat (limited to 'test/units')
4 files changed, 205 insertions, 0 deletions
diff --git a/test/units/modules/network/icx/__init__.py b/test/units/modules/network/icx/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/units/modules/network/icx/__init__.py diff --git a/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt b/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt new file mode 100644 index 0000000000..4847885148 --- /dev/null +++ b/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt @@ -0,0 +1,16 @@ +banner motd require-enter-key +banner motd $ +welcome +new user +$ +! +interface ethernet 1/1/1 + port-name port name + disable + speed-duplex 10-full + inline power power-limit 7000 +! +interface ethernet 1/1/2 + speed-duplex 10-full + inline power power-limit 3000 +!
\ No newline at end of file diff --git a/test/units/modules/network/icx/icx_module.py b/test/units/modules/network/icx/icx_module.py new file mode 100644 index 0000000000..f3f9e92f2a --- /dev/null +++ b/test/units/modules/network/icx/icx_module.py @@ -0,0 +1,93 @@ +# Copyright: (c) 2019, Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import os +import json + +from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase + + +fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') +fixture_data = {} + + +def load_fixture(name): + path = os.path.join(fixture_path, name) + + if path in fixture_data: + return fixture_data[path] + + with open(path) as f: + data = f.read() + + try: + data = json.loads(data) + except Exception: + pass + + fixture_data[path] = data + return data + + +class TestICXModule(ModuleTestCase): + ENV_ICX_USE_DIFF = True + + def set_running_config(self): + self.ENV_ICX_USE_DIFF = self.get_running_config() + + def get_running_config(self, compare=None): + if compare is not None: + diff = compare + elif os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') is not None: + if os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') == 'False': + diff = False + else: + diff = True + else: + diff = True + return diff + + def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False, fields=None): + + self.load_fixtures(commands) + + if failed: + result = self.failed() + self.assertTrue(result['failed'], result) + else: + result = self.changed(changed) + self.assertEqual(result['changed'], changed, result) + + if commands is not None: + if sort: + self.assertEqual(sorted(commands), sorted(result['commands'])) + else: + self.assertEqual(commands, result['commands'], result['commands']) + + if fields is not None: + for key in fields: + if fields.get(key) is not None: + self.assertEqual(fields.get(key), result.get(key)) + + return result + + def failed(self): + with self.assertRaises(AnsibleFailJson) as exc: + self.module.main() + + result = exc.exception.args[0] + self.assertTrue(result['failed'], result) + return result + + def changed(self, changed=False): + with self.assertRaises(AnsibleExitJson) as exc: + self.module.main() + + result = exc.exception.args[0] + self.assertEqual(result['changed'], changed, result) + return result + + def load_fixtures(self, commands=None): + pass diff --git a/test/units/modules/network/icx/test_icx_banner.py b/test/units/modules/network/icx/test_icx_banner.py new file mode 100644 index 0000000000..4217410725 --- /dev/null +++ b/test/units/modules/network/icx/test_icx_banner.py @@ -0,0 +1,96 @@ +# Copyright: (c) 2019, Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type +from units.compat.mock import patch +from ansible.modules.network.icx import icx_banner +from units.modules.utils import set_module_args +from .icx_module import TestICXModule, load_fixture + + +class TestICXBannerModule(TestICXModule): + + module = icx_banner + + def setUp(self): + super(TestICXBannerModule, self).setUp() + self.mock_exec_command = patch('ansible.modules.network.icx.icx_banner.exec_command') + self.exec_command = self.mock_exec_command.start() + + self.mock_load_config = patch('ansible.modules.network.icx.icx_banner.load_config') + self.load_config = self.mock_load_config.start() + + self.mock_get_config = patch('ansible.modules.network.icx.icx_banner.get_config') + self.get_config = self.mock_get_config.start() + + self.set_running_config() + + def tearDown(self): + super(TestICXBannerModule, self).tearDown() + self.mock_exec_command.stop() + self.mock_load_config.stop() + self.mock_get_config.stop() + + def load_fixtures(self, commands=None): + compares = None + + def load_file(*args, **kwargs): + module = args + for arg in args: + if arg.params['check_running_config'] is True: + return load_fixture('icx_banner_show_banner.txt').strip() + else: + return '' + + self.exec_command.return_value = (0, '', None) + self.get_config.side_effect = load_file + self.load_config.return_value = dict(diff=None, session='session') + + def test_icx_banner_create(self): + if not self.ENV_ICX_USE_DIFF: + set_module_args(dict(banner='motd', text='welcome\nnew user')) + commands = ['banner motd $\nwelcome\nnew user\n$'] + self.execute_module(changed=True, commands=commands) + else: + for banner_type in ('motd', 'exec', 'incoming'): + set_module_args(dict(banner=banner_type, text='test\nbanner\nstring')) + commands = ['banner {0} $\ntest\nbanner\nstring\n$'.format(banner_type)] + self.execute_module(changed=True, commands=commands) + + def test_icx_banner_remove(self): + set_module_args(dict(banner='motd', state='absent')) + if not self.ENV_ICX_USE_DIFF: + commands = ['no banner motd'] + self.execute_module(changed=True, commands=commands) + else: + commands = ['no banner motd'] + self.execute_module(changed=True, commands=commands) + + def test_icx_banner_motd_enter_set(self): + set_module_args(dict(banner='motd', enterkey=True)) + + if not self.ENV_ICX_USE_DIFF: + commands = ['banner motd require-enter-key'] + self.execute_module(changed=True, commands=commands) + else: + self.execute_module(changed=False) + + def test_icx_banner_motd_enter_remove(self): + set_module_args(dict(banner='motd', state='absent', enterkey=False)) + if not self.ENV_ICX_USE_DIFF: + commands = ['no banner motd', 'no banner motd require-enter-key'] + self.execute_module(changed=True, commands=commands) + + else: + commands = ['no banner motd', 'no banner motd require-enter-key'] + self.execute_module(changed=True, commands=commands) + + def test_icx_banner_remove_compare(self): + set_module_args(dict(banner='incoming', state='absent', check_running_config='True')) + if self.get_running_config(compare=True): + if not self.ENV_ICX_USE_DIFF: + commands = [] + self.execute_module(changed=False, commands=commands) + else: + commands = [] + self.execute_module() |