@@ -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\n script:\t alert('msg\r \n ')/#frag"
617
+ url = "http\t ://www.python\n .org\t /java\n script:\t alert('msg\r \n ')/?query \n = \t something #frag\n ment "
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\n script:\t alert('msg\r \n ')/#frag"
631
+ url = b"http\t ://www.python\n .org\t /java\n script:\t alert('msg\r \n ')/?query \n = \t something #frag\n ment "
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\n script:\t alert('msg\r \n ')/?query\n =\t something#frag\n ment"
646
+ scheme = "ht\n tp"
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."""
0 commit comments