]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Add tests of IPv4/IPv6 address parsing.
authorBrian Wellington <bwelling@xbill.org>
Fri, 14 Aug 2020 20:30:56 +0000 (13:30 -0700)
committerBrian Wellington <bwelling@xbill.org>
Fri, 14 Aug 2020 20:30:56 +0000 (13:30 -0700)
tests/test_address.py [new file with mode: 0644]

diff --git a/tests/test_address.py b/tests/test_address.py
new file mode 100644 (file)
index 0000000..8222908
--- /dev/null
@@ -0,0 +1,567 @@
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
+
+import socket
+import unittest
+
+import dns.exception
+import dns.ipv4
+import dns.ipv6
+
+class IPv4Tests(unittest.TestCase):
+    def test_valid(self):
+        valid = (
+            "1.2.3.4",
+            "11.22.33.44",
+            "254.7.237.98",
+            "192.168.1.26",
+            "192.168.1.1",
+            "13.1.68.3",
+            "129.144.52.38",
+            "254.157.241.86",
+            "12.34.56.78",
+            "192.0.2.128",
+        )
+        for s in valid:
+            self.assertEqual(dns.ipv4.inet_aton(s),
+                             socket.inet_pton(socket.AF_INET, s))
+
+    def test_invalid(self):
+        invalid = (
+            "",
+            ".",
+            "..",
+            "400.2.3.4",
+            "260.2.3.4",
+            "256.2.3.4",
+            "1.256.3.4",
+            "1.2.256.4",
+            "1.2.3.256",
+            "300.2.3.4",
+            "1.300.3.4",
+            "1.2.300.4",
+            "1.2.3.300",
+            "900.2.3.4",
+            "1.900.3.4",
+            "1.2.900.4",
+            "1.2.3.900",
+            "300.300.300.300",
+            "3000.30.30.30",
+            "255Z255X255Y255",
+            "192x168.1.26",
+            "2.3.4",
+            "257.1.2.3",
+            "00.00.00.00",
+            "000.000.000.000",
+            "256.256.256.256",
+            "255255.255.255",
+            "255.255255.255",
+            "255.255.255255",
+            "1...",
+            "1.2..",
+            "1.2.3.",
+            ".2..",
+            ".2.3.",
+            ".2.3.4",
+            "..3.",
+            "..3.4",
+            "...4",
+            ".1.2.3.4",
+            "1.2.3.4.",
+            " 1.2.3.4",
+            "1.2.3.4 ",
+            " 1.2.3.4 ",
+            "::",
+        )
+        for s in invalid:
+            with self.assertRaises(dns.exception.SyntaxError,
+                                   msg=f'invalid IPv4 address: "{s}"'):
+                dns.ipv4.inet_aton(s)
+
+class IPv6Tests(unittest.TestCase):
+    def test_valid(self):
+        valid = (
+            "::1",
+            "::",
+            "0:0:0:0:0:0:0:1",
+            "0:0:0:0:0:0:0:0",
+            "2001:DB8:0:0:8:800:200C:417A",
+            "FF01:0:0:0:0:0:0:101",
+            "2001:DB8::8:800:200C:417A",
+            "FF01::101",
+            "fe80::217:f2ff:fe07:ed62",
+            "2001:0000:1234:0000:0000:C1C0:ABCD:0876",
+            "3ffe:0b00:0000:0000:0001:0000:0000:000a",
+            "FF02:0000:0000:0000:0000:0000:0000:0001",
+            "0000:0000:0000:0000:0000:0000:0000:0001",
+            "0000:0000:0000:0000:0000:0000:0000:0000",
+            "2::10",
+            "ff02::1",
+            "fe80::",
+            "2002::",
+            "2001:db8::",
+            "2001:0db8:1234::",
+            "::ffff:0:0",
+            "1:2:3:4:5:6:7:8",
+            "1:2:3:4:5:6::8",
+            "1:2:3:4:5::8",
+            "1:2:3:4::8",
+            "1:2:3::8",
+            "1:2::8",
+            "1::8",
+            "1::2:3:4:5:6:7",
+            "1::2:3:4:5:6",
+            "1::2:3:4:5",
+            "1::2:3:4",
+            "1::2:3",
+            "::2:3:4:5:6:7:8",
+            "::2:3:4:5:6:7",
+            "::2:3:4:5:6",
+            "::2:3:4:5",
+            "::2:3:4",
+            "::2:3",
+            "::8",
+            "1:2:3:4:5:6::",
+            "1:2:3:4:5::",
+            "1:2:3:4::",
+            "1:2:3::",
+            "1:2::",
+            "1::",
+            "1:2:3:4:5::7:8",
+            "1:2:3:4::7:8",
+            "1:2:3::7:8",
+            "1:2::7:8",
+            "1::7:8",
+            "1:2:3:4:5:6:1.2.3.4",
+            "1:2:3:4:5::1.2.3.4",
+            "1:2:3:4::1.2.3.4",
+            "1:2:3::1.2.3.4",
+            "1:2::1.2.3.4",
+            "1::1.2.3.4",
+            "1:2:3:4::5:1.2.3.4",
+            "1:2:3::5:1.2.3.4",
+            "1:2:3::5:1.2.3.4",
+            "1:2::5:1.2.3.4",
+            "1::5:1.2.3.4",
+            "1::5:11.22.33.44",
+            "fe80::217:f2ff:254.7.237.98",
+            "::ffff:192.168.1.26",
+            "::ffff:192.168.1.1",
+            "0:0:0:0:0:0:13.1.68.3",
+            "0:0:0:0:0:FFFF:129.144.52.38",
+            "::13.1.68.3",
+            "::FFFF:129.144.52.38",
+            "fe80:0:0:0:204:61ff:254.157.241.86",
+            "fe80::204:61ff:254.157.241.86",
+            "::ffff:12.34.56.78",
+            "::ffff:192.0.2.128",
+            "fe80:0000:0000:0000:0204:61ff:fe9d:f156",
+            "fe80:0:0:0:204:61ff:fe9d:f156",
+            "fe80::204:61ff:fe9d:f156",
+            "fe80::1",
+            "::ffff:c000:280",
+            "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
+            "2001:db8:85a3:0:0:8a2e:370:7334",
+            "2001:db8:85a3::8a2e:370:7334",
+            "2001:0db8:0000:0000:0000:0000:1428:57ab",
+            "2001:0db8:0000:0000:0000::1428:57ab",
+            "2001:0db8:0:0:0:0:1428:57ab",
+            "2001:0db8:0:0::1428:57ab",
+            "2001:0db8::1428:57ab",
+            "2001:db8::1428:57ab",
+            "::ffff:0c22:384e",
+            "2001:0db8:1234:0000:0000:0000:0000:0000",
+            "2001:0db8:1234:ffff:ffff:ffff:ffff:ffff",
+            "2001:db8:a::123",
+            "1111:2222:3333:4444:5555:6666:7777:8888",
+            "1111:2222:3333:4444:5555:6666:7777::",
+            "1111:2222:3333:4444:5555:6666::",
+            "1111:2222:3333:4444:5555::",
+            "1111:2222:3333:4444::",
+            "1111:2222:3333::",
+            "1111:2222::",
+            "1111::",
+            "1111:2222:3333:4444:5555:6666::8888",
+            "1111:2222:3333:4444:5555::8888",
+            "1111:2222:3333:4444::8888",
+            "1111:2222:3333::8888",
+            "1111:2222::8888",
+            "1111::8888",
+            "::8888",
+            "1111:2222:3333:4444:5555::7777:8888",
+            "1111:2222:3333:4444::7777:8888",
+            "1111:2222:3333::7777:8888",
+            "1111:2222::7777:8888",
+            "1111::7777:8888",
+            "::7777:8888",
+            "1111:2222:3333:4444::6666:7777:8888",
+            "1111:2222:3333::6666:7777:8888",
+            "1111:2222::6666:7777:8888",
+            "1111::6666:7777:8888",
+            "::6666:7777:8888",
+            "1111:2222:3333::5555:6666:7777:8888",
+            "1111:2222::5555:6666:7777:8888",
+            "1111::5555:6666:7777:8888",
+            "::5555:6666:7777:8888",
+            "1111:2222::4444:5555:6666:7777:8888",
+            "1111::4444:5555:6666:7777:8888",
+            "::4444:5555:6666:7777:8888",
+            "1111::3333:4444:5555:6666:7777:8888",
+            "::3333:4444:5555:6666:7777:8888",
+            "::2222:3333:4444:5555:6666:7777:8888",
+            "1111:2222:3333:4444:5555:6666:123.123.123.123",
+            "1111:2222:3333:4444:5555::123.123.123.123",
+            "1111:2222:3333:4444::123.123.123.123",
+            "1111:2222:3333::123.123.123.123",
+            "1111:2222::123.123.123.123",
+            "1111::123.123.123.123",
+            "::123.123.123.123",
+            "1111:2222:3333:4444::6666:123.123.123.123",
+            "1111:2222:3333::6666:123.123.123.123",
+            "1111:2222::6666:123.123.123.123",
+            "1111::6666:123.123.123.123",
+            "::6666:123.123.123.123",
+            "1111:2222:3333::5555:6666:123.123.123.123",
+            "1111:2222::5555:6666:123.123.123.123",
+            "1111::5555:6666:123.123.123.123",
+            "::5555:6666:123.123.123.123",
+            "1111:2222::4444:5555:6666:123.123.123.123",
+            "1111::4444:5555:6666:123.123.123.123",
+            "::4444:5555:6666:123.123.123.123",
+            "1111::3333:4444:5555:6666:123.123.123.123",
+            "::2222:3333:4444:5555:6666:123.123.123.123",
+            "::0:0:0:0:0:0:0",
+            "::0:0:0:0:0:0",
+            "::0:0:0:0:0",
+            "::0:0:0:0",
+            "::0:0:0",
+            "::0:0",
+            "::0",
+            "0:0:0:0:0:0:0::",
+            "0:0:0:0:0:0::",
+            "0:0:0:0:0::",
+            "0:0:0:0::",
+            "0:0:0::",
+            "0:0::",
+            "0::",
+            "0:a:b:c:d:e:f::",
+            "::0:a:b:c:d:e:f",
+            "a:b:c:d:e:f:0::",
+        )
+        for s in valid:
+            self.assertEqual(dns.ipv6.inet_aton(s),
+                             socket.inet_pton(socket.AF_INET6, s))
+
+    def test_invalid(self):
+        invalid = (
+            "",
+            ":",
+            ":::",
+            "2001:DB8:0:0:8:800:200C:417A:221",
+            "FF01::101::2",
+            "02001:0000:1234:0000:0000:C1C0:ABCD:0876",
+            "2001:0000:1234:0000:00001:C1C0:ABCD:0876",
+            " 2001:0000:1234:0000:0000:C1C0:ABCD:0876",
+            "2001:0000:1234:0000:0000:C1C0:ABCD:0876 ",
+            " 2001:0000:1234:0000:0000:C1C0:ABCD:0876  ",
+            "2001:0000:1234:0000:0000:C1C0:ABCD:0876  0",
+            "2001:0000:1234: 0000:0000:C1C0:ABCD:0876",
+            "3ffe:0b00:0000:0001:0000:0000:000a",
+            "FF02:0000:0000:0000:0000:0000:0000:0000:0001",
+            "3ffe:b00::1::a",
+            "::1111:2222:3333:4444:5555:6666::",
+            "1:2:3::4:5::7:8",
+            "12345::6:7:8",
+            "1::5:400.2.3.4",
+            "1::5:260.2.3.4",
+            "1::5:256.2.3.4",
+            "1::5:1.256.3.4",
+            "1::5:1.2.256.4",
+            "1::5:1.2.3.256",
+            "1::5:300.2.3.4",
+            "1::5:1.300.3.4",
+            "1::5:1.2.300.4",
+            "1::5:1.2.3.300",
+            "1::5:900.2.3.4",
+            "1::5:1.900.3.4",
+            "1::5:1.2.900.4",
+            "1::5:1.2.3.900",
+            "1::5:300.300.300.300",
+            "1::5:3000.30.30.30",
+            "1::400.2.3.4",
+            "1::260.2.3.4",
+            "1::256.2.3.4",
+            "1::1.256.3.4",
+            "1::1.2.256.4",
+            "1::1.2.3.256",
+            "1::300.2.3.4",
+            "1::1.300.3.4",
+            "1::1.2.300.4",
+            "1::1.2.3.300",
+            "1::900.2.3.4",
+            "1::1.900.3.4",
+            "1::1.2.900.4",
+            "1::1.2.3.900",
+            "1::300.300.300.300",
+            "1::3000.30.30.30",
+            "::400.2.3.4",
+            "::260.2.3.4",
+            "::256.2.3.4",
+            "::1.256.3.4",
+            "::1.2.256.4",
+            "::1.2.3.256",
+            "::300.2.3.4",
+            "::1.300.3.4",
+            "::1.2.300.4",
+            "::1.2.3.300",
+            "::900.2.3.4",
+            "::1.900.3.4",
+            "::1.2.900.4",
+            "::1.2.3.900",
+            "::300.300.300.300",
+            "::3000.30.30.30",
+            "::1.2.3.4.",
+            "2001:1:1:1:1:1:255Z255X255Y255",
+            "::ffff:192x168.1.26",
+            "::ffff:2.3.4",
+            "::ffff:257.1.2.3",
+            "1.2.3.4",
+            "1.2.3.4:1111:2222:3333:4444::5555",
+            "1.2.3.4:1111:2222:3333::5555",
+            "1.2.3.4:1111:2222::5555",
+            "1.2.3.4:1111::5555",
+            "1.2.3.4::5555",
+            "1.2.3.4::",
+            "fe80:0000:0000:0000:0204:61ff:254.157.241.086",
+            "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4",
+            "1111:2222:3333:4444:5555:6666:00.00.00.00",
+            "1111:2222:3333:4444:5555:6666:000.000.000.000",
+            "1111:2222:3333:4444:5555:6666:256.256.256.256",
+            "1111:2222:3333:4444::5555:",
+            "1111:2222:3333::5555:",
+            "1111:2222::5555:",
+            "1111::5555:",
+            "::5555:",
+            "1111:",
+            ":1111:2222:3333:4444::5555",
+            ":1111:2222:3333::5555",
+            ":1111:2222::5555",
+            ":1111::5555",
+            ":::5555",
+            "123",
+            "ldkfj",
+            "2001::FFD3::57ab",
+            "2001:db8:85a3::8a2e:37023:7334",
+            "2001:db8:85a3::8a2e:370k:7334",
+            "1:2:3:4:5:6:7:8:9",
+            "1::2::3",
+            "1:::3:4:5",
+            "1:2:3::4:5:6:7:8:9",
+            "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX",
+            "1111:2222:3333:4444:5555:6666:7777:8888:9999",
+            "1111:2222:3333:4444:5555:6666:7777:8888::",
+            "::2222:3333:4444:5555:6666:7777:8888:9999",
+            "1111:2222:3333:4444:5555:6666:7777",
+            "1111:2222:3333:4444:5555:6666",
+            "1111:2222:3333:4444:5555",
+            "1111:2222:3333:4444",
+            "1111:2222:3333",
+            "1111:2222",
+            "1111",
+            "11112222:3333:4444:5555:6666:7777:8888",
+            "1111:22223333:4444:5555:6666:7777:8888",
+            "1111:2222:33334444:5555:6666:7777:8888",
+            "1111:2222:3333:44445555:6666:7777:8888",
+            "1111:2222:3333:4444:55556666:7777:8888",
+            "1111:2222:3333:4444:5555:66667777:8888",
+            "1111:2222:3333:4444:5555:6666:77778888",
+            "1111:2222:3333:4444:5555:6666:7777:8888:",
+            "1111:2222:3333:4444:5555:6666:7777:",
+            "1111:2222:3333:4444:5555:6666:",
+            "1111:2222:3333:4444:5555:",
+            "1111:2222:3333:4444:",
+            "1111:2222:3333:",
+            "1111:2222:",
+            ":8888",
+            ":7777:8888",
+            ":6666:7777:8888",
+            ":5555:6666:7777:8888",
+            ":4444:5555:6666:7777:8888",
+            ":3333:4444:5555:6666:7777:8888",
+            ":2222:3333:4444:5555:6666:7777:8888",
+            ":1111:2222:3333:4444:5555:6666:7777:8888",
+            ":::2222:3333:4444:5555:6666:7777:8888",
+            "1111:::3333:4444:5555:6666:7777:8888",
+            "1111:2222:::4444:5555:6666:7777:8888",
+            "1111:2222:3333:::5555:6666:7777:8888",
+            "1111:2222:3333:4444:::6666:7777:8888",
+            "1111:2222:3333:4444:5555:::7777:8888",
+            "1111:2222:3333:4444:5555:6666:::8888",
+            "::2222::4444:5555:6666:7777:8888",
+            "::2222:3333::5555:6666:7777:8888",
+            "::2222:3333:4444::6666:7777:8888",
+            "::2222:3333:4444:5555::7777:8888",
+            "::2222:3333:4444:5555:7777::8888",
+            "::2222:3333:4444:5555:7777:8888::",
+            "1111::3333::5555:6666:7777:8888",
+            "1111::3333:4444::6666:7777:8888",
+            "1111::3333:4444:5555::7777:8888",
+            "1111::3333:4444:5555:6666::8888",
+            "1111::3333:4444:5555:6666:7777::",
+            "1111:2222::4444::6666:7777:8888",
+            "1111:2222::4444:5555::7777:8888",
+            "1111:2222::4444:5555:6666::8888",
+            "1111:2222::4444:5555:6666:7777::",
+            "1111:2222:3333::5555::7777:8888",
+            "1111:2222:3333::5555:6666::8888",
+            "1111:2222:3333::5555:6666:7777::",
+            "1111:2222:3333:4444::6666::8888",
+            "1111:2222:3333:4444::6666:7777::",
+            "1111:2222:3333:4444:5555::7777::",
+            "1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4",
+            "1111:2222:3333:4444:5555:6666:7777:1.2.3.4",
+            "1111:2222:3333:4444:5555:6666::1.2.3.4",
+            "::2222:3333:4444:5555:6666:7777:1.2.3.4",
+            "1111:2222:3333:4444:5555:6666:1.2.3.4.5",
+            "1111:2222:3333:4444:5555:1.2.3.4",
+            "1111:2222:3333:4444:1.2.3.4",
+            "1111:2222:3333:1.2.3.4",
+            "1111:2222:1.2.3.4",
+            "1111:1.2.3.4",
+            "11112222:3333:4444:5555:6666:1.2.3.4",
+            "1111:22223333:4444:5555:6666:1.2.3.4",
+            "1111:2222:33334444:5555:6666:1.2.3.4",
+            "1111:2222:3333:44445555:6666:1.2.3.4",
+            "1111:2222:3333:4444:55556666:1.2.3.4",
+            "1111:2222:3333:4444:5555:66661.2.3.4",
+            "1111:2222:3333:4444:5555:6666:255255.255.255",
+            "1111:2222:3333:4444:5555:6666:255.255255.255",
+            "1111:2222:3333:4444:5555:6666:255.255.255255",
+            ":1.2.3.4",
+            ":6666:1.2.3.4",
+            ":5555:6666:1.2.3.4",
+            ":4444:5555:6666:1.2.3.4",
+            ":3333:4444:5555:6666:1.2.3.4",
+            ":2222:3333:4444:5555:6666:1.2.3.4",
+            ":1111:2222:3333:4444:5555:6666:1.2.3.4",
+            ":::2222:3333:4444:5555:6666:1.2.3.4",
+            "1111:::3333:4444:5555:6666:1.2.3.4",
+            "1111:2222:::4444:5555:6666:1.2.3.4",
+            "1111:2222:3333:::5555:6666:1.2.3.4",
+            "1111:2222:3333:4444:::6666:1.2.3.4",
+            "1111:2222:3333:4444:5555:::1.2.3.4",
+            "::2222::4444:5555:6666:1.2.3.4",
+            "::2222:3333::5555:6666:1.2.3.4",
+            "::2222:3333:4444::6666:1.2.3.4",
+            "::2222:3333:4444:5555::1.2.3.4",
+            "1111::3333::5555:6666:1.2.3.4",
+            "1111::3333:4444::6666:1.2.3.4",
+            "1111::3333:4444:5555::1.2.3.4",
+            "1111:2222::4444::6666:1.2.3.4",
+            "1111:2222::4444:5555::1.2.3.4",
+            "1111:2222:3333::5555::1.2.3.4",
+            "::.",
+            "::..",
+            "::...",
+            "::1...",
+            "::1.2..",
+            "::1.2.3.",
+            "::.2..",
+            "::.2.3.",
+            "::.2.3.4",
+            "::..3.",
+            "::..3.4",
+            "::...4",
+            ":1111:2222:3333:4444:5555:6666:7777::",
+            ":1111:2222:3333:4444:5555:6666::",
+            ":1111:2222:3333:4444:5555::",
+            ":1111:2222:3333:4444::",
+            ":1111:2222:3333::",
+            ":1111:2222::",
+            ":1111::",
+            ":1111:2222:3333:4444:5555:6666::8888",
+            ":1111:2222:3333:4444:5555::8888",
+            ":1111:2222:3333:4444::8888",
+            ":1111:2222:3333::8888",
+            ":1111:2222::8888",
+            ":1111::8888",
+            ":::8888",
+            ":1111:2222:3333:4444:5555::7777:8888",
+            ":1111:2222:3333:4444::7777:8888",
+            ":1111:2222:3333::7777:8888",
+            ":1111:2222::7777:8888",
+            ":1111::7777:8888",
+            ":::7777:8888",
+            ":1111:2222:3333:4444::6666:7777:8888",
+            ":1111:2222:3333::6666:7777:8888",
+            ":1111:2222::6666:7777:8888",
+            ":1111::6666:7777:8888",
+            ":::6666:7777:8888",
+            ":1111:2222:3333::5555:6666:7777:8888",
+            ":1111:2222::5555:6666:7777:8888",
+            ":1111::5555:6666:7777:8888",
+            ":::5555:6666:7777:8888",
+            ":1111:2222::4444:5555:6666:7777:8888",
+            ":1111::4444:5555:6666:7777:8888",
+            ":::4444:5555:6666:7777:8888",
+            ":1111::3333:4444:5555:6666:7777:8888",
+            ":::3333:4444:5555:6666:7777:8888",
+            ":1111:2222:3333:4444:5555::1.2.3.4",
+            ":1111:2222:3333:4444::1.2.3.4",
+            ":1111:2222:3333::1.2.3.4",
+            ":1111:2222::1.2.3.4",
+            ":1111::1.2.3.4",
+            ":::1.2.3.4",
+            ":1111:2222:3333:4444::6666:1.2.3.4",
+            ":1111:2222:3333::6666:1.2.3.4",
+            ":1111:2222::6666:1.2.3.4",
+            ":1111::6666:1.2.3.4",
+            ":::6666:1.2.3.4",
+            ":1111:2222:3333::5555:6666:1.2.3.4",
+            ":1111:2222::5555:6666:1.2.3.4",
+            ":1111::5555:6666:1.2.3.4",
+            ":::5555:6666:1.2.3.4",
+            ":1111:2222::4444:5555:6666:1.2.3.4",
+            ":1111::4444:5555:6666:1.2.3.4",
+            ":::4444:5555:6666:1.2.3.4",
+            ":1111::3333:4444:5555:6666:1.2.3.4",
+            "1111:2222:3333:4444:5555:6666:7777:::",
+            "1111:2222:3333:4444:5555:6666:::",
+            "1111:2222:3333:4444:5555:::",
+            "1111:2222:3333:4444:::",
+            "1111:2222:3333:::",
+            "1111:2222:::",
+            "1111:::",
+            "1111:2222:3333:4444:5555:6666::8888:",
+            "1111:2222:3333:4444:5555::8888:",
+            "1111:2222:3333:4444::8888:",
+            "1111:2222:3333::8888:",
+            "1111:2222::8888:",
+            "1111::8888:",
+            "::8888:",
+            "1111:2222:3333:4444:5555::7777:8888:",
+            "1111:2222:3333:4444::7777:8888:",
+            "1111:2222:3333::7777:8888:",
+            "1111:2222::7777:8888:",
+            "1111::7777:8888:",
+            "::7777:8888:",
+            "1111:2222:3333:4444::6666:7777:8888:",
+            "1111:2222:3333::6666:7777:8888:",
+            "1111:2222::6666:7777:8888:",
+            "1111::6666:7777:8888:",
+            "::6666:7777:8888:",
+            "1111:2222:3333::5555:6666:7777:8888:",
+            "1111:2222::5555:6666:7777:8888:",
+            "1111::5555:6666:7777:8888:",
+            "::5555:6666:7777:8888:",
+            "1111:2222::4444:5555:6666:7777:8888:",
+            "1111::4444:5555:6666:7777:8888:",
+            "::4444:5555:6666:7777:8888:",
+            "1111::3333:4444:5555:6666:7777:8888:",
+            "::3333:4444:5555:6666:7777:8888:",
+            "::2222:3333:4444:5555:6666:7777:8888:",
+            "':10.0.0.1",
+        )
+        for s in invalid:
+            with self.assertRaises(dns.exception.SyntaxError,
+                                   msg=f'invalid IPv6 address: "{s}"'):
+                dns.ipv6.inet_aton(s)