def test_is_valid_ipv6_good_values(self): f = io.StringIO() with redirect_stdout(f): self.assertTrue(V.is_valid_ipv6("2001:1000:2:3:4:5:6:7")) self.assertTrue(V.is_valid_ipv6("2001:1000::1")) self.assertTrue(V.is_valid_ipv6("2001:ffff::0000:1")) self.assertEqual("", f.getvalue())
def test_is_valid_ipv6_dubious_values(self): for dodgy, message in [ ("2001::1", "Teredo address"), ("2001:1::1", "IETF protocol address"), ("2001:16::1", "ORCHID address"), ("2001:23::1", "ORCHIDv2 address"), ("2001:db8::3", "documentation address"), ("2002:123::456:1", "6to4 address"), ("::ffff:192.168.1.11", "mapped IPv4 address"), ]: f = io.StringIO() with redirect_stdout(f): self.assertTrue(V.is_valid_ipv6(dodgy), msg=dodgy) self.assertEqual( "*** Warning: {} is a {}\n".format(dodgy, message), f.getvalue(), msg=dodgy, )
def test_is_valid_ipv6_bad_values(self): for dodgy, message in [ ("::", "unspecified address"), ("::1:2:3:4:5:6", "reserved address"), ("0::1", "loopback address"), ("::1", "loopback address"), ("0:1:2::5", "reserved address"), ("64:ff9b:1::0000:1", "reserved address"), ("100:ffff::0000:1", "reserved address"), ("fe80:ffff::0000:1", "link-local address"), ("fc00:ffff::0000:1", "private address"), ("ff01:ffff::0000:1", "multicast address"), ("100::5123:214", "discard address"), ("9212:4f:8000::15:14a9", "reserved address"), ("FEC0::1234:5678:9ABC", "deprecated site-local address"), ]: f = io.StringIO() with redirect_stdout(f): self.assertFalse(V.is_valid_ipv6(dodgy), msg=dodgy) self.assertEqual( "*** Error: {} is a {}\n".format(dodgy, message), f.getvalue(), msg=dodgy, )
def test_is_valid_ipv6_multiple_gaps(self): self.assertFalse(V.is_valid_ipv6("2001:::8")) self.assertFalse(V.is_valid_ipv6("2001:1:::3:4:5:6::7"))
def test_is_valid_ipv6_reject_ipv4(self): self.assertFalse(V.is_valid_ipv6("192.168.1.2"))
def test_is_valid_ipv6_too_long(self): self.assertFalse(V.is_valid_ipv6("2001:1:2:3:4:5:6:7:8")) self.assertFalse(V.is_valid_ipv6("2001:1:2:3:4:5:6::7:8"))
def test_is_valid_ipv6_too_short(self): self.assertFalse(V.is_valid_ipv6("2001:1:2:3:4:5:6")) self.assertFalse(V.is_valid_ipv6("2001:1:2")) self.assertFalse(V.is_valid_ipv6("2001:1")) self.assertFalse(V.is_valid_ipv6("2001:"))
def test_is_valid_ipv6_too_large(self): self.assertFalse(V.is_valid_ipv6("2001:b::10000:0"))
def test_is_valid_ipv6_non_hex(self): self.assertFalse(V.is_valid_ipv6("2001:b::g:0"))
def test_is_valid_ipv6_empty(self): self.assertFalse(V.is_valid_ipv6(""))