Skip to content

Commit 22228b5

Browse files
committed
#4034 - Create tests for addresses
1 parent 084a68f commit 22228b5

File tree

1 file changed

+162
-14
lines changed

1 file changed

+162
-14
lines changed

netbox/ipam/tests/test_ordering.py

Lines changed: 162 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
from django.test import TestCase
22

3-
from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices
3+
from ipam.choices import IPAddressStatusChoices, PrefixStatusChoices
44
from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF
55

66
import netaddr
77

88

99
class PrefixOrderingTestCase(TestCase):
10+
vrfs = None
11+
12+
def setUp(self):
13+
vrfa = VRF(name="VRF A")
14+
vrfb = VRF(name="VRF B")
15+
vrfc = VRF(name="VRF C")
16+
VRF.objects.bulk_create([vrfa, vrfb, vrfc])
17+
self.vrfs = (vrfa, vrfb, vrfc)
1018

1119
def _create_prefix(self, prefixes):
1220
prefixobjects = []
@@ -86,10 +94,7 @@ def test_prefix_ordering(self):
8694

8795
def test_prefix_vrf_ordering(self):
8896
# Setup VRFs
89-
vrfa = VRF(name='VRF A')
90-
vrfb = VRF(name='VRF B')
91-
vrfs = [vrfa, vrfb]
92-
VRF.objects.bulk_create(vrfs)
97+
vrfa, vrfb, vrfc = self.vrfs
9398

9499
# Setup Prefixes
95100
prefixes = (
@@ -139,25 +144,168 @@ def test_prefix_vrf_ordering(self):
139144
self._compare_prefix(Prefix.objects.all(), prefixes)
140145

141146
def test_prefix_complex_ordering(self):
142-
# Setup VRF's
143-
vrf = VRF(name='VRF A')
144-
vrfs = [vrf]
145-
VRF.objects.bulk_create(vrfs)
147+
# Setup VRFs
148+
vrfa, vrfb, vrfc = self.vrfs
146149

147150
# Setup Prefixes
148151
prefixes = [
149152
(PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')),
150153
(PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
151154
(PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')),
152155
(PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')),
153-
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')),
154-
(PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')),
155-
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')),
156-
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.0.0/24')),
157-
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.1.0/24'))
156+
(PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')),
157+
(PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
158+
(PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')),
159+
(PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')),
160+
(PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24'))
158161
]
159162
Prefix.objects.bulk_create(self._create_prefix(prefixes))
160163

161164
# Test
162165
qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
163166
self.assertEquals(qsprefixes, compprefixes)
167+
168+
169+
class IPAddressOrderingTestCase(TestCase):
170+
vrfs = None
171+
172+
def setUp(self):
173+
vrfa = VRF(name="VRF A")
174+
vrfb = VRF(name="VRF B")
175+
vrfc = VRF(name="VRF C")
176+
VRF.objects.bulk_create([vrfa, vrfb, vrfc])
177+
self.vrfs = (vrfa, vrfb, vrfc)
178+
179+
def _create_address(self, addresses):
180+
addressobjects = []
181+
for addr in addresses:
182+
status, vrf, address = addr
183+
family = 4
184+
if not netaddr.valid_ipv4(address):
185+
family = 6
186+
addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family)
187+
addressobjects.append(addressobj)
188+
189+
return addressobjects
190+
191+
def _compare_address(self, queryset, addresses):
192+
193+
for i, obj in enumerate(queryset):
194+
status, vrf, address = addresses[i]
195+
self.assertEqual((obj.vrf, obj.address), (vrf, address))
196+
197+
def _compare_complex(self, queryset, addresses):
198+
qsaddress, regaddress = [], []
199+
for i, obj in enumerate(queryset):
200+
qsaddress.append(obj.address)
201+
for addr in addresses:
202+
regaddress.append(addr[2])
203+
return (qsaddress, regaddress)
204+
205+
206+
207+
def test_address_ordering(self):
208+
# Setup Addresses
209+
addresses = (
210+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')),
211+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')),
212+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')),
213+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')),
214+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')),
215+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')),
216+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')),
217+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')),
218+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')),
219+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')),
220+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')),
221+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')),
222+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')),
223+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')),
224+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')),
225+
226+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')),
227+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')),
228+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')),
229+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')),
230+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')),
231+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')),
232+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')),
233+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')),
234+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')),
235+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')),
236+
237+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
238+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
239+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
240+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
241+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
242+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24'))
243+
)
244+
IPAddress.objects.bulk_create(self._create_address(addresses))
245+
246+
# Test
247+
self._compare_address(IPAddress.objects.all(), addresses)
248+
249+
def test_address_vrf_ordering(self):
250+
# Setup VRFs
251+
vrfa, vrfb, vrfc = self.vrfs
252+
253+
# Setup Addresses
254+
addresses = (
255+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
256+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
257+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')),
258+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')),
259+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')),
260+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
261+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
262+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')),
263+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')),
264+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')),
265+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')),
266+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')),
267+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')),
268+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')),
269+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')),
270+
271+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')),
272+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')),
273+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')),
274+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')),
275+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')),
276+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')),
277+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')),
278+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')),
279+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')),
280+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')),
281+
282+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
283+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
284+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
285+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
286+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
287+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')),
288+
)
289+
IPAddress.objects.bulk_create(self._create_address(addresses))
290+
291+
# Test
292+
self._compare_address(IPAddress.objects.all(), addresses)
293+
294+
def test_address_complex_ordering(self):
295+
# Setup VRFs
296+
vrfa, vrfb, vrfc = self.vrfs
297+
298+
# Setup addresses
299+
addresses = [
300+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
301+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
302+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/25')),
303+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
304+
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
305+
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
306+
]
307+
IPAddress.objects.bulk_create(self._create_address(addresses))
308+
309+
# Test
310+
qsaddresses, compaddresses = self._compare_complex(IPAddress.objects.all(), addresses)
311+
self.assertEquals(qsaddresses, compaddresses)

0 commit comments

Comments
 (0)