@@ -190,9 +190,10 @@ describe('url-parse', function () {
190
190
, parsed = parse ( url ) ;
191
191
192
192
assume ( parsed . port ) . equals ( '' ) ;
193
+ assume ( parsed . pathname ) . equals ( '/' ) ;
193
194
assume ( parsed . host ) . equals ( 'example.com' ) ;
194
195
assume ( parsed . hostname ) . equals ( 'example.com' ) ;
195
- assume ( parsed . href ) . equals ( 'http://example.com' ) ;
196
+ assume ( parsed . href ) . equals ( 'http://example.com/ ' ) ;
196
197
} ) ;
197
198
198
199
it ( 'understands an / as pathname' , function ( ) {
@@ -242,16 +243,30 @@ describe('url-parse', function () {
242
243
assume ( parsed . hostname ) . equals ( 'google.com' ) ;
243
244
assume ( parsed . hash ) . equals ( '#what\\is going on' ) ;
244
245
245
- parsed = parse ( '// \\what-is-up.com' ) ;
246
+ parsed = parse ( 'http://yolo.com \\what-is-up.com' ) ;
246
247
assume ( parsed . pathname ) . equals ( '/what-is-up.com' ) ;
247
248
} ) ;
248
249
249
250
it ( 'correctly ignores multiple slashes //' , function ( ) {
250
251
var url = '////what-is-up.com'
251
252
, parsed = parse ( url ) ;
252
253
253
- assume ( parsed . host ) . equals ( '' ) ;
254
- assume ( parsed . hostname ) . equals ( '' ) ;
254
+ assume ( parsed . host ) . equals ( 'what-is-up.com' ) ;
255
+ assume ( parsed . href ) . equals ( '//what-is-up.com/' ) ;
256
+ } ) ;
257
+
258
+ it ( 'does not see a slash after the protocol as path' , function ( ) {
259
+ var url = 'https:\\/github.com/foo/bar'
260
+ , parsed = parse ( url ) ;
261
+
262
+ assume ( parsed . host ) . equals ( 'github.com' ) ;
263
+ assume ( parsed . hostname ) . equals ( 'github.com' ) ;
264
+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
265
+
266
+ url = 'https:/\/\/\github.com/foo/bar' ;
267
+ assume ( parsed . host ) . equals ( 'github.com' ) ;
268
+ assume ( parsed . hostname ) . equals ( 'github.com' ) ;
269
+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
255
270
} ) ;
256
271
257
272
describe ( 'origin' , function ( ) {
@@ -327,32 +342,52 @@ describe('url-parse', function () {
327
342
it ( 'extracts the right protocol from a url' , function ( ) {
328
343
var testData = [
329
344
{
330
- href : 'http://example.com' ,
345
+ href : 'http://example.com/ ' ,
331
346
protocol : 'http:' ,
332
- pathname : ''
347
+ pathname : '/' ,
348
+ slashes : true
349
+ } ,
350
+ {
351
+ href : 'ws://example.com/' ,
352
+ protocol : 'ws:' ,
353
+ pathname : '/' ,
354
+ slashes : true
355
+ } ,
356
+ {
357
+ href : 'wss://example.com/' ,
358
+ protocol : 'wss:' ,
359
+ pathname : '/' ,
360
+ slashes : true
333
361
} ,
334
362
{
335
363
href : 'mailto:test@example.com' ,
336
364
pathname : 'test@example.com' ,
337
- protocol : 'mailto:'
365
+ protocol : 'mailto:' ,
366
+ slashes : false
338
367
} ,
339
368
{
340
369
href : 'data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E' ,
341
370
pathname : 'text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E' ,
342
- protocol : 'data:'
371
+ protocol : 'data:' ,
372
+ slashes : false ,
343
373
} ,
344
374
{
345
375
href : 'sip:alice@atlanta.com' ,
346
376
pathname : 'alice@atlanta.com' ,
347
- protocol : 'sip:'
377
+ protocol : 'sip:' ,
378
+ slashes : false ,
348
379
}
349
380
] ;
350
381
351
- var data ;
382
+ var data , test ;
352
383
for ( var i = 0 , len = testData . length ; i < len ; ++ i ) {
353
- data = parse ( testData [ i ] . href ) ;
354
- assume ( data . protocol ) . equals ( testData [ i ] . protocol ) ;
355
- assume ( data . pathname ) . equals ( testData [ i ] . pathname ) ;
384
+ test = testData [ i ] ;
385
+ data = parse ( test . href ) ;
386
+
387
+ assume ( data . protocol ) . equals ( test . protocol ) ;
388
+ assume ( data . pathname ) . equals ( test . pathname ) ;
389
+ assume ( data . slashes ) . equals ( test . slashes ) ;
390
+ assume ( data . href ) . equals ( test . href ) ;
356
391
}
357
392
} ) ;
358
393
@@ -391,13 +426,14 @@ describe('url-parse', function () {
391
426
} ) ;
392
427
393
428
it ( 'parses ipv6 with auth' , function ( ) {
394
- var url = 'http://user:password@[3ffe:2a00:100:7031::1]:8080'
429
+ var url = 'http://user:password@[3ffe:2a00:100:7031::1]:8080/ '
395
430
, parsed = parse ( url ) ;
396
431
397
432
assume ( parsed . username ) . equals ( 'user' ) ;
398
433
assume ( parsed . password ) . equals ( 'password' ) ;
399
434
assume ( parsed . host ) . equals ( '[3ffe:2a00:100:7031::1]:8080' ) ;
400
435
assume ( parsed . hostname ) . equals ( '[3ffe:2a00:100:7031::1]' ) ;
436
+ assume ( parsed . pathname ) . equals ( '/' ) ;
401
437
assume ( parsed . href ) . equals ( url ) ;
402
438
} ) ;
403
439
@@ -467,7 +503,7 @@ describe('url-parse', function () {
467
503
468
504
assume ( data . port ) . equals ( '' ) ;
469
505
assume ( data . host ) . equals ( 'localhost' ) ;
470
- assume ( data . href ) . equals ( 'http://localhost' ) ;
506
+ assume ( data . href ) . equals ( 'http://localhost/ ' ) ;
471
507
} ) ;
472
508
473
509
it ( 'inherits port numbers for relative urls' , function ( ) {
@@ -516,7 +552,8 @@ describe('url-parse', function () {
516
552
} ) ;
517
553
518
554
it ( 'inherits protocol for relative protocols' , function ( ) {
519
- var data = parse ( '//foo.com/foo' , parse ( 'http://sub.example.com:808/' ) ) ;
555
+ var lolcation = parse ( 'http://sub.example.com:808/' )
556
+ , data = parse ( '//foo.com/foo' , lolcation ) ;
520
557
521
558
assume ( data . port ) . equals ( '' ) ;
522
559
assume ( data . host ) . equals ( 'foo.com' ) ;
@@ -529,13 +566,13 @@ describe('url-parse', function () {
529
566
530
567
assume ( data . port ) . equals ( '' ) ;
531
568
assume ( data . host ) . equals ( 'localhost' ) ;
532
- assume ( data . href ) . equals ( 'http://localhost' ) ;
569
+ assume ( data . href ) . equals ( 'http://localhost/ ' ) ;
533
570
} ) ;
534
571
535
572
it ( 'resolves pathname for relative urls' , function ( ) {
536
573
var data , i = 0 ;
537
574
var tests = [
538
- [ '' , 'http://foo.com' , '' ] ,
575
+ [ '' , 'http://foo.com' , '/ ' ] ,
539
576
[ '' , 'http://foo.com/' , '/' ] ,
540
577
[ '' , 'http://foo.com/a' , '/a' ] ,
541
578
[ 'a' , 'http://foo.com' , '/a' ] ,
@@ -722,12 +759,12 @@ describe('url-parse', function () {
722
759
data . set ( 'hash' , 'usage' ) ;
723
760
724
761
assume ( data . hash ) . equals ( '#usage' ) ;
725
- assume ( data . href ) . equals ( 'http://example.com#usage' ) ;
762
+ assume ( data . href ) . equals ( 'http://example.com/ #usage' ) ;
726
763
727
764
data . set ( 'hash' , '#license' ) ;
728
765
729
766
assume ( data . hash ) . equals ( '#license' ) ;
730
- assume ( data . href ) . equals ( 'http://example.com#license' ) ;
767
+ assume ( data . href ) . equals ( 'http://example.com/ #license' ) ;
731
768
} ) ;
732
769
733
770
it ( 'updates the port when updating host' , function ( ) {
0 commit comments