|
|
@@ -1,6 +1,6 @@
|
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
|
from django.test import TestCase
|
|
|
-from netaddr import IPNetwork
|
|
|
+from netaddr import IPAddress, IPNetwork
|
|
|
|
|
|
from dcim.models import DeviceRole
|
|
|
from extras.scripts import *
|
|
|
@@ -186,6 +186,54 @@ class ScriptVariablesTest(TestCase):
|
|
|
self.assertTrue(form.is_valid())
|
|
|
self.assertEqual(form.cleaned_data['var1'], testfile)
|
|
|
|
|
|
+ def test_ipaddressvar(self):
|
|
|
+
|
|
|
+ class TestScript(Script):
|
|
|
+
|
|
|
+ var1 = IPAddressVar()
|
|
|
+
|
|
|
+ # Validate IP network enforcement
|
|
|
+ data = {'var1': '1.2.3'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertFalse(form.is_valid())
|
|
|
+ self.assertIn('var1', form.errors)
|
|
|
+
|
|
|
+ # Validate IP mask exclusion
|
|
|
+ data = {'var1': '192.0.2.0/24'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertFalse(form.is_valid())
|
|
|
+ self.assertIn('var1', form.errors)
|
|
|
+
|
|
|
+ # Validate valid data
|
|
|
+ data = {'var1': '192.0.2.1'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertTrue(form.is_valid())
|
|
|
+ self.assertEqual(form.cleaned_data['var1'], IPAddress(data['var1']))
|
|
|
+
|
|
|
+ def test_ipaddresswithmaskvar(self):
|
|
|
+
|
|
|
+ class TestScript(Script):
|
|
|
+
|
|
|
+ var1 = IPAddressWithMaskVar()
|
|
|
+
|
|
|
+ # Validate IP network enforcement
|
|
|
+ data = {'var1': '1.2.3'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertFalse(form.is_valid())
|
|
|
+ self.assertIn('var1', form.errors)
|
|
|
+
|
|
|
+ # Validate IP mask requirement
|
|
|
+ data = {'var1': '192.0.2.0'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertFalse(form.is_valid())
|
|
|
+ self.assertIn('var1', form.errors)
|
|
|
+
|
|
|
+ # Validate valid data
|
|
|
+ data = {'var1': '192.0.2.0/24'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertTrue(form.is_valid())
|
|
|
+ self.assertEqual(form.cleaned_data['var1'], IPNetwork(data['var1']))
|
|
|
+
|
|
|
def test_ipnetworkvar(self):
|
|
|
|
|
|
class TestScript(Script):
|
|
|
@@ -198,6 +246,12 @@ class ScriptVariablesTest(TestCase):
|
|
|
self.assertFalse(form.is_valid())
|
|
|
self.assertIn('var1', form.errors)
|
|
|
|
|
|
+ # Validate host IP check
|
|
|
+ data = {'var1': '192.0.2.1/24'}
|
|
|
+ form = TestScript().as_form(data, None)
|
|
|
+ self.assertFalse(form.is_valid())
|
|
|
+ self.assertIn('var1', form.errors)
|
|
|
+
|
|
|
# Validate valid data
|
|
|
data = {'var1': '192.0.2.0/24'}
|
|
|
form = TestScript().as_form(data, None)
|