@@ -102,7 +102,7 @@ describe('url-parse', function () {
102102} ) ;
103103
104104it ( 'does not truncate the input string' , function ( ) {
105- var input = 'foo\nbar\rbaz \u2028qux\u2029' ;
105+ var input = 'foo\x0bbar\x0cbaz \u2028qux\u2029' ;
106106
107107assume ( parse . extractProtocol ( input ) ) . eql ( {
108108slashes :false ,
@@ -113,7 +113,16 @@ describe('url-parse', function () {
113113} ) ;
114114
115115it ( 'trimsLeft' , function ( ) {
116- assume ( parse . extractProtocol ( ' #"diff-a561630bb56b82342bc66697aee2ad96efddcbc9d150665abd6fb7ecb7c0ab2f-116-116-0" data-selected="false" role="gridcell" tabindex="-1" valign="top">
116+ assume ( parse . extractProtocol ( '\x0b\x0c #"diff-a561630bb56b82342bc66697aee2ad96efddcbc9d150665abd6fb7ecb7c0ab2f-116-117-0" data-selected="false" role="gridcell" tabindex="-1" valign="top">
117+ slashes :true ,
118+ protocol :'#"diff-a561630bb56b82342bc66697aee2ad96efddcbc9d150665abd6fb7ecb7c0ab2f-116-119-0" data-selected="false" role="gridcell" tabindex="-1" valign="top">
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 ( {
117126slashes :true ,
118127protocol :'#"diff-a561630bb56b82342bc66697aee2ad96efddcbc9d150665abd6fb7ecb7c0ab2f-119-128-0" data-selected="false" role="gridcell" tabindex="-1" valign="top">119
128rest :'foo' ,
@@ -408,6 +417,31 @@ describe('url-parse', function () {
408417assume ( 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:cd@example.com: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 ( 'alice@atlanta.com' ) ;
442+ assume ( parsed . href ) . equals ( 'sip:alice@atlanta.com' ) ;
443+ } ) ;
444+
411445describe ( 'origin' , function ( ) {
412446it ( 'generates an origin property' , function ( ) {
413447var url = 'http://google.com:80/pathname'