فهرست منبع

Clean up FHRP group filterset tests

jeremystretch 4 سال پیش
والد
کامیت
734a00237a
2فایلهای تغییر یافته به همراه87 افزوده شده و 4 حذف شده
  1. 1 1
      netbox/ipam/filtersets.py
  2. 86 3
      netbox/ipam/tests/test_filtersets.py

+ 1 - 1
netbox/ipam/filtersets.py

@@ -667,7 +667,7 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet):
 
 
     class Meta:
     class Meta:
         model = FHRPGroup
         model = FHRPGroup
-        fields = ['id', 'protocol', 'group_id', 'auth_type']
+        fields = ['id', 'group_id', 'auth_key']
 
 
     def search(self, queryset, name, value):
     def search(self, queryset, name, value):
         if not value.strip():
         if not value.strip():

+ 86 - 3
netbox/ipam/tests/test_filtersets.py

@@ -1,10 +1,11 @@
 from django.test import TestCase
 from django.test import TestCase
+from netaddr import IPNetwork
 
 
 from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Rack, Region, Site, SiteGroup
 from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Rack, Region, Site, SiteGroup
 from ipam.choices import *
 from ipam.choices import *
 from ipam.filtersets import *
 from ipam.filtersets import *
 from ipam.models import *
 from ipam.models import *
-from utilities.testing import ChangeLoggedFilterSetTests
+from utilities.testing import ChangeLoggedFilterSetTests, create_test_device, create_test_virtualmachine
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
 
 
@@ -879,12 +880,22 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
     @classmethod
     @classmethod
     def setUpTestData(cls):
     def setUpTestData(cls):
 
 
+        ip_addresses = (
+            IPAddress(address=IPNetwork('192.168.1.1/24')),
+            IPAddress(address=IPNetwork('192.168.2.1/24')),
+            IPAddress(address=IPNetwork('192.168.3.1/24')),
+        )
+        IPAddress.objects.bulk_create(ip_addresses)
+
         fhrp_groups = (
         fhrp_groups = (
-            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, auth_key='foobar123'),
-            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, auth_key='foobar123'),
+            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, auth_key='foo123'),
+            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, auth_key='bar456'),
             FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30),
             FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30),
         )
         )
         FHRPGroup.objects.bulk_create(fhrp_groups)
         FHRPGroup.objects.bulk_create(fhrp_groups)
+        fhrp_groups[0].ip_addresses.set([ip_addresses[0]])
+        fhrp_groups[1].ip_addresses.set([ip_addresses[1]])
+        fhrp_groups[2].ip_addresses.set([ip_addresses[2]])
 
 
     def test_protocol(self):
     def test_protocol(self):
         params = {'protocol': [FHRPGroupProtocolChoices.PROTOCOL_VRRP2, FHRPGroupProtocolChoices.PROTOCOL_VRRP3]}
         params = {'protocol': [FHRPGroupProtocolChoices.PROTOCOL_VRRP2, FHRPGroupProtocolChoices.PROTOCOL_VRRP3]}
@@ -898,6 +909,78 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
         params = {'auth_type': [FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5]}
         params = {'auth_type': [FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5]}
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
         self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
 
 
+    def test_auth_key(self):
+        params = {'auth_key': ['foo123', 'bar456']}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
+    def test_related_ip(self):
+        # Create some regular IPs to query for related IPs
+        ipaddresses = (
+            IPAddress.objects.create(address=IPNetwork('192.168.1.2/24')),
+            IPAddress.objects.create(address=IPNetwork('192.168.2.2/24')),
+        )
+        params = {'related_ip': [ipaddresses[0].pk, ipaddresses[1].pk]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
+
+class FHRPGroupAssignmentTestCase(TestCase, ChangeLoggedFilterSetTests):
+    queryset = FHRPGroupAssignment.objects.all()
+    filterset = FHRPGroupAssignmentFilterSet
+
+    @classmethod
+    def setUpTestData(cls):
+
+        device = create_test_device('device1')
+        interfaces = (
+            Interface(device=device, name='eth0'),
+            Interface(device=device, name='eth1'),
+            Interface(device=device, name='eth2'),
+        )
+        Interface.objects.bulk_create(interfaces)
+
+        virtual_machine = create_test_virtualmachine('virtual_machine1')
+        vm_interfaces = (
+            VMInterface(virtual_machine=virtual_machine, name='eth0'),
+            VMInterface(virtual_machine=virtual_machine, name='eth1'),
+            VMInterface(virtual_machine=virtual_machine, name='eth2'),
+        )
+        VMInterface.objects.bulk_create(vm_interfaces)
+
+        fhrp_groups = (
+            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10),
+            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20),
+            FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30),
+        )
+        FHRPGroup.objects.bulk_create(fhrp_groups)
+
+        fhrp_group_assignments = (
+            FHRPGroupAssignment(group=fhrp_groups[0], interface=interfaces[0], priority=10),
+            FHRPGroupAssignment(group=fhrp_groups[1], interface=interfaces[1], priority=20),
+            FHRPGroupAssignment(group=fhrp_groups[2], interface=interfaces[2], priority=30),
+            FHRPGroupAssignment(group=fhrp_groups[0], interface=vm_interfaces[0], priority=10),
+            FHRPGroupAssignment(group=fhrp_groups[1], interface=vm_interfaces[1], priority=20),
+            FHRPGroupAssignment(group=fhrp_groups[2], interface=vm_interfaces[2], priority=30),
+        )
+        FHRPGroupAssignment.objects.bulk_create(fhrp_group_assignments)
+
+    def test_group_id(self):
+        fhrp_groups = FHRPGroup.objects.all()[:2]
+        params = {'group_id': [fhrp_groups[0].pk, fhrp_groups[1].pk]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
+
+    def test_interface_type(self):
+        params = {'interface_type': 'dcim.interface'}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
+
+    def test_interface(self):
+        interfaces = Interface.objects.all()[:2]
+        params = {'interface_type': 'dcim.interface', 'interface_id': [interfaces[0].pk, interfaces[1].pk]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
+
+    def test_priority(self):
+        params = {'priority': [10, 20]}
+        self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
+
 
 
 class VLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
 class VLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests):
     queryset = VLANGroup.objects.all()
     queryset = VLANGroup.objects.all()