summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2013-05-28 15:11:41 -0400
committerTim Graham <timograham@gmail.com>2013-05-28 15:12:47 -0400
commitded95ccdce0ba983c405ddde9eb071e454245a94 (patch)
tree1f0ebc0a4bb36b01b0e8a830acbe08964b278d73 /tests
parenta2967d5204729771e3716c431ea98f8ee8562d3e (diff)
Fixed #20484 -- Added model validation for GenericIPAddressField
GenericIPAddressField must not allow blank for NOT NULL fields Thanks Erik Romijn.
Diffstat (limited to 'tests')
-rw-r--r--tests/invalid_models/invalid_models/models.py2
-rw-r--r--tests/validation/models.py2
-rw-r--r--tests/validation/tests.py16
3 files changed, 14 insertions, 6 deletions
diff --git a/tests/invalid_models/invalid_models/models.py b/tests/invalid_models/invalid_models/models.py
index 6ba3f04e5e..e1bac9cfb2 100644
--- a/tests/invalid_models/invalid_models/models.py
+++ b/tests/invalid_models/invalid_models/models.py
@@ -25,6 +25,7 @@ class FieldErrors(models.Model):
index = models.CharField(max_length=10, db_index='bad')
field_ = models.CharField(max_length=10)
nullbool = models.BooleanField(null=True)
+ generic_ip_notnull_blank = models.GenericIPAddressField(null=False, blank=True)
class Target(models.Model):
@@ -380,6 +381,7 @@ invalid_models.fielderrors: "choices2": "choices" should be a sequence of two-it
invalid_models.fielderrors: "index": "db_index" should be either None, True or False.
invalid_models.fielderrors: "field_": Field names cannot end with underscores, because this would lead to ambiguous queryset filters.
invalid_models.fielderrors: "nullbool": BooleanFields do not accept null values. Use a NullBooleanField instead.
+invalid_models.fielderrors: "generic_ip_notnull_blank": GenericIPAddressField can not accept blank values if null values are not allowed, as blank values are stored as null.
invalid_models.clash1: Accessor for field 'foreign' clashes with field 'Target.clash1_set'. Add a related_name argument to the definition for 'foreign'.
invalid_models.clash1: Accessor for field 'foreign' clashes with related m2m field 'Target.clash1_set'. Add a related_name argument to the definition for 'foreign'.
invalid_models.clash1: Reverse query name for field 'foreign' clashes with field 'Target.clash1'. Add a related_name argument to the definition for 'foreign'.
diff --git a/tests/validation/models.py b/tests/validation/models.py
index db083290fb..e95a1e0744 100644
--- a/tests/validation/models.py
+++ b/tests/validation/models.py
@@ -95,7 +95,7 @@ class GenericIPAddressTestModel(models.Model):
blank=True, null=True)
class GenericIPAddrUnpackUniqueTest(models.Model):
- generic_v4unpack_ip = models.GenericIPAddressField(blank=True, unique=True, unpack_ipv4=True)
+ generic_v4unpack_ip = models.GenericIPAddressField(null=True, blank=True, unique=True, unpack_ipv4=True)
# A model can't have multiple AutoFields
diff --git a/tests/validation/tests.py b/tests/validation/tests.py
index b571e0c298..9ddf796c2b 100644
--- a/tests/validation/tests.py
+++ b/tests/validation/tests.py
@@ -109,9 +109,9 @@ class GenericIPAddressFieldTests(ValidationTestCase):
def test_correct_generic_ip_passes(self):
giptm = GenericIPAddressTestModel(generic_ip="1.2.3.4")
- self.assertEqual(None, giptm.full_clean())
+ self.assertIsNone(giptm.full_clean())
giptm = GenericIPAddressTestModel(generic_ip="2001::2")
- self.assertEqual(None, giptm.full_clean())
+ self.assertIsNone(giptm.full_clean())
def test_invalid_generic_ip_raises_error(self):
giptm = GenericIPAddressTestModel(generic_ip="294.4.2.1")
@@ -121,7 +121,7 @@ class GenericIPAddressFieldTests(ValidationTestCase):
def test_correct_v4_ip_passes(self):
giptm = GenericIPAddressTestModel(v4_ip="1.2.3.4")
- self.assertEqual(None, giptm.full_clean())
+ self.assertIsNone(giptm.full_clean())
def test_invalid_v4_ip_raises_error(self):
giptm = GenericIPAddressTestModel(v4_ip="294.4.2.1")
@@ -131,7 +131,7 @@ class GenericIPAddressFieldTests(ValidationTestCase):
def test_correct_v6_ip_passes(self):
giptm = GenericIPAddressTestModel(v6_ip="2001::2")
- self.assertEqual(None, giptm.full_clean())
+ self.assertIsNone(giptm.full_clean())
def test_invalid_v6_ip_raises_error(self):
giptm = GenericIPAddressTestModel(v6_ip="1.2.3.4")
@@ -151,10 +151,16 @@ class GenericIPAddressFieldTests(ValidationTestCase):
giptm = GenericIPAddressTestModel(generic_ip="::ffff:10.10.10.10")
giptm.save()
giptm = GenericIPAddressTestModel(generic_ip="10.10.10.10")
- self.assertEqual(None, giptm.full_clean())
+ self.assertIsNone(giptm.full_clean())
# These two are the same, because we are doing IPv4 unpacking
giptm = GenericIPAddrUnpackUniqueTest(generic_v4unpack_ip="::ffff:18.52.18.52")
giptm.save()
giptm = GenericIPAddrUnpackUniqueTest(generic_v4unpack_ip="18.52.18.52")
self.assertFailsValidation(giptm.full_clean, ['generic_v4unpack_ip',])
+
+ def test_empty_generic_ip_passes(self):
+ giptm = GenericIPAddressTestModel(generic_ip="")
+ self.assertIsNone(giptm.full_clean())
+ giptm = GenericIPAddressTestModel(generic_ip=None)
+ self.assertIsNone(giptm.full_clean())