Procházet zdrojové kódy

#4034 - Create tests for addresses

Dan Sheppard před 6 roky
rodič
revize
22228b58f1
1 změnil soubory, kde provedl 162 přidání a 14 odebrání
  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)