summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2025-01-14 23:08:50 +0100
committernessita <124304+nessita@users.noreply.github.com>2025-01-15 13:46:06 -0300
commitb3c5830769d8a5dbf2f974da7116fe503c9454d9 (patch)
treec8cad631c1f0307b3ee56d956a4192c9fde179b2 /tests
parent1602666b79ab438930b74b576f2fa1b6bcf0377b (diff)
Fixed #36098 -- Fixed validate_ipv6_address()/validate_ipv46_address() crash for non-string values.
Regression in ca2be7724e1244a4cb723de40a070f873c6e94bf.
Diffstat (limited to 'tests')
-rw-r--r--tests/utils_tests/test_ipv6.py18
-rw-r--r--tests/validators/tests.py11
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/utils_tests/test_ipv6.py b/tests/utils_tests/test_ipv6.py
index 1754c7b356..e43e6ca6e4 100644
--- a/tests/utils_tests/test_ipv6.py
+++ b/tests/utils_tests/test_ipv6.py
@@ -1,5 +1,7 @@
import traceback
+from decimal import Decimal
from io import StringIO
+from ipaddress import IPv6Address
from django.core.exceptions import ValidationError
from django.test import SimpleTestCase
@@ -23,6 +25,16 @@ class TestUtilsIPv6(SimpleTestCase):
self.assertTrue(is_valid_ipv6_address("::ffff:254.42.16.14"))
self.assertTrue(is_valid_ipv6_address("::ffff:0a0a:0a0a"))
+ def test_validates_correct_with_ipv6_instance(self):
+ cases = [
+ IPv6Address("::ffff:2.125.160.216"),
+ IPv6Address("fe80::1"),
+ IPv6Address("::"),
+ ]
+ for case in cases:
+ with self.subTest(case=case):
+ self.assertIs(is_valid_ipv6_address(case), True)
+
def test_validates_incorrect_plain_address(self):
self.assertFalse(is_valid_ipv6_address("foo"))
self.assertFalse(is_valid_ipv6_address("127.0.0.1"))
@@ -45,6 +57,12 @@ class TestUtilsIPv6(SimpleTestCase):
self.assertFalse(is_valid_ipv6_address("::999.42.16.14"))
self.assertFalse(is_valid_ipv6_address("::zzzz:0a0a"))
+ def test_validates_incorrect_with_non_string(self):
+ cases = [None, [], {}, (), Decimal("2.46"), 192.168, 42]
+ for case in cases:
+ with self.subTest(case=case):
+ self.assertIs(is_valid_ipv6_address(case), False)
+
def test_cleans_plain_address(self):
self.assertEqual(clean_ipv6_address("DEAD::0:BEEF"), "dead::beef")
self.assertEqual(
diff --git a/tests/validators/tests.py b/tests/validators/tests.py
index acd867c545..49f4b6acbb 100644
--- a/tests/validators/tests.py
+++ b/tests/validators/tests.py
@@ -1,3 +1,4 @@
+import ipaddress
import re
import types
from datetime import datetime, timedelta
@@ -398,15 +399,25 @@ TEST_DATA = [
(validate_ipv6_address, "fe80::1", None),
(validate_ipv6_address, "::1", None),
(validate_ipv6_address, "1:2:3:4:5:6:7:8", None),
+ (validate_ipv6_address, ipaddress.IPv6Address("::ffff:2.125.160.216"), None),
+ (validate_ipv6_address, ipaddress.IPv6Address("fe80::1"), None),
+ (validate_ipv6_address, Decimal("33.1"), ValidationError),
+ (validate_ipv6_address, 9.22, ValidationError),
(validate_ipv6_address, "1:2", ValidationError),
(validate_ipv6_address, "::zzz", ValidationError),
(validate_ipv6_address, "12345::", ValidationError),
(validate_ipv46_address, "1.1.1.1", None),
(validate_ipv46_address, "255.0.0.0", None),
(validate_ipv46_address, "0.0.0.0", None),
+ (validate_ipv46_address, ipaddress.IPv4Address("1.1.1.1"), None),
+ (validate_ipv46_address, ipaddress.IPv4Address("255.0.0.0"), None),
(validate_ipv46_address, "fe80::1", None),
(validate_ipv46_address, "::1", None),
(validate_ipv46_address, "1:2:3:4:5:6:7:8", None),
+ (validate_ipv46_address, ipaddress.IPv6Address("::ffff:2.125.160.216"), None),
+ (validate_ipv46_address, ipaddress.IPv6Address("fe80::1"), None),
+ (validate_ipv46_address, Decimal("33.1"), ValidationError),
+ (validate_ipv46_address, 9.22, ValidationError),
(validate_ipv46_address, "256.1.1.1", ValidationError),
(validate_ipv46_address, "25.1.1.", ValidationError),
(validate_ipv46_address, "25,1,1,1", ValidationError),