From 2df292d816023007e1fd93af22bef30a9a99ac65 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 27 Sep 2024 23:19:52 -0500 Subject: [PATCH] Tweak tests --- netbox_routing/tests/eigrp/__init__.py | 0 netbox_routing/tests/eigrp/test_api.py | 30 +++ netbox_routing/tests/eigrp/test_filtersets.py | 32 +++ netbox_routing/tests/eigrp/test_forms.py | 30 +++ netbox_routing/tests/eigrp/test_models.py | 29 +++ netbox_routing/tests/eigrp/test_views.py | 0 netbox_routing/tests/ospf/__init__.py | 0 netbox_routing/tests/ospf/test_api.py | 119 +++++++++ netbox_routing/tests/ospf/test_filtersets.py | 183 +++++++++++++ netbox_routing/tests/ospf/test_forms.py | 101 ++++++++ netbox_routing/tests/ospf/test_models.py | 21 ++ netbox_routing/tests/ospf/test_views.py | 153 +++++++++++ netbox_routing/tests/static/__init__.py | 0 netbox_routing/tests/static/test_api.py | 69 +++++ .../tests/static/test_filtersets.py | 64 +++++ netbox_routing/tests/static/test_forms.py | 29 +++ netbox_routing/tests/static/test_models.py | 14 + netbox_routing/tests/static/test_views.py | 58 +++++ netbox_routing/tests/test_api.py | 191 ++------------ netbox_routing/tests/test_filtersets.py | 241 ++---------------- netbox_routing/tests/test_forms.py | 129 ++-------- netbox_routing/tests/test_models.py | 20 +- netbox_routing/tests/test_views.py | 202 +-------------- 23 files changed, 1008 insertions(+), 707 deletions(-) create mode 100644 netbox_routing/tests/eigrp/__init__.py create mode 100644 netbox_routing/tests/eigrp/test_api.py create mode 100644 netbox_routing/tests/eigrp/test_filtersets.py create mode 100644 netbox_routing/tests/eigrp/test_forms.py create mode 100644 netbox_routing/tests/eigrp/test_models.py create mode 100644 netbox_routing/tests/eigrp/test_views.py create mode 100644 netbox_routing/tests/ospf/__init__.py create mode 100644 netbox_routing/tests/ospf/test_api.py create mode 100644 netbox_routing/tests/ospf/test_filtersets.py create mode 100644 netbox_routing/tests/ospf/test_forms.py create mode 100644 netbox_routing/tests/ospf/test_models.py create mode 100644 netbox_routing/tests/ospf/test_views.py create mode 100644 netbox_routing/tests/static/__init__.py create mode 100644 netbox_routing/tests/static/test_api.py create mode 100644 netbox_routing/tests/static/test_filtersets.py create mode 100644 netbox_routing/tests/static/test_forms.py create mode 100644 netbox_routing/tests/static/test_models.py create mode 100644 netbox_routing/tests/static/test_views.py diff --git a/netbox_routing/tests/eigrp/__init__.py b/netbox_routing/tests/eigrp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/netbox_routing/tests/eigrp/test_api.py b/netbox_routing/tests/eigrp/test_api.py new file mode 100644 index 0000000..aeb411b --- /dev/null +++ b/netbox_routing/tests/eigrp/test_api.py @@ -0,0 +1,30 @@ +from django.urls import reverse +from netaddr.ip import IPAddress +from rest_framework import status + +from dcim.models import Interface +from ipam.models import VRF +from utilities.testing import APIViewTestCases, APITestCase, create_test_device + +from netbox_routing.models import EIGRPRouter, EIGRPAddressFamily, EIGRPNetwork, EIGRPInterface +from netbox_routing.tests.base import IPAddressFieldMixin + +__all__ = ( + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) + +class EIGRPRouterTestCase(APIViewTestCases): + pass + +class EIGRPAddressFamilyTestCase(APIViewTestCases): + pass + +class EIGRPNetworkTestCase(APIViewTestCases): + pass + +class EIGRPInterfaceTestCase(APIViewTestCases): + pass + diff --git a/netbox_routing/tests/eigrp/test_filtersets.py b/netbox_routing/tests/eigrp/test_filtersets.py new file mode 100644 index 0000000..fc9c9b9 --- /dev/null +++ b/netbox_routing/tests/eigrp/test_filtersets.py @@ -0,0 +1,32 @@ +import netaddr +from django.test import TestCase + +from dcim.models import Device, Interface +from ipam.models import VRF +from utilities.testing import create_test_device + +from netbox_routing.filtersets import * +from netbox_routing.models import * + +__all__ = ( + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) + + +class EIGRPRouterTestCase(TestCase): + pass + + +class EIGRPAddressFamilyTestCase(TestCase): + pass + + +class EIGRPNetworkTestCase(TestCase): + pass + + +class EIGRPInterfaceTestCase(TestCase): + pass diff --git a/netbox_routing/tests/eigrp/test_forms.py b/netbox_routing/tests/eigrp/test_forms.py new file mode 100644 index 0000000..4d7adf0 --- /dev/null +++ b/netbox_routing/tests/eigrp/test_forms.py @@ -0,0 +1,30 @@ +from django.test import TestCase + +from dcim.models import Device, Interface +from utilities.testing import create_test_device + +from netbox_routing.forms import * +from netbox_routing.models import * + +__all__ = ( + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) + + +class EIGRPRouterTestCase(TestCase): + pass + + +class EIGRPAddressFamilyTestCase(TestCase): + pass + + +class EIGRPNetworkTestCase(TestCase): + pass + + +class EIGRPInterfaceTestCase(TestCase): + pass diff --git a/netbox_routing/tests/eigrp/test_models.py b/netbox_routing/tests/eigrp/test_models.py new file mode 100644 index 0000000..2310c51 --- /dev/null +++ b/netbox_routing/tests/eigrp/test_models.py @@ -0,0 +1,29 @@ +from django.core.exceptions import ValidationError +from django.test import TestCase + +from utilities.testing import create_test_device + +from netbox_routing.models import * + +__all__ = ( + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) + + +class EIGRPRouterTestCase(TestCase): + pass + + +class EIGRPAddressFamilyTestCase(TestCase): + pass + + +class EIGRPNetworkTestCase(TestCase): + pass + + +class EIGRPInterfaceTestCase(TestCase): + pass diff --git a/netbox_routing/tests/eigrp/test_views.py b/netbox_routing/tests/eigrp/test_views.py new file mode 100644 index 0000000..e69de29 diff --git a/netbox_routing/tests/ospf/__init__.py b/netbox_routing/tests/ospf/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/netbox_routing/tests/ospf/test_api.py b/netbox_routing/tests/ospf/test_api.py new file mode 100644 index 0000000..92c83ef --- /dev/null +++ b/netbox_routing/tests/ospf/test_api.py @@ -0,0 +1,119 @@ +from dcim.models import Interface +from utilities.testing import APIViewTestCases, create_test_device + +from netbox_routing.models import OSPFInstance, OSPFArea, OSPFInterface +from netbox_routing.tests.base import IPAddressFieldMixin + +__all__ = ( + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', +) + + +class OSPFInstanceTestCase(IPAddressFieldMixin, APIViewTestCases.APIViewTestCase): + model = OSPFInstance + view_namespace = 'plugins-api:netbox_routing' + brief_fields = ['device', 'display', 'id', 'name', 'process_id', 'router_id', 'url', ] + + user_permissions = ('dcim.view_device', ) + + bulk_update_data = { + 'description': "A test description" + } + + @classmethod + def setUpTestData(cls): + + device = create_test_device(name='Test Device') + + data = ( + cls.model(name='Instance 1', device=device, router_id='1.1.1.1', process_id=1), + cls.model(name='Instance 2', device=device, router_id='2.2.2.2', process_id=2), + cls.model(name='Instance 3', device=device, router_id='3.3.3.3', process_id=3), + ) + cls.model.objects.bulk_create(data) + + cls.create_data = [ + { + 'name': 'Instance X', + 'device': device.pk, + 'router_id': '4.4.4.4', + 'process_id': 4 + }, + ] + + +class OSPFAreaTestCase(IPAddressFieldMixin , APIViewTestCases.APIViewTestCase): + model = OSPFArea + view_namespace = 'plugins-api:netbox_routing' + brief_fields = ['area_id', 'display', 'id', 'url', ] + + bulk_update_data = { + 'description': "A test description" + } + + @classmethod + def setUpTestData(cls): + + data = ( + cls.model(area_id='1'), + cls.model(area_id='2'), + cls.model(area_id='3'), + ) + cls.model.objects.bulk_create(data) + + cls.create_data = [ + { + 'area_id': '4', + }, + ] + + +class OSPFInterfaceTestCase(IPAddressFieldMixin, APIViewTestCases.APIViewTestCase): + model = OSPFInterface + view_namespace = 'plugins-api:netbox_routing' + brief_fields = ['area', 'display', 'id', 'instance', 'interface', 'passive', 'url', ] + + user_permissions = ( + 'netbox_routing.view_ospfinstance', 'netbox_routing.view_ospfarea', 'dcim.view_device', 'dcim.view_interface', + ) + + bulk_update_data = { + 'description': "A test description" + } + + @classmethod + def setUpTestData(cls): + + device = create_test_device(name='Test Device') + instance = OSPFInstance.objects.create(name='Instance 1', device=device, router_id='1.1.1.1', process_id=1) + area = OSPFArea.objects.create(area_id='0') + + interfaces = ( + Interface(device=device, name='Interface 1', type='virtual'), + Interface(device=device, name='Interface 2', type='virtual'), + Interface(device=device, name='Interface 3', type='virtual'), + Interface(device=device, name='Interface 4', type='virtual'), + ) + Interface.objects.bulk_create(interfaces) + + data = ( + cls.model(instance=instance, area=area, interface=interfaces[0], passive=True), + cls.model(instance=instance, area=area, interface=interfaces[1], passive=False), + cls.model(instance=instance, area=area, interface=interfaces[2], ), + ) + cls.model.objects.bulk_create(data) + + cls.create_data = [ + { + 'instance': instance.pk, + 'area': area.pk, + 'interface': interfaces[3].pk, + 'passive': True, + 'priority': 2, + 'authentication': 'message-digest', + 'passphrase': 'test-password', + 'bfd': True, + }, + ] diff --git a/netbox_routing/tests/ospf/test_filtersets.py b/netbox_routing/tests/ospf/test_filtersets.py new file mode 100644 index 0000000..46da1d6 --- /dev/null +++ b/netbox_routing/tests/ospf/test_filtersets.py @@ -0,0 +1,183 @@ +import netaddr +from django.test import TestCase + +from dcim.models import Device, Interface +from ipam.models import VRF +from utilities.testing import create_test_device + +from netbox_routing.filtersets import * +from netbox_routing.models import * + +__all__ = ( + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', +) + + +class OSPFInstanceTestCase(TestCase): + queryset = OSPFInstance.objects.all() + filterset = OSPFInstanceFilterSet + + @classmethod + def setUpTestData(cls): + devices = [ + create_test_device(name='Device 1'), + create_test_device(name='Device 2'), + create_test_device(name='Device 3'), + create_test_device(name='Device 4'), + ] + + data = ( + OSPFInstance(name='Instance 1', device=devices[0], router_id='0.0.0.0', process_id=0), + OSPFInstance(name='Instance 2', device=devices[1], router_id='1.1.1.1', process_id=1), + OSPFInstance(name='Instance 3', device=devices[2], router_id='2.2.2.2', process_id=2), + OSPFInstance(name='Instance 3', device=devices[3], router_id='3.3.3.3', process_id=3), + ) + + OSPFInstance.objects.bulk_create(data) + + def test_q(self): + params = {'q': 'Instance 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['Instance 1', 'Instance 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_device(self): + data = Device.objects.all()[0:2] + + params = {'device_id': [data[0].pk, data[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + params = {'device': [data[0].name, data[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_process_id(self): + params = {'process_id': [1, 2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_router_id(self): + params = {'router_id': ['1.1.1.1', '2.2.2.2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + + +class OSPFAreaTestCase(TestCase): + queryset = OSPFArea.objects.all() + filterset = OSPFAreaFilterSet + + @classmethod + def setUpTestData(cls): + + data = ( + OSPFArea(area_id='0.0.0.0'), + OSPFArea(area_id='1.1.1.1'), + OSPFArea(area_id=0), + OSPFArea(area_id=1), + ) + + OSPFArea.objects.bulk_create(data) + + def test_q(self): + params = {'q': '1.1.1.1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_area_id(self): + params = {'area_id': ['0', '1.1.1.1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class OSPFInterfaceTestCase(TestCase): + queryset = OSPFInterface.objects.all() + filterset = OSPFInterfaceFilterSet + + @classmethod + def setUpTestData(cls): + devices = ( + create_test_device(name='Device 1'), + create_test_device(name='Device 2'), + create_test_device(name='Device 3'), + create_test_device(name='Device 4'), + ) + interfaces = ( + Interface(device=devices[0], name='Interface 1', type='virtual'), + Interface(device=devices[1], name='Interface 2', type='virtual'), + Interface(device=devices[2], name='Interface 3', type='virtual'), + Interface(device=devices[3], name='Interface 4', type='virtual'), + ) + Interface.objects.bulk_create(interfaces) + + areas = ( + OSPFArea(area_id='0.0.0.0'), + OSPFArea(area_id=1), + OSPFArea(area_id='2.2.2.2'), + OSPFArea(area_id=3), + ) + OSPFArea.objects.bulk_create(areas) + + instances = ( + OSPFInstance(name='Instance 0', device=devices[0], router_id='0.0.0.0', process_id=0), + OSPFInstance(name='Instance 1', device=devices[1], router_id='1.1.1.1', process_id=1), + OSPFInstance(name='Instance 2', device=devices[2], router_id='2.2.2.2', process_id=2), + OSPFInstance(name='Instance 3', device=devices[3], router_id='3.3.3.3', process_id=3), + ) + OSPFInstance.objects.bulk_create(instances) + + data = ( + OSPFInterface(interface=interfaces[0], instance=instances[0], area=areas[0], passive=True), + OSPFInterface(interface=interfaces[1], instance=instances[1], area=areas[1], passive=False), + OSPFInterface(interface=interfaces[2], instance=instances[2], area=areas[2], passive=True), + OSPFInterface(interface=interfaces[3], instance=instances[3], area=areas[3], passive=False), + ) + OSPFInterface.objects.bulk_create(data) + + def test_q(self): + params = {'q': 'Interface 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + params = {'q': 'Instance 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_instances(self): + data = OSPFInstance.objects.all()[0:2] + + params = {'instance_id': [data[0].pk, data[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + params = {'instance': [data[0].name, data[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_area(self): + data = OSPFArea.objects.all()[0:2] + + params = {'area_id': [data[0].pk, data[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + params = {'area': [data[0].area_id, data[1].area_id]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_devices(self): + data = Device.objects.all()[0:2] + + params = {'device_id': [data[0].pk, data[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + params = {'device': [data[0].name, data[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_interfaces(self): + data = Interface.objects.all()[0:2] + + params = {'interface_id': [data[0].pk, data[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + params = {'interface': [data[0].name, data[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_passive(self): + data = Interface.objects.all()[0:2] + + params = {'passive': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox_routing/tests/ospf/test_forms.py b/netbox_routing/tests/ospf/test_forms.py new file mode 100644 index 0000000..1f1cc3a --- /dev/null +++ b/netbox_routing/tests/ospf/test_forms.py @@ -0,0 +1,101 @@ +from django.test import TestCase + +from dcim.models import Device, Interface +from utilities.testing import create_test_device + +from netbox_routing.forms import * +from netbox_routing.models import * + +__all__ = ( + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', +) + + +class OSPFInstanceTestCase(TestCase): + + @classmethod + def setUpTestData(cls): + device = create_test_device(name='Device 1') + + def test_instance(self): + form = OSPFInstanceForm(data={ + 'name': 'Instance 1', + 'process_id': '0', + 'router_id': '10.10.10.1', + 'device': Device.objects.first().pk, + }) + if not form.is_valid(): + print(form.errors) + self.assertTrue(form.is_valid()) + self.assertTrue(form.save()) + + +class OSPFAreaTestCase(TestCase): + + @classmethod + def setUpTestData(cls): + pass + + def test_valid_area_id_with_ip(self): + form = OSPFAreaForm(data={ + 'area_id': '0.0.0.0', + }) + self.assertTrue(form.is_valid()) + self.assertTrue(form.save()) + + def test_valid_area_id_with_integer(self): + form = OSPFAreaForm(data={ + 'area_id': '0', + }) + self.assertTrue(form.is_valid()) + self.assertTrue(form.save()) + + def test_invalid_area(self): + form = OSPFAreaForm(data={ + 'area_id': 'a.a.a.a', + }) + self.assertFalse(form.is_valid()) + with self.assertRaises(ValueError): + form.save() + + +class OSPFInterfaceTestCase(TestCase): + + @classmethod + def setUpTestData(cls): + device = create_test_device(name='Device 1') + interface = Interface.objects.create(name='Interface 1', device=device, type='virtual') + instance = OSPFInstance.objects.create( + name='Instance 1', + router_id='10.10.10.1', + process_id=0, + device_id=device.pk + ) + area = OSPFArea.objects.create(area_id='0.0.0.0') + + def test_interface_with_correct_device(self): + form = OSPFInterfaceForm(data={ + 'device': Device.objects.first().pk, + 'interface': Interface.objects.first().pk, + 'instance': OSPFInstance.objects.first().pk, + 'area': OSPFArea.objects.first().pk, + 'passive': True, + }) + self.assertTrue(form.is_valid()) + self.assertTrue(form.save()) + + def test_interface_with_incorrect_device(self): + device = create_test_device(name='Device 2') + interface = Interface.objects.create(name='Interface 1', device=device, type='virtual') + + form = OSPFInterfaceForm(data={ + 'device': device.pk, + 'interface': interface.pk, + 'instance': OSPFInstance.objects.first().pk, + 'area': OSPFArea.objects.first().pk, + }) + self.assertFalse(form.is_valid()) + with self.assertRaises(ValueError): + form.save() diff --git a/netbox_routing/tests/ospf/test_models.py b/netbox_routing/tests/ospf/test_models.py new file mode 100644 index 0000000..ff380f1 --- /dev/null +++ b/netbox_routing/tests/ospf/test_models.py @@ -0,0 +1,21 @@ +from django.test import TestCase + +from netbox_routing.models import * + +__all__ = ( + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', +) + + +class OSPFInstanceTestCase(TestCase): + pass + + +class OSPFAreaTestCase(TestCase): + pass + + +class OSPFInterfaceTestCase(TestCase): + pass diff --git a/netbox_routing/tests/ospf/test_views.py b/netbox_routing/tests/ospf/test_views.py new file mode 100644 index 0000000..c80bfd1 --- /dev/null +++ b/netbox_routing/tests/ospf/test_views.py @@ -0,0 +1,153 @@ +import netaddr + +from dcim.models import Interface +from ipam.models import VRF +from utilities.testing import ViewTestCases, create_test_device + +from netbox_routing.models import StaticRoute, OSPFInstance, OSPFArea, OSPFInterface +from netbox_routing.tests.base import IPAddressFieldMixin + +__all__ = ( + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', +) + + +class OSPFInstanceTestCase( + IPAddressFieldMixin, + ViewTestCases.GetObjectViewTestCase, + ViewTestCases.GetObjectChangelogViewTestCase, + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkEditObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase, +): + # ViewTestCases.BulkImportObjectsViewTestCase, + model = OSPFInstance + + @classmethod + def setUpTestData(cls): + devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] + + routes = ( + cls.model(name="Instance 0", device=devices[0], router_id='0.0.0.0', process_id='0'), + cls.model(name="Instance 1", device=devices[0], router_id='1.1.1.1', process_id='1'), + cls.model(name="Instance 2", device=devices[0], router_id='2.2.2.2', process_id='2'), + ) + cls.model.objects.bulk_create(routes) + + cls.form_data = { + 'name': 'Instance X', + 'device': devices[1].pk, + 'router_id': '4.4.4.4', + 'process_id': 4, + } + + cls.bulk_edit_data = { + 'description': 'A test Instance description' + } + + def _get_base_url(self): + return 'plugins:netbox_routing:ospfinstance_{}' + + +class OSPFAreaTestCase( + IPAddressFieldMixin, + ViewTestCases.GetObjectViewTestCase, + ViewTestCases.GetObjectChangelogViewTestCase, + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkEditObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase, +): + # ViewTestCases.BulkImportObjectsViewTestCase, + model = OSPFArea + + @classmethod + def setUpTestData(cls): + areas = ( + cls.model(area_id='0.0.0.0'), + cls.model(area_id='1.1.1.1'), + cls.model(area_id='2.2.2.2'), + ) + cls.model.objects.bulk_create(areas) + + cls.form_data = { + 'area_id': '4.4.4.4', + } + + cls.bulk_edit_data = { + 'description': 'A test Area description' + } + + def _get_base_url(self): + return 'plugins:netbox_routing:ospfarea_{}' + + +class OSPFInterfaceTestCase( + IPAddressFieldMixin, + ViewTestCases.GetObjectViewTestCase, + ViewTestCases.GetObjectChangelogViewTestCase, + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkEditObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase, +): + # ViewTestCases.BulkImportObjectsViewTestCase, + model = OSPFInterface + + @classmethod + def setUpTestData(cls): + devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] + interfaces = ( + Interface(name='Interface 1', device=devices[0], type='virtual'), + Interface(name='Interface 2', device=devices[0], type='virtual'), + Interface(name='Interface 3', device=devices[1], type='virtual'), + Interface(name='Interface 4', device=devices[1], type='virtual'), + ) + Interface.objects.bulk_create(interfaces) + + instances = ( + OSPFInstance(name="Instance 0", device=devices[0], router_id='0.0.0.0', process_id='0'), + OSPFInstance(name="Instance 1", device=devices[0], router_id='1.1.1.1', process_id='1'), + OSPFInstance(name="Instance 2", device=devices[1], router_id='2.2.2.2', process_id='2'), + OSPFInstance(name="Instance 3", device=devices[1], router_id='3.3.3.3', process_id='3'), + ) + OSPFInstance.objects.bulk_create(instances) + + areas = ( + OSPFArea(area_id='0.0.0.0'), + OSPFArea(area_id='1.1.1.1'), + OSPFArea(area_id='2.2.2.2'), + OSPFArea(area_id='3.3.3.3'), + ) + OSPFArea.objects.bulk_create(areas) + + ospfinterfaces = ( + cls.model(interface=interfaces[0], instance=instances[0], area=areas[0], passive=False), + cls.model(interface=interfaces[1], instance=instances[1], area=areas[1]), + cls.model(interface=interfaces[2], instance=instances[2], area=areas[2], passive=False), + ) + cls.model.objects.bulk_create(ospfinterfaces) + + cls.form_data = { + 'interface': interfaces[3].pk, + 'area': areas[3].pk, + 'instance': instances[3].pk, + 'passive': True, + } + + cls.bulk_edit_data = { + 'description': 'A test Interface description', + 'passive': False, + } + + def _get_base_url(self): + return 'plugins:netbox_routing:ospfinterface_{}' diff --git a/netbox_routing/tests/static/__init__.py b/netbox_routing/tests/static/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/netbox_routing/tests/static/test_api.py b/netbox_routing/tests/static/test_api.py new file mode 100644 index 0000000..8224c42 --- /dev/null +++ b/netbox_routing/tests/static/test_api.py @@ -0,0 +1,69 @@ +from netaddr.ip import IPAddress +from ipam.models import VRF +from utilities.testing import APIViewTestCases, create_test_device + +from netbox_routing.models import StaticRoute +from netbox_routing.tests.base import IPAddressFieldMixin + +__all__ = ( + 'StaticRouteTestCase', +) + +class StaticRouteTestCase(IPAddressFieldMixin, APIViewTestCases.APIViewTestCase): + model = StaticRoute + view_namespace = "plugins-api:netbox_routing" + brief_fields = ['description', 'display', 'id', 'name', 'next_hop', 'prefix', 'url', ] + + + bulk_update_data = { + 'metric': 5 + } + + @classmethod + def setUpTestData(cls): + + device = create_test_device(name='Test Device') + vrf = VRF.objects.create(name='Test VRF') + + nh = IPAddress('10.10.10.1') + + routes = ( + StaticRoute(name='Test Route 1', vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), + StaticRoute(name='Test Route 2', vrf=None, prefix='1.1.1.1/32', next_hop=nh), + StaticRoute(name='Test Route 3', vrf=vrf, prefix='2.2.2.2/32', next_hop=nh), + ) + StaticRoute.objects.bulk_create(routes) + + routes[0].devices.set([device]) + routes[1].devices.set([device]) + routes[2].devices.set([device]) + + cls.create_data = [ + { + 'name': 'Default Route', + 'devices': [device.pk], + 'vrf': vrf.pk, + 'prefix': '0.0.0.0/0', + 'next_hop': '10.10.10.2', + 'metric': 1, + 'permanent': True + }, + { + 'name': 'Google DNS', + 'devices': [device.pk], + 'vrf': None, + 'prefix': '4.4.4.4/32', + 'next_hop': '10.10.10.1', + 'metric': 1, + 'permanent': True + }, + { + 'name': 'One dot one dot one dot one', + 'devices': [device.pk], + 'vrf': None, + 'prefix': '1.1.1.0/24', + 'next_hop': '10.10.10.1', + 'metric': 1, + 'permanent': True + }, + ] diff --git a/netbox_routing/tests/static/test_filtersets.py b/netbox_routing/tests/static/test_filtersets.py new file mode 100644 index 0000000..814d4f9 --- /dev/null +++ b/netbox_routing/tests/static/test_filtersets.py @@ -0,0 +1,64 @@ +import netaddr +from django.test import TestCase + +from ipam.models import VRF +from utilities.testing import create_test_device + +from netbox_routing.filtersets import * +from netbox_routing.models import * + +__all__ = ( + 'StaticRouteTestCase', +) + + +class StaticRouteTestCase(TestCase): + queryset = StaticRoute.objects.all() + filterset = StaticRouteFilterSet + + @classmethod + def setUpTestData(cls): + devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] + vrf = VRF.objects.create(name='Test VRF') + + nh = netaddr.IPAddress('10.10.10.1') + + routes = ( + StaticRoute(name="Route 1", vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), + StaticRoute(name="Route 2", vrf=vrf, prefix='1.1.1.0/24', next_hop=netaddr.IPAddress('10.10.10.2')), + StaticRoute(name="Route 3", prefix='0.0.0.0/0', next_hop=nh, metric=100) + ) + + StaticRoute.objects.bulk_create(routes) + + routes[0].devices.set([devices[0]]) + routes[1].devices.set([devices[0]]) + routes[2].devices.set([devices[1]]) + + def test_q(self): + params = {'q': 'Route 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['Route 1', 'Route 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_device(self): + params = {'device': ['Device 1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_vrf(self): + params = {'vrf': ['Test VRF']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_prefix(self): + params = {'prefix': '0.0.0.0/0'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_next_hop(self): + params = {'next_hop': '10.10.10.1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_metric(self): + params = {'metric': [1]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox_routing/tests/static/test_forms.py b/netbox_routing/tests/static/test_forms.py new file mode 100644 index 0000000..cd983f0 --- /dev/null +++ b/netbox_routing/tests/static/test_forms.py @@ -0,0 +1,29 @@ +from django.test import TestCase + +from dcim.models import Device +from utilities.testing import create_test_device + +from netbox_routing.forms import * + +__all__ = ( + 'StaticRouteTestCase', +) + + +class StaticRouteTestCase(TestCase): + + @classmethod + def setUpTestData(cls): + device = create_test_device(name='Device 1') + + def test_staticroute(self): + form = StaticRouteForm(data={ + 'name': 'Route 1', + 'devices': [Device.objects.first().pk], + 'vrf': None, + 'prefix': '0.0.0.0/0', + 'next_hop': '10.10.10.1', + 'metric': 1, + }) + self.assertTrue(form.is_valid()) + self.assertTrue(form.save()) diff --git a/netbox_routing/tests/static/test_models.py b/netbox_routing/tests/static/test_models.py new file mode 100644 index 0000000..75c5132 --- /dev/null +++ b/netbox_routing/tests/static/test_models.py @@ -0,0 +1,14 @@ +from django.core.exceptions import ValidationError +from django.test import TestCase + +from utilities.testing import create_test_device + +from netbox_routing.models import * + +__all__ = ( + 'StaticRouteTestCase', +) + + +class StaticRouteTestCase(TestCase): + pass diff --git a/netbox_routing/tests/static/test_views.py b/netbox_routing/tests/static/test_views.py new file mode 100644 index 0000000..af2131a --- /dev/null +++ b/netbox_routing/tests/static/test_views.py @@ -0,0 +1,58 @@ +import netaddr + +from ipam.models import VRF +from utilities.testing import ViewTestCases, create_test_device + +from netbox_routing.models import StaticRoute + +__all__ = ( + 'StaticRouteTestCase', +) + + +class StaticRouteTestCase( + ViewTestCases.GetObjectViewTestCase, + ViewTestCases.GetObjectChangelogViewTestCase, + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkEditObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase +): + # ViewTestCases.BulkImportObjectsViewTestCase, + model = StaticRoute + + @classmethod + def setUpTestData(cls): + devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] + vrf = VRF.objects.create(name='Test VRF') + + nh = netaddr.IPAddress('10.10.10.1') + + routes = ( + StaticRoute(name="Route 1", vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), + StaticRoute(name="Route 2", vrf=vrf, prefix='1.1.1.0/24', next_hop=netaddr.IPAddress('10.10.10.2')), + StaticRoute(name="Route 3", prefix='0.0.0.0/0', next_hop=nh, metric=100) + ) + + StaticRoute.objects.bulk_create(routes) + + routes[0].devices.set([devices[0]]) + routes[1].devices.set([devices[0]]) + routes[2].devices.set([devices[0]]) + + cls.form_data = { + 'name': 'Route X', + 'devices': [devices[1].pk], + 'vrf': vrf.pk, + 'prefix': netaddr.IPNetwork('1.1.1.1/32'), + 'next_hop': nh, + } + + cls.bulk_edit_data = { + 'metric': 10, + } + + def _get_base_url(self): + return 'plugins:netbox_routing:staticroute_{}' diff --git a/netbox_routing/tests/test_api.py b/netbox_routing/tests/test_api.py index cc6205c..e88146a 100644 --- a/netbox_routing/tests/test_api.py +++ b/netbox_routing/tests/test_api.py @@ -1,14 +1,26 @@ from django.urls import reverse -from netaddr.ip import IPAddress from rest_framework import status -from dcim.models import Interface -from ipam.models import VRF -from utilities.testing import APIViewTestCases, APITestCase, create_test_device +from utilities.testing import APITestCase -from netbox_routing.models import StaticRoute, OSPFInstance, OSPFArea, OSPFInterface -from netbox_routing.tests.base import IPAddressFieldMixin +from netbox_routing.tests.eigrp.test_api import * +from netbox_routing.tests.ospf.test_api import * +from netbox_routing.tests.static.test_api import * +__all__ = ( + 'AppTest', + + 'StaticRouteTestCase', + + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', + + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) class AppTest(APITestCase): def test_root(self): @@ -16,170 +28,3 @@ def test_root(self): response = self.client.get(f"{url}?format=api", **self.header) self.assertEqual(response.status_code, status.HTTP_200_OK) - - -class StaticRouteTest(IPAddressFieldMixin , APIViewTestCases.APIViewTestCase): - model = StaticRoute - view_namespace = "plugins-api:netbox_routing" - brief_fields = ['description', 'display', 'id', 'name', 'next_hop', 'prefix', 'url', ] - - - bulk_update_data = { - 'metric': 5 - } - - @classmethod - def setUpTestData(cls): - - device = create_test_device(name='Test Device') - vrf = VRF.objects.create(name='Test VRF') - - nh = IPAddress('10.10.10.1') - - routes = ( - StaticRoute(name='Test Route 1', vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), - StaticRoute(name='Test Route 2', vrf=None, prefix='1.1.1.1/32', next_hop=nh), - StaticRoute(name='Test Route 3', vrf=vrf, prefix='2.2.2.2/32', next_hop=nh), - ) - StaticRoute.objects.bulk_create(routes) - - routes[0].devices.set([device]) - routes[1].devices.set([device]) - routes[2].devices.set([device]) - - cls.create_data = [ - { - 'name': 'Default Route', - 'devices': [device.pk], - 'vrf': vrf.pk, - 'prefix': '0.0.0.0/0', - 'next_hop': '10.10.10.2', - 'metric': 1, - 'permanent': True - }, - { - 'name': 'Google DNS', - 'devices': [device.pk], - 'vrf': None, - 'prefix': '4.4.4.4/32', - 'next_hop': '10.10.10.1', - 'metric': 1, - 'permanent': True - }, - { - 'name': 'One dot one dot one dot one', - 'devices': [device.pk], - 'vrf': None, - 'prefix': '1.1.1.0/24', - 'next_hop': '10.10.10.1', - 'metric': 1, - 'permanent': True - }, - ] - - -class OSPFInstanceTest(IPAddressFieldMixin, APIViewTestCases.APIViewTestCase): - model = OSPFInstance - view_namespace = 'plugins-api:netbox_routing' - brief_fields = ['device', 'display', 'id', 'name', 'process_id', 'router_id', 'url', ] - - user_permissions = ('dcim.view_device', ) - - bulk_update_data = { - 'description': "A test description" - } - - @classmethod - def setUpTestData(cls): - - device = create_test_device(name='Test Device') - - data = ( - cls.model(name='Instance 1', device=device, router_id='1.1.1.1', process_id=1), - cls.model(name='Instance 2', device=device, router_id='2.2.2.2', process_id=2), - cls.model(name='Instance 3', device=device, router_id='3.3.3.3', process_id=3), - ) - cls.model.objects.bulk_create(data) - - cls.create_data = [ - { - 'name': 'Instance X', - 'device': device.pk, - 'router_id': '4.4.4.4', - 'process_id': 4 - }, - ] - - -class OSPFAreaTest(IPAddressFieldMixin , APIViewTestCases.APIViewTestCase): - model = OSPFArea - view_namespace = 'plugins-api:netbox_routing' - brief_fields = ['area_id', 'display', 'id', 'url', ] - - bulk_update_data = { - 'description': "A test description" - } - - @classmethod - def setUpTestData(cls): - - data = ( - cls.model(area_id='1'), - cls.model(area_id='2'), - cls.model(area_id='3'), - ) - cls.model.objects.bulk_create(data) - - cls.create_data = [ - { - 'area_id': '4', - }, - ] - - -class OSPFInterfaceTest(IPAddressFieldMixin, APIViewTestCases.APIViewTestCase): - model = OSPFInterface - view_namespace = 'plugins-api:netbox_routing' - brief_fields = ['area', 'display', 'id', 'instance', 'interface', 'url', ] - - user_permissions = ( - 'netbox_routing.view_ospfinstance', 'netbox_routing.view_ospfarea', 'dcim.view_device', 'dcim.view_interface', - ) - - bulk_update_data = { - 'description': "A test description" - } - - @classmethod - def setUpTestData(cls): - - device = create_test_device(name='Test Device') - instance = OSPFInstance.objects.create(name='Instance 1', device=device, router_id='1.1.1.1', process_id=1) - area = OSPFArea.objects.create(area_id='0') - - interfaces = ( - Interface(device=device, name='Interface 1', type='virtual'), - Interface(device=device, name='Interface 2', type='virtual'), - Interface(device=device, name='Interface 3', type='virtual'), - Interface(device=device, name='Interface 4', type='virtual'), - ) - Interface.objects.bulk_create(interfaces) - - data = ( - cls.model(instance=instance, area=area, interface=interfaces[0], ), - cls.model(instance=instance, area=area, interface=interfaces[1], ), - cls.model(instance=instance, area=area, interface=interfaces[2], ), - ) - cls.model.objects.bulk_create(data) - - cls.create_data = [ - { - 'instance': instance.pk, - 'area': area.pk, - 'interface': interfaces[3].pk, - 'priority': 2, - 'authentication': 'message-digest', - 'passphrase': 'test-password', - 'bfd': True, - }, - ] diff --git a/netbox_routing/tests/test_filtersets.py b/netbox_routing/tests/test_filtersets.py index 310d143..1be4537 100644 --- a/netbox_routing/tests/test_filtersets.py +++ b/netbox_routing/tests/test_filtersets.py @@ -1,225 +1,16 @@ -import netaddr -from django.test import TestCase - -from dcim.models import Device, Interface -from ipam.models import VRF -from utilities.testing import create_test_device - -from netbox_routing.filtersets import * -from netbox_routing.models import * - - - -class StaticRouteTestCase(TestCase): - queryset = StaticRoute.objects.all() - filterset = StaticRouteFilterSet - - @classmethod - def setUpTestData(cls): - devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] - vrf = VRF.objects.create(name='Test VRF') - - nh = netaddr.IPAddress('10.10.10.1') - - routes = ( - StaticRoute(name="Route 1", vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), - StaticRoute(name="Route 2", vrf=vrf, prefix='1.1.1.0/24', next_hop=netaddr.IPAddress('10.10.10.2')), - StaticRoute(name="Route 3", prefix='0.0.0.0/0', next_hop=nh, metric=100) - ) - - StaticRoute.objects.bulk_create(routes) - - routes[0].devices.set([devices[0]]) - routes[1].devices.set([devices[0]]) - routes[2].devices.set([devices[1]]) - - def test_q(self): - params = {'q': 'Route 1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - - def test_name(self): - params = {'name': ['Route 1', 'Route 2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_device(self): - params = {'device': ['Device 1']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_vrf(self): - params = {'vrf': ['Test VRF']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_prefix(self): - params = {'prefix': '0.0.0.0/0'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_next_hop(self): - params = {'next_hop': '10.10.10.1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_metric(self): - params = {'metric': [1]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - - -class OSPFInstanceTestCase(TestCase): - queryset = OSPFInstance.objects.all() - filterset = OSPFInstanceFilterSet - - @classmethod - def setUpTestData(cls): - devices = [ - create_test_device(name='Device 1'), - create_test_device(name='Device 2'), - create_test_device(name='Device 3'), - create_test_device(name='Device 4'), - ] - - data = ( - OSPFInstance(name='Instance 1', device=devices[0], router_id='0.0.0.0', process_id=0), - OSPFInstance(name='Instance 2', device=devices[1], router_id='1.1.1.1', process_id=1), - OSPFInstance(name='Instance 3', device=devices[2], router_id='2.2.2.2', process_id=2), - OSPFInstance(name='Instance 3', device=devices[3], router_id='3.3.3.3', process_id=3), - ) - - OSPFInstance.objects.bulk_create(data) - - def test_q(self): - params = {'q': 'Instance 1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - - def test_name(self): - params = {'name': ['Instance 1', 'Instance 2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_device(self): - data = Device.objects.all()[0:2] - - params = {'device_id': [data[0].pk, data[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - params = {'device': [data[0].name, data[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_process_id(self): - params = {'process_id': [1, 2]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_router_id(self): - params = {'router_id': ['1.1.1.1', '2.2.2.2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - - -class OSPFAreaTestCase(TestCase): - queryset = OSPFArea.objects.all() - filterset = OSPFAreaFilterSet - - @classmethod - def setUpTestData(cls): - - data = ( - OSPFArea(area_id='0.0.0.0'), - OSPFArea(area_id='1.1.1.1'), - OSPFArea(area_id=0), - OSPFArea(area_id=1), - ) - - OSPFArea.objects.bulk_create(data) - - def test_q(self): - params = {'q': '1.1.1.1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - - def test_area_id(self): - params = {'area_id': ['0', '1.1.1.1']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - -class OSPFInterfaceTestCase(TestCase): - queryset = OSPFInterface.objects.all() - filterset = OSPFInterfaceFilterSet - - @classmethod - def setUpTestData(cls): - devices = ( - create_test_device(name='Device 1'), - create_test_device(name='Device 2'), - create_test_device(name='Device 3'), - create_test_device(name='Device 4'), - ) - interfaces = ( - Interface(device=devices[0], name='Interface 1', type='virtual'), - Interface(device=devices[1], name='Interface 2', type='virtual'), - Interface(device=devices[2], name='Interface 3', type='virtual'), - Interface(device=devices[3], name='Interface 4', type='virtual'), - ) - Interface.objects.bulk_create(interfaces) - - areas = ( - OSPFArea(area_id='0.0.0.0'), - OSPFArea(area_id=1), - OSPFArea(area_id='2.2.2.2'), - OSPFArea(area_id=3), - ) - OSPFArea.objects.bulk_create(areas) - - instances = ( - OSPFInstance(name='Instance 0', device=devices[0], router_id='0.0.0.0', process_id=0), - OSPFInstance(name='Instance 1', device=devices[1], router_id='1.1.1.1', process_id=1), - OSPFInstance(name='Instance 2', device=devices[2], router_id='2.2.2.2', process_id=2), - OSPFInstance(name='Instance 3', device=devices[3], router_id='3.3.3.3', process_id=3), - ) - OSPFInstance.objects.bulk_create(instances) - - data = ( - OSPFInterface(interface=interfaces[0], instance=instances[0], area=areas[0]), - OSPFInterface(interface=interfaces[1], instance=instances[1], area=areas[1]), - OSPFInterface(interface=interfaces[2], instance=instances[2], area=areas[2]), - OSPFInterface(interface=interfaces[3], instance=instances[3], area=areas[3]), - ) - OSPFInterface.objects.bulk_create(data) - - def test_q(self): - params = {'q': 'Interface 1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - - params = {'q': 'Instance 1'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - - def test_instances(self): - data = OSPFInstance.objects.all()[0:2] - - params = {'instance_id': [data[0].pk, data[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - params = {'instance': [data[0].name, data[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_area(self): - data = OSPFArea.objects.all()[0:2] - - params = {'area_id': [data[0].pk, data[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - params = {'area': [data[0].area_id, data[1].area_id]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_devices(self): - data = Device.objects.all()[0:2] - - params = {'device_id': [data[0].pk, data[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - params = {'device': [data[0].name, data[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_interfaces(self): - data = Interface.objects.all()[0:2] - - params = {'interface_id': [data[0].pk, data[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - params = {'interface': [data[0].name, data[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) +from netbox_routing.tests.eigrp.test_filtersets import * +from netbox_routing.tests.ospf.test_filtersets import * +from netbox_routing.tests.static.test_filtersets import * + +__all__ = ( + 'StaticRouteTestCase', + + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', + + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) diff --git a/netbox_routing/tests/test_forms.py b/netbox_routing/tests/test_forms.py index a020cec..3dc6d35 100644 --- a/netbox_routing/tests/test_forms.py +++ b/netbox_routing/tests/test_forms.py @@ -1,113 +1,16 @@ -from django.test import TestCase - -from dcim.models import Device, Interface -from utilities.testing import create_test_device - -from netbox_routing.forms import * -from netbox_routing.models import * - - -class StaticRouteTestCase(TestCase): - - @classmethod - def setUpTestData(cls): - device = create_test_device(name='Device 1') - - def test_staticroute(self): - form = StaticRouteForm(data={ - 'name': 'Route 1', - 'devices': [Device.objects.first().pk], - 'vrf': None, - 'prefix': '0.0.0.0/0', - 'next_hop': '10.10.10.1', - 'metric': 1, - }) - self.assertTrue(form.is_valid()) - self.assertTrue(form.save()) - - -class OSPFInstanceTestCase(TestCase): - - @classmethod - def setUpTestData(cls): - device = create_test_device(name='Device 1') - - def test_instance(self): - form = OSPFInstanceForm(data={ - 'name': 'Instance 1', - 'process_id': '0', - 'router_id': '10.10.10.1', - 'device': Device.objects.first().pk, - }) - if not form.is_valid(): - print(form.errors) - self.assertTrue(form.is_valid()) - self.assertTrue(form.save()) - - -class OSPFAreaTestCase(TestCase): - - @classmethod - def setUpTestData(cls): - pass - - def test_valid_area_id_with_ip(self): - form = OSPFAreaForm(data={ - 'area_id': '0.0.0.0', - }) - self.assertTrue(form.is_valid()) - self.assertTrue(form.save()) - - def test_valid_area_id_with_integer(self): - form = OSPFAreaForm(data={ - 'area_id': '0', - }) - self.assertTrue(form.is_valid()) - self.assertTrue(form.save()) - - def test_invalid_area(self): - form = OSPFAreaForm(data={ - 'area_id': 'a.a.a.a', - }) - self.assertFalse(form.is_valid()) - with self.assertRaises(ValueError): - form.save() - - -class OSPFInterfaceTestCase(TestCase): - - @classmethod - def setUpTestData(cls): - device = create_test_device(name='Device 1') - interface = Interface.objects.create(name='Interface 1', device=device, type='virtual') - instance = OSPFInstance.objects.create( - name='Instance 1', - router_id='10.10.10.1', - process_id=0, - device_id=device.pk - ) - area = OSPFArea.objects.create(area_id='0.0.0.0') - - def test_interface_with_correct_device(self): - form = OSPFInterfaceForm(data={ - 'device': Device.objects.first().pk, - 'interface': Interface.objects.first().pk, - 'instance': OSPFInstance.objects.first().pk, - 'area': OSPFArea.objects.first().pk, - }) - self.assertTrue(form.is_valid()) - self.assertTrue(form.save()) - - def test_interface_with_incorrect_device(self): - device = create_test_device(name='Device 2') - interface = Interface.objects.create(name='Interface 1', device=device, type='virtual') - - form = OSPFInterfaceForm(data={ - 'device': device.pk, - 'interface': interface.pk, - 'instance': OSPFInstance.objects.first().pk, - 'area': OSPFArea.objects.first().pk, - }) - self.assertFalse(form.is_valid()) - with self.assertRaises(ValueError): - form.save() +from netbox_routing.tests.eigrp.test_forms import * +from netbox_routing.tests.ospf.test_forms import * +from netbox_routing.tests.static.test_forms import * + +__all__ = ( + 'StaticRouteTestCase', + + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', + + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) diff --git a/netbox_routing/tests/test_models.py b/netbox_routing/tests/test_models.py index fbed8c8..0767aea 100644 --- a/netbox_routing/tests/test_models.py +++ b/netbox_routing/tests/test_models.py @@ -1,10 +1,16 @@ -from django.core.exceptions import ValidationError -from django.test import TestCase +from netbox_routing.tests.eigrp.test_models import * +from netbox_routing.tests.ospf.test_models import * +from netbox_routing.tests.static.test_models import * -from utilities.testing import create_test_device +__all__ = ( + 'StaticRouteTestCase', -from netbox_routing.models import * + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', - -class StaticRouteTest(TestCase): - pass + 'EIGRPRouterTestCase', + 'EIGRPAddressFamilyTestCase', + 'EIGRPNetworkTestCase', + 'EIGRPInterfaceTestCase', +) diff --git a/netbox_routing/tests/test_views.py b/netbox_routing/tests/test_views.py index 93b201a..314a538 100644 --- a/netbox_routing/tests/test_views.py +++ b/netbox_routing/tests/test_views.py @@ -1,193 +1,17 @@ -import netaddr +from netbox_routing.tests.eigrp.test_views import * +from netbox_routing.tests.ospf.test_views import * +from netbox_routing.tests.static.test_views import * -from dcim.models import Interface -from ipam.models import VRF -from utilities.testing import ViewTestCases, create_test_device +__all__ = ( + 'StaticRouteTestCase', -from netbox_routing.models import StaticRoute, OSPFInstance, OSPFArea, OSPFInterface -from netbox_routing.tests.base import IPAddressFieldMixin + 'OSPFInstanceTestCase', + 'OSPFAreaTestCase', + 'OSPFInterfaceTestCase', + #'EIGRPRouterTestCase', + #'EIGRPAddressFamilyTestCase', + #'EIGRPNetworkTestCase', + #'EIGRPInterfaceTestCase', -class StaticRouteTestCase( - ViewTestCases.GetObjectViewTestCase, - ViewTestCases.GetObjectChangelogViewTestCase, - ViewTestCases.CreateObjectViewTestCase, - ViewTestCases.EditObjectViewTestCase, - ViewTestCases.DeleteObjectViewTestCase, - ViewTestCases.ListObjectsViewTestCase, - ViewTestCases.BulkEditObjectsViewTestCase, - ViewTestCases.BulkDeleteObjectsViewTestCase -): - # ViewTestCases.BulkImportObjectsViewTestCase, - model = StaticRoute - - @classmethod - def setUpTestData(cls): - devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] - vrf = VRF.objects.create(name='Test VRF') - - nh = netaddr.IPAddress('10.10.10.1') - - routes = ( - StaticRoute(name="Route 1", vrf=vrf, prefix='0.0.0.0/0', next_hop=nh), - StaticRoute(name="Route 2", vrf=vrf, prefix='1.1.1.0/24', next_hop=netaddr.IPAddress('10.10.10.2')), - StaticRoute(name="Route 3", prefix='0.0.0.0/0', next_hop=nh, metric=100) - ) - - StaticRoute.objects.bulk_create(routes) - - routes[0].devices.set([devices[0]]) - routes[1].devices.set([devices[0]]) - routes[2].devices.set([devices[0]]) - - cls.form_data = { - 'name': 'Route X', - 'devices': [devices[1].pk], - 'vrf': vrf.pk, - 'prefix': netaddr.IPNetwork('1.1.1.1/32'), - 'next_hop': nh, - } - - cls.bulk_edit_data = { - 'metric': 10, - } - - def _get_base_url(self): - return 'plugins:netbox_routing:staticroute_{}' - - -class OSPFInstanceTestCase( - IPAddressFieldMixin, - ViewTestCases.GetObjectViewTestCase, - ViewTestCases.GetObjectChangelogViewTestCase, - ViewTestCases.CreateObjectViewTestCase, - ViewTestCases.EditObjectViewTestCase, - ViewTestCases.DeleteObjectViewTestCase, - ViewTestCases.ListObjectsViewTestCase, - ViewTestCases.BulkEditObjectsViewTestCase, - ViewTestCases.BulkDeleteObjectsViewTestCase, -): - # ViewTestCases.BulkImportObjectsViewTestCase, - model = OSPFInstance - - @classmethod - def setUpTestData(cls): - devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] - - routes = ( - cls.model(name="Instance 0", device=devices[0], router_id='0.0.0.0', process_id='0'), - cls.model(name="Instance 1", device=devices[0], router_id='1.1.1.1', process_id='1'), - cls.model(name="Instance 2", device=devices[0], router_id='2.2.2.2', process_id='2'), - ) - cls.model.objects.bulk_create(routes) - - cls.form_data = { - 'name': 'Instance X', - 'device': devices[1].pk, - 'router_id': '4.4.4.4', - 'process_id': 4, - } - - cls.bulk_edit_data = { - 'description': 'A test Instance description' - } - - def _get_base_url(self): - return 'plugins:netbox_routing:ospfinstance_{}' - - -class OSPFAreaTestCase( - IPAddressFieldMixin, - ViewTestCases.GetObjectViewTestCase, - ViewTestCases.GetObjectChangelogViewTestCase, - ViewTestCases.CreateObjectViewTestCase, - ViewTestCases.EditObjectViewTestCase, - ViewTestCases.DeleteObjectViewTestCase, - ViewTestCases.ListObjectsViewTestCase, - ViewTestCases.BulkEditObjectsViewTestCase, - ViewTestCases.BulkDeleteObjectsViewTestCase, -): - # ViewTestCases.BulkImportObjectsViewTestCase, - model = OSPFArea - - @classmethod - def setUpTestData(cls): - areas = ( - cls.model(area_id='0.0.0.0'), - cls.model(area_id='1.1.1.1'), - cls.model(area_id='2.2.2.2'), - ) - cls.model.objects.bulk_create(areas) - - cls.form_data = { - 'area_id': '4.4.4.4', - } - - cls.bulk_edit_data = { - 'description': 'A test Area description' - } - - def _get_base_url(self): - return 'plugins:netbox_routing:ospfarea_{}' - - -class OSPFInterfaceTestCase( - IPAddressFieldMixin, - ViewTestCases.GetObjectViewTestCase, - ViewTestCases.GetObjectChangelogViewTestCase, - ViewTestCases.CreateObjectViewTestCase, - ViewTestCases.EditObjectViewTestCase, - ViewTestCases.DeleteObjectViewTestCase, - ViewTestCases.ListObjectsViewTestCase, - ViewTestCases.BulkEditObjectsViewTestCase, - ViewTestCases.BulkDeleteObjectsViewTestCase, -): - # ViewTestCases.BulkImportObjectsViewTestCase, - model = OSPFInterface - - @classmethod - def setUpTestData(cls): - devices = [create_test_device(name='Device 1'), create_test_device(name='Device 2')] - interfaces = ( - Interface(name='Interface 1', device=devices[0], type='virtual'), - Interface(name='Interface 2', device=devices[0], type='virtual'), - Interface(name='Interface 3', device=devices[1], type='virtual'), - Interface(name='Interface 4', device=devices[1], type='virtual'), - ) - Interface.objects.bulk_create(interfaces) - - instances = ( - OSPFInstance(name="Instance 0", device=devices[0], router_id='0.0.0.0', process_id='0'), - OSPFInstance(name="Instance 1", device=devices[0], router_id='1.1.1.1', process_id='1'), - OSPFInstance(name="Instance 2", device=devices[1], router_id='2.2.2.2', process_id='2'), - OSPFInstance(name="Instance 3", device=devices[1], router_id='3.3.3.3', process_id='3'), - ) - OSPFInstance.objects.bulk_create(instances) - - areas = ( - OSPFArea(area_id='0.0.0.0'), - OSPFArea(area_id='1.1.1.1'), - OSPFArea(area_id='2.2.2.2'), - OSPFArea(area_id='3.3.3.3'), - ) - OSPFArea.objects.bulk_create(areas) - - ospfinterfaces = ( - cls.model(interface=interfaces[0], instance=instances[0], area=areas[0]), - cls.model(interface=interfaces[1], instance=instances[1], area=areas[1]), - cls.model(interface=interfaces[2], instance=instances[2], area=areas[2]), - ) - cls.model.objects.bulk_create(ospfinterfaces) - - cls.form_data = { - 'interface': interfaces[3].pk, - 'area': areas[3].pk, - 'instance': instances[3].pk, - } - - cls.bulk_edit_data = { - 'description': 'A test Interface description' - } - - def _get_base_url(self): - return 'plugins:netbox_routing:ospfinterface_{}' +)