[rhel7-branch 1/2] Add tests for IPv6 literals in URLs

dashea installerbot-noreply at redhat.com
Thu Jul 23 15:30:39 UTC 2015


From: David Shea <dshea at redhat.com>

Related: rhbz#1246133
---
 tests/regex_tests/url_test.py | 227 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 227 insertions(+)

diff --git a/tests/regex_tests/url_test.py b/tests/regex_tests/url_test.py
index 3c77f7d..8113cca 100644
--- a/tests/regex_tests/url_test.py
+++ b/tests/regex_tests/url_test.py
@@ -141,6 +141,228 @@ def url_regex_test(self):
                   ( "http://user@proxy.host:3128/blah/blah?query=whatever#fragment",
                       ("http://", 'user', None, 'proxy.host', '3128', '/blah/blah', "query=whatever", "fragment") ),
 
+                  # Same, but with IPv4 literals
+                  ( "1.2.3.4",
+                      (None, None, None, '1.2.3.4', None, None, None, None) ),
+
+                  ( "1.2.3.4:3128",
+                      (None, None, None, '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "user:password at 1.2.3.4",
+                      (None, 'user', 'password', '1.2.3.4', None, None, None, None) ),
+
+                  ( "user at 1.2.3.4",
+                      (None, 'user', None, '1.2.3.4', None, None, None, None) ),
+
+                  ( "user:password at 1.2.3.4:3128",
+                      (None, 'user', 'password', '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "user at 1.2.3.4:3128",
+                      (None, 'user', None, '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "1.2.3.4/blah/blah",
+                      (None, None, None, '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "1.2.3.4:3128/blah/blah",
+                      (None, None, None, '1.2.3.4', '3128', '/blah/blah', None, None) ),
+
+                  ( "user:password at 1.2.3.4/blah/blah",
+                      (None, 'user', 'password', '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "user at 1.2.3.4/blah/blah",
+                      (None, 'user', None, '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "user:password at 1.2.3.4:3128/blah/blah",
+                      (None, 'user', 'password', '1.2.3.4', '3128', "/blah/blah", None, None) ),
+
+                  ( "user at 1.2.3.4:3128/blah/blah",
+                      (None, 'user', None, '1.2.3.4', '3128', "/blah/blah", None, None) ),
+
+
+
+                  ( "http://1.2.3.4",
+                      ('http://', None, None, '1.2.3.4', None, None, None, None) ),
+
+                  ( "http://1.2.3.4:3128",
+                      ('http://', None, None, '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "http://user:password@1.2.3.4",
+                      ('http://', 'user', 'password', '1.2.3.4', None, None, None, None) ),
+
+                  ( "http://user@1.2.3.4",
+                      ('http://', 'user', None, '1.2.3.4', None, None, None, None) ),
+
+                  ( "http://user:password@1.2.3.4:3128",
+                      ('http://', 'user', 'password', '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "http://user@1.2.3.4:3128",
+                      ('http://', 'user', None, '1.2.3.4', '3128', None, None, None) ),
+
+                  ( "http://1.2.3.4/blah/blah",
+                      ('http://', None, None, '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "http://1.2.3.4:3128/blah/blah",
+                      ('http://', None, None, '1.2.3.4', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user:password@1.2.3.4/blah/blah",
+                      ("http://", 'user', 'password', '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "http://%75ser:password@1.2.3.4/blah/blah",
+                      ("http://", '%75ser', 'password', '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "http://user:%70assword@1.2.3.4/blah/blah",
+                      ("http://", 'user', '%70assword', '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "http://user@1.2.3.4/blah/blah",
+                      ("http://", 'user', None, '1.2.3.4', None, '/blah/blah', None, None) ),
+
+                  ( "http://user@1.2.3.4/blah/bla%68",
+                      ("http://", 'user', None, '1.2.3.4', None, '/blah/bla%68', None, None) ),
+
+                  ( "http://user:password@1.2.3.4:3128/blah/blah",
+                      ("http://", 'user', 'password', '1.2.3.4', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?query",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "query", None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?query?",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "query?", None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?query=whatever",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "query=whatever", None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?query=whate%76er",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "query=whate%76er", None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "", None) ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah#fragment",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', None, "fragment") ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah#",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', None, "") ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah#fragm%65nt",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', None, "fragm%65nt") ),
+
+                  ( "http://user@1.2.3.4:3128/blah/blah?query=whatever#fragment",
+                      ("http://", 'user', None, '1.2.3.4', '3128', '/blah/blah', "query=whatever", "fragment") ),
+
+                  # An again, but with IPv6 literals
+                  ( "[dead::beef]",
+                      (None, None, None, '[dead::beef]', None, None, None, None) ),
+
+                  ( "[dead::beef]:3128",
+                      (None, None, None, '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "user:password@[dead::beef]",
+                      (None, 'user', 'password', '[dead::beef]', None, None, None, None) ),
+
+                  ( "user@[dead::beef]",
+                      (None, 'user', None, '[dead::beef]', None, None, None, None) ),
+
+                  ( "user:password@[dead::beef]:3128",
+                      (None, 'user', 'password', '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "user@[dead::beef]:3128",
+                      (None, 'user', None, '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "[dead::beef]/blah/blah",
+                      (None, None, None, '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "[dead::beef]:3128/blah/blah",
+                      (None, None, None, '[dead::beef]', '3128', '/blah/blah', None, None) ),
+
+                  ( "user:password@[dead::beef]/blah/blah",
+                      (None, 'user', 'password', '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "user@[dead::beef]/blah/blah",
+                      (None, 'user', None, '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "user:password@[dead::beef]:3128/blah/blah",
+                      (None, 'user', 'password', '[dead::beef]', '3128', "/blah/blah", None, None) ),
+
+                  ( "user@[dead::beef]:3128/blah/blah",
+                      (None, 'user', None, '[dead::beef]', '3128', "/blah/blah", None, None) ),
+
+
+
+                  ( "http://[dead::beef]",
+                      ('http://', None, None, '[dead::beef]', None, None, None, None) ),
+
+                  ( "http://[dead::beef]:3128",
+                      ('http://', None, None, '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "http://user:password@[dead::beef]",
+                      ('http://', 'user', 'password', '[dead::beef]', None, None, None, None) ),
+
+                  ( "http://user@[dead::beef]",
+                      ('http://', 'user', None, '[dead::beef]', None, None, None, None) ),
+
+                  ( "http://user:password@[dead::beef]:3128",
+                      ('http://', 'user', 'password', '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "http://user@[dead::beef]:3128",
+                      ('http://', 'user', None, '[dead::beef]', '3128', None, None, None) ),
+
+                  ( "http://[dead::beef]/blah/blah",
+                      ('http://', None, None, '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "http://[dead::beef]:3128/blah/blah",
+                      ('http://', None, None, '[dead::beef]', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user:password@[dead::beef]/blah/blah",
+                      ("http://", 'user', 'password', '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "http://%75ser:password@[dead::beef]/blah/blah",
+                      ("http://", '%75ser', 'password', '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "http://user:%70assword@[dead::beef]/blah/blah",
+                      ("http://", 'user', '%70assword', '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "http://user@[dead::beef]/blah/blah",
+                      ("http://", 'user', None, '[dead::beef]', None, '/blah/blah', None, None) ),
+
+                  ( "http://user@[dead::beef]/blah/bla%68",
+                      ("http://", 'user', None, '[dead::beef]', None, '/blah/bla%68', None, None) ),
+
+                  ( "http://user:password@[dead::beef]:3128/blah/blah",
+                      ("http://", 'user', 'password', '[dead::beef]', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', None, None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?query",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "query", None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?query?",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "query?", None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?query=whatever",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "query=whatever", None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?query=whate%76er",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "query=whate%76er", None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "", None) ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah#fragment",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', None, "fragment") ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah#",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', None, "") ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah#fragm%65nt",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', None, "fragm%65nt") ),
+
+                  ( "http://user@[dead::beef]:3128/blah/blah?query=whatever#fragment",
+                      ("http://", 'user', None, '[dead::beef]', '3128', '/blah/blah', "query=whatever", "fragment") ),
+
                   # Invalid schemes
                   ( "0http://proxy.host/", None),
                   ( "h~ttp://proxy.host/", None),
@@ -162,6 +384,11 @@ def url_regex_test(self):
                   # Invalid fragments
                   ( "http://proxy.host/blah/blah#fragment#", None),
                   ( "http://proxy.host/blah/blah#%xxragment", None),
+
+                  # Unbracketed IPv6
+                  ( "fe80::1234:56:78", None),
+                  ( "fe80::1234:56:78/blah/blah", None),
+                  ( "http://fe80::1234:56:78/blah/blah", None)
                 ]
 
 


-- 
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/44aab1bf1b71ff29b2532a3b9ef7fc747b37c4c5


More information about the anaconda-patches mailing list