test_models.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from __future__ import unicode_literals
  2. import netaddr
  3. from django.core.exceptions import ValidationError
  4. from django.test import TestCase, override_settings
  5. from ipam.models import IPAddress, Prefix, VRF
  6. class TestPrefix(TestCase):
  7. @override_settings(ENFORCE_GLOBAL_UNIQUE=False)
  8. def test_duplicate_global(self):
  9. Prefix.objects.create(prefix=netaddr.IPNetwork('192.0.2.0/24'))
  10. duplicate_prefix = Prefix(prefix=netaddr.IPNetwork('192.0.2.0/24'))
  11. self.assertIsNone(duplicate_prefix.clean())
  12. @override_settings(ENFORCE_GLOBAL_UNIQUE=True)
  13. def test_duplicate_global_unique(self):
  14. Prefix.objects.create(prefix=netaddr.IPNetwork('192.0.2.0/24'))
  15. duplicate_prefix = Prefix(prefix=netaddr.IPNetwork('192.0.2.0/24'))
  16. self.assertRaises(ValidationError, duplicate_prefix.clean)
  17. def test_duplicate_vrf(self):
  18. vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=False)
  19. Prefix.objects.create(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
  20. duplicate_prefix = Prefix(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
  21. self.assertIsNone(duplicate_prefix.clean())
  22. def test_duplicate_vrf_unique(self):
  23. vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=True)
  24. Prefix.objects.create(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
  25. duplicate_prefix = Prefix(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
  26. self.assertRaises(ValidationError, duplicate_prefix.clean)
  27. class TestIPAddress(TestCase):
  28. @override_settings(ENFORCE_GLOBAL_UNIQUE=False)
  29. def test_duplicate_global(self):
  30. IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'))
  31. duplicate_ip = IPAddress(address=netaddr.IPNetwork('192.0.2.1/24'))
  32. self.assertIsNone(duplicate_ip.clean())
  33. @override_settings(ENFORCE_GLOBAL_UNIQUE=True)
  34. def test_duplicate_global_unique(self):
  35. IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'))
  36. duplicate_ip = IPAddress(address=netaddr.IPNetwork('192.0.2.1/24'))
  37. self.assertRaises(ValidationError, duplicate_ip.clean)
  38. def test_duplicate_vrf(self):
  39. vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=False)
  40. IPAddress.objects.create(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
  41. duplicate_ip = IPAddress(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
  42. self.assertIsNone(duplicate_ip.clean())
  43. def test_duplicate_vrf_unique(self):
  44. vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=True)
  45. IPAddress.objects.create(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
  46. duplicate_ip = IPAddress(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
  47. self.assertRaises(ValidationError, duplicate_ip.clean)