Skip to content

Commit be71b37

Browse files
gh-137146: Add tests on IPv6 Zone ID checks
1 parent 0e2684d commit be71b37

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Lib/test/test_urlparse.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import unittest
44
import urllib.parse
55
from test import support
6+
from string import ascii_letters, digits
67

78
RFC1808_BASE = "http://a/b/c/d;p?q#f"
89
RFC2396_BASE = "http://a/b/c/d;p?q"
@@ -1419,6 +1420,15 @@ def test_invalid_bracketed_hosts(self):
14191420
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix]v6a.ip[suffix')
14201421
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://prefix]v6a.ip')
14211422
self.assertRaises(ValueError, urllib.parse.urlsplit, 'scheme://v6a.ip[suffix')
1423+
# unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
1424+
unreserved = ascii_letters + digits + "-" + "." + "_" + "~"
1425+
zoneid_authorized_characters = unreserved
1426+
removed_characters = "\t\n\r"
1427+
for character in range(256):
1428+
character = chr(character)
1429+
if character in zoneid_authorized_characters or character in removed_characters:
1430+
continue
1431+
self.assertRaises(ValueError, parse.urlsplit, f'scheme://[::1%invalid{character}invalid]/')
14221432

14231433
def test_splitting_bracketed_hosts(self):
14241434
p1 = urllib.parse.urlsplit('scheme://user@[v6a.ip]:1234/path?query')

0 commit comments

Comments
 (0)