@@ -102,7 +102,7 @@ describe('url-parse', function () {
102102 } ) ;
103103
104104 it ( 'does not truncate the input string' , function ( ) {
105- var input = 'foo\nbar\rbaz \u2028qux\u2029' ;
105+ var input = 'foo\x0bbar\x0cbaz \u2028qux\u2029' ;
106106
107107 assume ( parse . extractProtocol ( input ) ) . eql ( {
108108 slashes : false ,
@@ -113,7 +113,16 @@ describe('url-parse', function () {
113113 } ) ;
114114
115115 it ( 'trimsLeft' , function ( ) {
116- assume ( parse . extractProtocol ( ' javascript://foo' ) ) . eql ( {
116+ assume ( parse . extractProtocol ( '\x0b\x0c javascript://foo' ) ) . eql ( {
117+ slashes : true ,
118+ protocol : 'javascript:' ,
119+ rest : 'foo' ,
120+ slashesCount : 2
121+ } ) ;
122+ } ) ;
123+
124+ it ( 'removes CR, HT, and LF' , function ( ) {
125+ assume ( parse . extractProtocol ( 'jav\n\rasc\nript\r:/\t/fo\no' ) ) . eql ( {
117126 slashes : true ,
118127 protocol : 'javascript:' ,
119128 rest : 'foo' ,
@@ -408,6 +417,31 @@ describe('url-parse', function () {
408417 assume ( parsed . href ) . equals ( '//example.com' ) ;
409418 } ) ;
410419
420+ it ( 'removes CR, HT, and LF' , function ( ) {
421+ var parsed = parse (
422+ 'ht\ntp://a\rb:\tcd@exam\rple.com:80\t80/pat\thname?fo\no=b\rar#ba\tz'
423+ ) ;
424+
425+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
426+ assume ( parsed . username ) . equals ( 'ab' ) ;
427+ assume ( parsed . password ) . equals ( 'cd' ) ;
428+ assume ( parsed . host ) . equals ( 'example.com:8080' ) ;
429+ assume ( parsed . hostname ) . equals ( 'example.com' ) ;
430+ assume ( parsed . port ) . equals ( '8080' ) ;
431+ assume ( parsed . pathname ) . equals ( '/pathname' ) ;
432+ assume ( parsed . query ) . equals ( '?foo=bar' ) ;
433+ assume ( parsed . hash ) . equals ( '#baz' ) ;
434+ assume ( parsed . href ) . equals (
435+ 'http://ab:[email protected] :8080/pathname?foo=bar#baz' 436+ ) ;
437+
438+ parsed = parse ( 's\nip:al\rice@atl\tanta.com' ) ;
439+
440+ assume ( parsed . protocol ) . equals ( 'sip:' ) ;
441+ assume ( parsed . pathname ) . equals ( '[email protected] ' ) ; 442+ assume ( parsed . href ) . equals ( 'sip:[email protected] ' ) ; 443+ } ) ;
444+
411445 describe ( 'origin' , function ( ) {
412446 it ( 'generates an origin property' , function ( ) {
413447 var url = 'http://google.com:80/pathname'
0 commit comments