Source code for networkapi.plugins.Cisco.NXOS.BGP.tests.test_cli

from networkapi.plugins.Cisco.NXOS.BGP.Cli import Generic
from networkapi.plugins.factory import PluginFactory
from mock import Mock
from mock import MagicMock
from random import randint
import os

from django.test import TestCase

[docs]class CliPluginTestCaseSuccess(TestCase):
[docs] def setUp(self): self.ipv4_neighbor = { 'remote_as': '200', 'remote_ip': '11.1.1.155', 'password': 'ABC', 'maximum_hops': '5', 'timer_keepalive': '3', 'timer_timeout': '60', 'description': 'desc', 'soft_reconfiguration': True, 'community': True, 'remove_private_as': False, 'next_hop_self': False } self.ipv6_neighbor = { 'remote_as': '200', 'remote_ip': 'fdac:3801:79b9:b96c:0:0:0:1', 'password': 'ABC', 'maximum_hops': '5', 'timer_keepalive': '3', 'timer_timeout': '60', 'description': 'desc', 'soft_reconfiguration': True, 'community': True, 'remove_private_as': False, 'next_hop_self': False } self.asn = {'name': '25114'} self.vrf = {'vrf': 'Vrf-Test'} self.virtual_interface = {'name': 'VirtInt-Test'} self.fake_template_v4_path = 'networkapi/plugins/Cisco/NXOS/BGP/' \ 'tests/configs/config_v4_cisco' self.fake_template_v6_path = 'networkapi/plugins/Cisco/NXOS/BGP/' \ 'tests/configs/config_v6_cisco'
[docs] def test_factory_bgp(self): equipment = self._mock_equipment() plugin = PluginFactory.factory(equipment) self.assertEqual(hasattr(plugin, 'bgp'), True)
[docs] def test_factory_bgp_deploy_neighbor(self): equipment = self._mock_equipment() plugin = PluginFactory.factory(equipment) neighbor = {} self.assertEqual(hasattr(plugin.bgp(neighbor), 'deploy_neighbor'), True)
[docs] def test_factory_bgp_undeploy_neighbor(self): equipment = self._mock_equipment() plugin = PluginFactory.factory(equipment) neighbor = {} self.assertEqual(hasattr(plugin.bgp(neighbor), 'undeploy_neighbor'), True)
[docs] def test_generate_template_dict_for_ipv4_neighbor(self): plugin = Generic(equipment=self._mock_equipment(), virtual_interface=self.virtual_interface, neighbor=self.ipv4_neighbor, asn=self.asn, vrf=self.vrf) returned_dict = plugin._generate_template_dict() expected_dict = { 'AS_NUMBER': '25114', 'VRF_NAME': 'Vrf-Test', 'VIRTUAL_INTERFACE': 'VirtInt-Test', 'REMOTE_IP': '11.1.1.155', 'REMOTE_AS': '200', 'PASSWORD': 'ABC', 'TIMER_KEEPALIVE': '3', 'TIMER_TIMEOUT': '60', 'DESCRIPTION': 'desc', 'SOFT_RECONFIGURATION': True, 'COMMUNITY': True, 'REMOVE_PRIVATE_AS': False, 'NEXT_HOP_SELF': False } self.assertDictEqual(expected_dict, returned_dict)
[docs] def test_get_deploy_template_name_for_ipv4_neighbor(self): self._helper_to_check_templates_name('deploy', self.ipv4_neighbor, 'neighbor_v4_add')
[docs] def test_get_deploy_template_name_for_ipv6_neighbor(self): self._helper_to_check_templates_name('deploy', self.ipv6_neighbor, 'neighbor_v6_add')
[docs] def test_get_undeploy_template_name_for_ipv4_neighbor(self): self._helper_to_check_templates_name('undeploy', self.ipv4_neighbor, 'neighbor_v4_remove')
[docs] def test_get_undeploy_template_name_for_ipv6_neighbor(self): self._helper_to_check_templates_name('undeploy', self.ipv6_neighbor, 'neighbor_v6_remove')
[docs] def test_generate_config_for_neighbor_v4_add(self): self._generate_config_helper('deploy', self.ipv4_neighbor, self.virtual_interface, self.asn, self.vrf, 'template_neighbor_v4_add_cisco')
[docs] def test_generate_config_for_neighbor_v6_add(self): self._generate_config_helper('deploy', self.ipv6_neighbor, self.virtual_interface, self.asn, self.vrf, 'template_neighbor_v6_add_cisco')
[docs] def test_generate_config_for_neighbor_v4_remove(self): self._generate_config_helper('undeploy', self.ipv4_neighbor, self.virtual_interface, self.asn, self.vrf, 'template_neighbor_v4_remove_cisco')
[docs] def test_generate_config_for_neighbor_v6_remove(self): self._generate_config_helper('undeploy', self.ipv6_neighbor, self.virtual_interface, self.asn, self.vrf, 'template_neighbor_v6_remove_cisco')
def _mock_equipment(self): equipment = Mock() marca = MagicMock(nome='CISCO') equipment.modelo = MagicMock(nome='NEXUS', marca=marca) equipment.maintenance = False equipment.id = randint(0,100000) return equipment def _mock_roteiro(self, roteiro): roteiro_str = MagicMock(roteiro=roteiro) roteiro_mock = MagicMock(roteiro=roteiro_str) return Mock(return_value=roteiro_mock) def _mock_plugin(self, plugin, roteiro): plugin.connect = MagicMock() plugin._ensure_privilege_level = MagicMock() plugin.close = MagicMock() plugin._copy_script_file_to_config = MagicMock() plugin._get_equipment_template = self._mock_roteiro(roteiro) return plugin def _helper_to_check_templates_name(self, type_operation, neighbor, expected_template_name): plugin = Generic(equipment=self._mock_equipment(), virtual_interface=self.virtual_interface, neighbor=neighbor, asn=self.asn, vrf=self.vrf) if type_operation == 'deploy': returned_template_name = plugin._get_template_deploy_name() elif type_operation == 'undeploy': returned_template_name = plugin._get_template_undeploy_name() self.assertEquals(expected_template_name, returned_template_name) def _generate_config_helper(self, type_operation, neighbor, virtual_interface, asn, vrf, roteiro): plugin = Generic(equipment=self._mock_equipment(), virtual_interface=virtual_interface, neighbor=neighbor, asn=asn, vrf=vrf) plugin = self._mock_plugin(plugin, roteiro) if type_operation == 'deploy': template_name = plugin._get_template_deploy_name() elif type_operation == 'undeploy': template_name = plugin._get_template_undeploy_name() path_file_to_deploy = plugin._generate_config_file(template_name) if 'v4' in roteiro: fake_cisco = self._get_file_content(self.fake_template_v4_path, False) elif 'v6' in roteiro: fake_cisco = self._get_file_content(self.fake_template_v6_path, False) file_to_deploy = self._get_file_content(path_file_to_deploy, True) self.assertEquals(fake_cisco, file_to_deploy) def _get_file_content(self, path, delete_after): with open(path, 'r') as f: content = f.read() try: if delete_after: os.remove(path) except OSError: pass return content