bpo-43882 Remove the newline, and tab early. From query and fragments… · python/cpython@24f1d1a (original) (raw)
`@@ -614,32 +614,40 @@ def test_urlsplit_attributes(self):
`
614
614
``
615
615
`def test_urlsplit_remove_unsafe_bytes(self):
`
616
616
`# Remove ASCII tabs and newlines from input
`
617
``
`-
url = "http://www.python.org/java\nscript:\talert('msg\r\n')/#frag"
`
``
617
`+
url = "http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
`
618
618
`p = urllib.parse.urlsplit(url)
`
619
619
`self.assertEqual(p.scheme, "http")
`
620
620
`self.assertEqual(p.netloc, "www.python.org")
`
621
621
`self.assertEqual(p.path, "/javascript:alert('msg')/")
`
622
``
`-
self.assertEqual(p.query, "")
`
623
``
`-
self.assertEqual(p.fragment, "frag")
`
``
622
`+
self.assertEqual(p.query, "query=something")
`
``
623
`+
self.assertEqual(p.fragment, "fragment")
`
624
624
`self.assertEqual(p.username, None)
`
625
625
`self.assertEqual(p.password, None)
`
626
626
`self.assertEqual(p.hostname, "www.python.org")
`
627
627
`self.assertEqual(p.port, None)
`
628
``
`-
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/#frag")
`
``
628
`+
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
`
629
629
``
630
630
`# Remove ASCII tabs and newlines from input as bytes.
`
631
``
`-
url = b"http://www.python.org/java\nscript:\talert('msg\r\n')/#frag"
`
``
631
`+
url = b"http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
`
632
632
`p = urllib.parse.urlsplit(url)
`
633
633
`self.assertEqual(p.scheme, b"http")
`
634
634
`self.assertEqual(p.netloc, b"www.python.org")
`
635
635
`self.assertEqual(p.path, b"/javascript:alert('msg')/")
`
636
``
`-
self.assertEqual(p.query, b"")
`
637
``
`-
self.assertEqual(p.fragment, b"frag")
`
``
636
`+
self.assertEqual(p.query, b"query=something")
`
``
637
`+
self.assertEqual(p.fragment, b"fragment")
`
638
638
`self.assertEqual(p.username, None)
`
639
639
`self.assertEqual(p.password, None)
`
640
640
`self.assertEqual(p.hostname, b"www.python.org")
`
641
641
`self.assertEqual(p.port, None)
`
642
``
`-
self.assertEqual(p.geturl(), b"http://www.python.org/javascript:alert('msg')/#frag")
`
``
642
`+
self.assertEqual(p.geturl(), b"http://www.python.org/javascript:alert('msg')/?query=something#fragment")
`
``
643
+
``
644
`+
with scheme as cache-key
`
``
645
`+
url = "http://www.python.org/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
`
``
646
`+
scheme = "ht\ntp"
`
``
647
`+
for _ in range(2):
`
``
648
`+
p = urllib.parse.urlsplit(url, scheme=scheme)
`
``
649
`+
self.assertEqual(p.scheme, "http")
`
``
650
`+
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
`
643
651
``
644
652
`def test_attributes_bad_port(self):
`
645
653
`"""Check handling of invalid ports."""
`