@@ -71,29 +71,33 @@ describe('url-parse', function () {
71
71
assume ( parse . extractProtocol ( 'http://example.com' ) ) . eql ( {
72
72
slashes : true ,
73
73
protocol : 'http:' ,
74
- rest : 'example.com'
74
+ rest : 'example.com' ,
75
+ slashesCount : 2
75
76
} ) ;
76
77
} ) ;
77
78
78
79
it ( 'extracts the protocol data for nothing' , function ( ) {
79
80
assume ( parse . extractProtocol ( '' ) ) . eql ( {
80
81
slashes : false ,
81
82
protocol : '' ,
82
- rest : ''
83
+ rest : '' ,
84
+ slashesCount : 0
83
85
} ) ;
84
86
} ) ;
85
87
86
88
it ( 'correctly resolves paths' , function ( ) {
87
89
assume ( parse . extractProtocol ( '/foo' ) ) . eql ( {
88
90
slashes : false ,
89
91
protocol : '' ,
90
- rest : '/foo'
92
+ rest : '/foo' ,
93
+ slashesCount : 1
91
94
} ) ;
92
95
93
96
assume ( parse . extractProtocol ( '//foo/bar' ) ) . eql ( {
94
97
slashes : true ,
95
98
protocol : '' ,
96
- rest : '//foo/bar'
99
+ rest : '//foo/bar' ,
100
+ slashesCount : 2
97
101
} ) ;
98
102
} ) ;
99
103
@@ -103,15 +107,17 @@ describe('url-parse', function () {
103
107
assume ( parse . extractProtocol ( input ) ) . eql ( {
104
108
slashes : false ,
105
109
protocol : '' ,
106
- rest : input
110
+ rest : input ,
111
+ slashesCount : 0
107
112
} ) ;
108
113
} ) ;
109
114
110
115
it ( 'trimsLeft' , function ( ) {
111
116
assume ( parse . extractProtocol ( ' javascript://foo' ) ) . eql ( {
112
117
slashes : true ,
113
118
protocol : 'javascript:' ,
114
- rest : 'foo'
119
+ rest : 'foo' ,
120
+ slashesCount : 2
115
121
} ) ;
116
122
} ) ;
117
123
} ) ;
@@ -281,6 +287,12 @@ describe('url-parse', function () {
281
287
282
288
assume ( parsed . host ) . equals ( 'what-is-up.com' ) ;
283
289
assume ( parsed . href ) . equals ( 'http://what-is-up.com/' ) ;
290
+
291
+ url = '\\\\\\\\what-is-up.com'
292
+ parsed = parse ( url , parse ( 'http://google.com' ) ) ;
293
+
294
+ assume ( parsed . host ) . equals ( 'what-is-up.com' ) ;
295
+ assume ( parsed . href ) . equals ( 'http://what-is-up.com/' ) ;
284
296
} ) ;
285
297
286
298
it ( 'ignores slashes after the protocol for special URLs' , function ( ) {
@@ -290,32 +302,44 @@ describe('url-parse', function () {
290
302
assume ( parsed . host ) . equals ( 'github.com' ) ;
291
303
assume ( parsed . hostname ) . equals ( 'github.com' ) ;
292
304
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
305
+ assume ( parsed . slashes ) . is . true ( ) ;
306
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
293
307
294
308
url = 'https:/\\/\\/\\github.com/foo/bar' ;
295
309
parsed = parse ( url ) ;
296
310
assume ( parsed . host ) . equals ( 'github.com' ) ;
297
311
assume ( parsed . hostname ) . equals ( 'github.com' ) ;
298
312
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
313
+ assume ( parsed . slashes ) . is . true ( ) ;
314
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
299
315
300
316
url = 'https:/github.com/foo/bar' ;
301
317
parsed = parse ( url ) ;
302
318
assume ( parsed . host ) . equals ( 'github.com' ) ;
303
319
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
320
+ assume ( parsed . slashes ) . is . true ( ) ;
321
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
304
322
305
323
url = 'https:\\github.com/foo/bar' ;
306
324
parsed = parse ( url ) ;
307
325
assume ( parsed . host ) . equals ( 'github.com' ) ;
308
326
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
327
+ assume ( parsed . slashes ) . is . true ( ) ;
328
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
309
329
310
330
url = 'https:github.com/foo/bar' ;
311
331
parsed = parse ( url ) ;
312
332
assume ( parsed . host ) . equals ( 'github.com' ) ;
313
333
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
334
+ assume ( parsed . slashes ) . is . true ( ) ;
335
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
314
336
315
337
url = 'https:github.com/foo/bar' ;
316
338
parsed = parse ( url ) ;
317
339
assume ( parsed . host ) . equals ( 'github.com' ) ;
318
340
assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
341
+ assume ( parsed . slashes ) . is . true ( ) ;
342
+ assume ( parsed . href ) . equals ( 'https://github.com/foo/bar' ) ;
319
343
} ) ;
320
344
321
345
it ( 'handles slashes after the protocol for non special URLs' , function ( ) {
@@ -325,24 +349,28 @@ describe('url-parse', function () {
325
349
assume ( parsed . hostname ) . equals ( '' ) ;
326
350
assume ( parsed . pathname ) . equals ( 'example.com' ) ;
327
351
assume ( parsed . href ) . equals ( 'foo:example.com' ) ;
352
+ assume ( parsed . slashes ) . is . false ( ) ;
328
353
329
354
url = 'foo:/example.com' ;
330
355
parsed = parse ( url ) ;
331
356
assume ( parsed . hostname ) . equals ( '' ) ;
332
357
assume ( parsed . pathname ) . equals ( '/example.com' ) ;
333
358
assume ( parsed . href ) . equals ( 'foo:/example.com' ) ;
359
+ assume ( parsed . slashes ) . is . false ( ) ;
334
360
335
361
url = 'foo://example.com' ;
336
362
parsed = parse ( url ) ;
337
363
assume ( parsed . hostname ) . equals ( 'example.com' ) ;
338
364
assume ( parsed . pathname ) . equals ( '/' ) ;
339
365
assume ( parsed . href ) . equals ( 'foo://example.com/' ) ;
366
+ assume ( parsed . slashes ) . is . true ( ) ;
340
367
341
368
url = 'foo:///example.com' ;
342
369
parsed = parse ( url ) ;
343
370
assume ( parsed . hostname ) . equals ( '' ) ;
344
371
assume ( parsed . pathname ) . equals ( '/example.com' ) ;
345
372
assume ( parsed . href ) . equals ( 'foo:///example.com' ) ;
373
+ assume ( parsed . slashes ) . is . true ( ) ;
346
374
} )
347
375
348
376
describe ( 'origin' , function ( ) {
0 commit comments