Browse Source

#4034 - Create tests for addresses

Dan Sheppard 6 năm trước cách đây
mục cha
commit
22228b58f1
1 tập tin đã thay đổi với 162 bổ sung14 xóa
  1. 162 14
      netbox/ipam/tests/test_ordering.py

+ 162 - 14
netbox/ipam/tests/test_ordering.py

@@ -1,12 +1,20 @@
 from django.test import TestCase
 from django.test import TestCase
 
 
-from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices
+from ipam.choices import IPAddressStatusChoices, PrefixStatusChoices
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF
 
 
 import netaddr
 import netaddr
 
 
 
 
 class PrefixOrderingTestCase(TestCase):
 class PrefixOrderingTestCase(TestCase):
+    vrfs = None
+
+    def setUp(self):
+        vrfa = VRF(name="VRF A")
+        vrfb = VRF(name="VRF B")
+        vrfc = VRF(name="VRF C")
+        VRF.objects.bulk_create([vrfa, vrfb, vrfc])
+        self.vrfs = (vrfa, vrfb, vrfc)
 
 
     def _create_prefix(self, prefixes):
     def _create_prefix(self, prefixes):
         prefixobjects = []
         prefixobjects = []
@@ -86,10 +94,7 @@ class PrefixOrderingTestCase(TestCase):
 
 
     def test_prefix_vrf_ordering(self):
     def test_prefix_vrf_ordering(self):
         # Setup VRFs
         # Setup VRFs
-        vrfa = VRF(name='VRF A')
-        vrfb = VRF(name='VRF B')
-        vrfs = [vrfa, vrfb]
-        VRF.objects.bulk_create(vrfs)
+        vrfa, vrfb, vrfc = self.vrfs
 
 
         # Setup Prefixes
         # Setup Prefixes
         prefixes = (
         prefixes = (
@@ -139,10 +144,8 @@ class PrefixOrderingTestCase(TestCase):
         self._compare_prefix(Prefix.objects.all(), prefixes)
         self._compare_prefix(Prefix.objects.all(), prefixes)
 
 
     def test_prefix_complex_ordering(self):
     def test_prefix_complex_ordering(self):
-        # Setup VRF's
-        vrf = VRF(name='VRF A')
-        vrfs = [vrf]
-        VRF.objects.bulk_create(vrfs)
+        # Setup VRFs
+        vrfa, vrfb, vrfc = self.vrfs
 
 
         # Setup Prefixes
         # Setup Prefixes
         prefixes = [
         prefixes = [
@@ -150,14 +153,159 @@ class PrefixOrderingTestCase(TestCase):
             (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
             (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
             (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')),
             (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')),
             (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')),
             (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')),
-            (PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.0.0/24')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.1.0/24'))
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')),
+            (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24'))
         ]
         ]
         Prefix.objects.bulk_create(self._create_prefix(prefixes))
         Prefix.objects.bulk_create(self._create_prefix(prefixes))
 
 
         # Test
         # Test
         qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
         qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
         self.assertEquals(qsprefixes, compprefixes)
         self.assertEquals(qsprefixes, compprefixes)
+
+
+class IPAddressOrderingTestCase(TestCase):
+    vrfs = None
+
+    def setUp(self):
+        vrfa = VRF(name="VRF A")
+        vrfb = VRF(name="VRF B")
+        vrfc = VRF(name="VRF C")
+        VRF.objects.bulk_create([vrfa, vrfb, vrfc])
+        self.vrfs = (vrfa, vrfb, vrfc)
+
+    def _create_address(self, addresses):
+        addressobjects = []
+        for addr in addresses:
+            status, vrf, address = addr
+            family = 4
+            if not netaddr.valid_ipv4(address):
+                family = 6
+            addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family)
+            addressobjects.append(addressobj)
+
+        return addressobjects
+
+    def _compare_address(self, queryset, addresses):
+
+        for i, obj in enumerate(queryset):
+            status, vrf, address = addresses[i]
+            self.assertEqual((obj.vrf, obj.address), (vrf, address))
+
+    def _compare_complex(self, queryset, addresses):
+        qsaddress, regaddress = [], []
+        for i, obj in enumerate(queryset):
+            qsaddress.append(obj.address)
+        for addr in addresses:
+            regaddress.append(addr[2])
+        return (qsaddress, regaddress)
+
+
+
+    def test_address_ordering(self):
+        # Setup Addresses
+        addresses = (
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')),
+
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')),
+
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24'))
+        )
+        IPAddress.objects.bulk_create(self._create_address(addresses))
+
+        # Test
+        self._compare_address(IPAddress.objects.all(), addresses)
+
+    def test_address_vrf_ordering(self):
+        # Setup VRFs
+        vrfa, vrfb, vrfc = self.vrfs
+
+        # Setup Addresses
+        addresses = (
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')),
+
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')),
+
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')),
+        )
+        IPAddress.objects.bulk_create(self._create_address(addresses))
+
+        # Test
+        self._compare_address(IPAddress.objects.all(), addresses)
+
+    def test_address_complex_ordering(self):
+        # Setup VRFs
+        vrfa, vrfb, vrfc = self.vrfs
+
+        # Setup addresses
+        addresses = [
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/25')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
+            (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
+        ]
+        IPAddress.objects.bulk_create(self._create_address(addresses))
+
+        # Test
+        qsaddresses, compaddresses = self._compare_complex(IPAddress.objects.all(), addresses)
+        self.assertEquals(qsaddresses, compaddresses)