Source code for networkapi.plugins.Dell.FTOS.BGP.tests.test_generic

from networkapi.plugins.Dell.FTOS.BGP.Generic import Generic
from networkapi.plugins.factory import PluginFactory
from mock import Mock
from mock import MagicMock

from networkapi.plugins.Dell.FTOS.BGP.exceptions import \
    InvalidNeighborException
from django.test import TestCase


[docs]class GenericPluginTestCaseSuccess(TestCase):
[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)
def _mock_equipment(self): equipment = Mock() marca = MagicMock(nome='DELL') equipment.modelo = MagicMock(nome='FTOS', marca=marca) return equipment def _validate_invalid_neighbor_help(self, neighbor): plugin = Generic(neighbor=neighbor) with self.assertRaises(InvalidNeighborException): plugin._validate_neighbor()
[docs] def test_validate_invalid_neighbors(self): """Tests what happens when not valid Neighbors are passed as input.""" self._validate_invalid_neighbor_help({}) self._validate_invalid_neighbor_help('') self._validate_invalid_neighbor_help(1) self._validate_invalid_neighbor_help([]) self._validate_invalid_neighbor_help({ 'remote_ip': '10.10.10.1', 'remote_as': '200', 'soft_reconfiguration': 1}) self._validate_invalid_neighbor_help({ 'remote_ip': '10.10.10.1', 'remote_as': '200', 'community': 1}) self._validate_invalid_neighbor_help({ 'remote_ip': '10.10.10.1', 'remote_as': '200', 'timer_timeout': 'x'})
[docs] def test_treat_soft_reconfiguration_true(self): plugin = Generic(neighbor={'soft_reconfiguration': True}) plugin._treat_soft_reconfiguration() self.assertEquals(plugin.neighbor, {'soft_reconfiguration': 'inbound'})
[docs] def test_treat_soft_reconfiguration_false(self): plugin = Generic(neighbor={'soft_reconfiguration': False}) plugin._treat_soft_reconfiguration() self.assertEquals(plugin.neighbor, {})
[docs] def test_treat_soft_reconfiguration_without_this_field(self): plugin = Generic(neighbor={'remote_ip': '10.10.10.1', 'remote_as': '200'}) plugin._treat_soft_reconfiguration() self.assertEquals(plugin.neighbor, {'remote_ip': '10.10.10.1', 'remote_as': '200'})
[docs] def test_treat_community_true(self): plugin = Generic(neighbor={'community': True}) plugin._treat_community() self.assertEquals(plugin.neighbor, {'community': ''})
[docs] def test_treat_community_false(self): plugin = Generic(neighbor={'community': False}) plugin._treat_community() self.assertEquals(plugin.neighbor, {})
[docs] def test_treat_community_without_this_field(self): plugin = Generic(neighbor={'remote_ip': '10.10.10.1', 'remote_as': '200'}) plugin._treat_community() self.assertEquals(plugin.neighbor, {'remote_ip': '10.10.10.1', 'remote_as': '200'})
[docs] def test_remote_ip_appears_as_a_last_in_generated_ordered_dict(self): plugin = Generic(neighbor={'community': True, 'remote_as': '200', 'remote_ip': '10.10.10.1', 'maximum_hops': '10', 'description': 'NAPI' }) plugin._order_neighbor() neighbor_size = len(plugin.neighbor.items()) self.assertEquals(('remote_ip', '10.10.10.1'), plugin.neighbor.items()[neighbor_size-1])
[docs] def test_generate_xml_from_valid_dict(self): plugin = Generic(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}, asn={'name': '65114'}) xml_expected = '<bgp><as-name>65114</as-name><neighbor>' \ '<neighbor-router>11.1.1.155</neighbor-router>' \ '<timers><keepalive>3</keepalive>' \ '<hold-time>60</hold-time></timers>' \ '<ebgp-multihop>5</ebgp-multihop>' \ '<remote-as>200</remote-as>' \ '<password><password-value>' \ 'ABC</password-value></password>' \ '<remove-private-as>false</remove-private-as>' \ '<next-hop-self>false</next-hop-self>' \ '<send-community />' \ '<soft-reconfiguration>inbound</soft-reconfiguration>' \ '<description>desc</description></neighbor></bgp>' self.assertEquals(plugin._dict_to_xml(), xml_expected)
[docs] def test_generate_xml_from_dict_missing_remote_as(self): plugin = Generic(neighbor={'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}) with self.assertRaises(InvalidNeighborException): plugin._dict_to_xml()
[docs] def test_generate_xml_from_dict_missing_remote_ip(self): plugin = Generic(neighbor={'remote_as': '200', '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}) with self.assertRaises(InvalidNeighborException): plugin._dict_to_xml()
[docs] def test_generate_xml_from_dict_with_next_hop_self_in_wrong_format(self): plugin = Generic(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'}) with self.assertRaises(InvalidNeighborException): plugin._dict_to_xml()
[docs] def test_generate_xml_from_dict_with_maximum_hops_in_wrong_format(self): plugin = Generic(neighbor={'remote_as': '200', 'remote_ip': '11.1.1.155', 'password': 'ABC', 'maximum_hops': True, 'timer_keepalive': '3', 'timer_timeout': '60', 'description': 'desc', 'soft_reconfiguration': True, 'community': True, 'remove_private_as': False, 'next_hop_self': False}) with self.assertRaises(InvalidNeighborException): plugin._dict_to_xml()
[docs] def test_deploy_neighbor_with_success(self): plugin = Generic(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})
[docs] def test_deploy_neighbor_with_error(self): plugin = Generic(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})
[docs] def test_undeploy_neighbor(self): pass