mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
c012d0fba7
* Fix Hetzner firewall unit test imports.
* Make sure tests can actually access collections.
* Fix more relative imports.
* Fix more relative imports.
* Fix more includes.
* Fix more tests.
* One more.
* Fix syntax error in sanity import tests (invalid escape sequence "\$" caused by non-raw docs block)
* Fix permissions of ansible-test parts for sanity tests.
* Revert "Fix permissions of ansible-test parts for sanity tests."
This reverts commit c2713f0a12
.
279 lines
11 KiB
Python
279 lines
11 KiB
Python
# 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 ansible_collections.community.general.tests.unit.compat.mock import patch
|
|
from ansible_collections.community.general.plugins.modules.network.icx import icx_vlan
|
|
from ansible_collections.community.general.tests.unit.modules.utils import set_module_args
|
|
from .icx_module import TestICXModule, load_fixture
|
|
|
|
|
|
class TestICXVlanModule(TestICXModule):
|
|
|
|
module = icx_vlan
|
|
|
|
def setUp(self):
|
|
super(TestICXVlanModule, self).setUp()
|
|
self.mock_exec_command = patch('ansible_collections.community.general.plugins.modules.network.icx.icx_vlan.exec_command')
|
|
self.exec_command = self.mock_exec_command.start()
|
|
|
|
self.mock_load_config = patch('ansible_collections.community.general.plugins.modules.network.icx.icx_vlan.load_config')
|
|
self.load_config = self.mock_load_config.start()
|
|
|
|
self.mock_get_config = patch('ansible_collections.community.general.plugins.modules.network.icx.icx_vlan.get_config')
|
|
self.get_config = self.mock_get_config.start()
|
|
|
|
self.set_running_config()
|
|
|
|
def tearDown(self):
|
|
super(TestICXVlanModule, 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:
|
|
self.exec_command.return_value = (0, load_fixture('icx_vlan_config').strip(), None)
|
|
return load_fixture('icx_banner_show_banner.txt').strip()
|
|
else:
|
|
self.exec_command.return_value = (0, ''.strip(), None)
|
|
return ''
|
|
|
|
self.get_config.side_effect = load_file
|
|
self.load_config.return_value = None
|
|
|
|
def test_icx_vlan_set_tagged_port(self):
|
|
set_module_args(dict(name='test_vlan', vlan_id=5, tagged=dict(name=['ethernet 1/1/40 to 1/1/43', 'lag 44'])))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'vlan 5 name test_vlan',
|
|
'tagged ethernet 1/1/40 to 1/1/43',
|
|
'tagged lag 44'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'vlan 5 name test_vlan',
|
|
'tagged ethernet 1/1/40 to 1/1/43',
|
|
'tagged lag 44'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_add_untagged_port(self):
|
|
set_module_args(dict(name='test_vlan', vlan_id=3, interfaces=dict(name=['ethernet 1/1/10', 'lag 5'])))
|
|
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'vlan 3 name test_vlan',
|
|
'untagged lag 5',
|
|
'untagged ethernet 1/1/10'
|
|
]
|
|
self.assertEqual(set(result['commands']), set(expected_commands))
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'vlan 3 name test_vlan',
|
|
'untagged lag 5',
|
|
'untagged ethernet 1/1/10'
|
|
]
|
|
self.assertEqual(set(result['commands']), set(expected_commands))
|
|
|
|
def test_icx_vlan_purge_tagged_port(self):
|
|
set_module_args(dict(vlan_id=3, tagged=dict(name=['ethernet 1/1/40 to 1/1/42', 'lag 44'], purge=True)))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'tagged ethernet 1/1/40 to 1/1/43',
|
|
'tagged lag 44'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'no tagged ethernet 1/1/31',
|
|
'no tagged ethernet 1/1/9',
|
|
'no tagged ethernet 1/1/11',
|
|
'no tagged lag 13',
|
|
'no tagged ethernet 1/1/10',
|
|
'tagged ethernet 1/1/40',
|
|
'tagged ethernet 1/1/41',
|
|
'tagged ethernet 1/1/42',
|
|
'tagged lag 44'
|
|
]
|
|
self.assertEqual(set(result['commands']), set(expected_commands))
|
|
|
|
def test_icx_vlan_enable_ip_arp_inspection(self):
|
|
set_module_args(dict(vlan_id=5, ip_arp_inspection=True))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'ip arp inspection vlan 5'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'ip arp inspection vlan 5'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_enable_ip_dhcp_snooping(self):
|
|
set_module_args(dict(vlan_id=5, ip_dhcp_snooping=True))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'ip dhcp snooping vlan 5'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 5',
|
|
'ip dhcp snooping vlan 5'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_aggregate(self):
|
|
aggregate = [
|
|
dict(vlan_id=9, name='vlan_9', interfaces=dict(name=['ethernet 1/1/40 to 1/1/43', 'ethernet 1/1/44']), ip_arp_inspection=True),
|
|
dict(vlan_id=7, name='vlan_7', interfaces=dict(name=['ethernet 1/1/20 to 1/1/23', 'ethernet 1/1/24']), ip_dhcp_snooping=True),
|
|
]
|
|
set_module_args(dict(aggregate=aggregate))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 9',
|
|
'vlan 9 name vlan_9',
|
|
'untagged ethernet 1/1/40 to 1/1/43',
|
|
'untagged ethernet 1/1/44',
|
|
'ip arp inspection vlan 9',
|
|
'vlan 7',
|
|
'vlan 7 name vlan_7',
|
|
'untagged ethernet 1/1/20 to 1/1/23',
|
|
'untagged ethernet 1/1/24',
|
|
'ip dhcp snooping vlan 7',
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 9',
|
|
'vlan 9 name vlan_9',
|
|
'untagged ethernet 1/1/40 to 1/1/43',
|
|
'untagged ethernet 1/1/44',
|
|
'ip arp inspection vlan 9',
|
|
'vlan 7',
|
|
'vlan 7 name vlan_7',
|
|
'untagged ethernet 1/1/20 to 1/1/23',
|
|
'untagged ethernet 1/1/24',
|
|
'ip dhcp snooping vlan 7',
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_interfaces_cndt(self):
|
|
set_module_args(dict(vlan_id=3, associated_interfaces=['ethernet 1/1/20 to 1/1/22', 'ethernet 1/1/27', 'lag 11 to 12']))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
self.execute_module(failed=True)
|
|
else:
|
|
self.execute_module(changed=False)
|
|
|
|
def test_icx_vlan_tagged_cndt(self):
|
|
set_module_args(dict(vlan_id=3, associated_tagged=['ethernet 1/1/9 to 1/1/11', 'ethernet 1/1/31', 'lag 13']))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
self.execute_module(failed=True)
|
|
else:
|
|
self.execute_module(changed=False)
|
|
|
|
def test_icx_vlan_purge(self):
|
|
set_module_args(dict(vlan_id=3, purge=True))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=False)
|
|
expected_commands = []
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'no vlan 6',
|
|
'no vlan 10',
|
|
'no vlan 21'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_stp_802_1w(self):
|
|
stp_spec = dict(dict(type='802-1w', priority='20', enabled=True))
|
|
set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'untagged ethernet 1/1/40',
|
|
'spanning-tree 802-1w',
|
|
'spanning-tree 802-1w priority 20'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'untagged ethernet 1/1/40',
|
|
'spanning-tree 802-1w',
|
|
'spanning-tree 802-1w priority 20'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_stp_rstp_absent(self):
|
|
stp_spec = dict(dict(type='rstp', enabled=False))
|
|
set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'untagged ethernet 1/1/40',
|
|
'no spanning-tree'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'untagged ethernet 1/1/40',
|
|
'no spanning-tree'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
|
|
def test_icx_vlan_stp_802_1w_absent(self):
|
|
stp_spec = dict(dict(type='802-1w', enabled=False))
|
|
set_module_args(dict(vlan_id=3, stp=stp_spec))
|
|
if not self.ENV_ICX_USE_DIFF:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'no spanning-tree 802-1w',
|
|
'no spanning-tree'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|
|
else:
|
|
result = self.execute_module(changed=True)
|
|
expected_commands = [
|
|
'vlan 3',
|
|
'no spanning-tree 802-1w',
|
|
'no spanning-tree'
|
|
]
|
|
self.assertEqual(result['commands'], expected_commands)
|