@@ -2,23 +2,25 @@ var HostedGitInfo = require('../')
22
33var tap = require ( 'tap' )
44var url = require ( 'url' )
5-
6- // Auth credentials with special characters (colon and/or at-sign) should remain correctly escaped
7- var parsedInfo = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/hosted-git-info.git' )
8- tap . equal ( parsedInfo . auth , 'user%3An%40me:p%40ss%3Aword' )
5+ var parsedInfo
96
107// Node.js' built-in `url` module should be able to parse the resulting url
11- var parsedUrl = new url . URL ( parsedInfo . toString ( ) )
12- tap . equal ( parsedUrl . username , 'user%3An%40me' )
13- tap . equal ( parsedUrl . password , 'p%40ss%3Aword' )
14- tap . equal ( parsedUrl . hostname , 'github.com' )
15-
16- // For full backwards-compatibility; support auth where only username or only password is provided
17- tap . equal ( HostedGitInfo . fromUrl ( 'https://user%3An%40me@github.com/npm/hosted-git-info.git' ) . auth , 'user%3An%40me' )
18- tap . equal ( HostedGitInfo . fromUrl ( 'https://:p%40ss%3Aword@github.com/npm/hosted-git-info.git' ) . auth , ':p%40ss%3Aword' )
19-
208// don't try to url.URL parse it if url.URL is not available
219// ie, node <6.13. This is broken, but at least it doesn't throw.
22- url . URL = null
23- var parsedInfoNoURL = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/xyz.git' )
24- tap . equal ( parsedInfoNoURL . auth , 'user:n@me:p@ss:word' )
10+ if ( typeof url . URL === 'function' ) {
11+ // Auth credentials with special characters (colon and/or at-sign) should remain correctly escaped
12+ parsedInfo = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/hosted-git-info.git' )
13+ tap . equal ( parsedInfo . auth , 'user%3An%40me:p%40ss%3Aword' )
14+
15+ var parsedUrl = new url . URL ( parsedInfo . toString ( ) )
16+ tap . equal ( parsedUrl . username , 'user%3An%40me' )
17+ tap . equal ( parsedUrl . password , 'p%40ss%3Aword' )
18+ tap . equal ( parsedUrl . hostname , 'github.com' )
19+
20+ // For full backwards-compatibility; support auth where only username or only password is provided
21+ tap . equal ( HostedGitInfo . fromUrl ( 'https://user%3An%40me@github.com/npm/hosted-git-info.git' ) . auth , 'user%3An%40me' )
22+ tap . equal ( HostedGitInfo . fromUrl ( 'https://:p%40ss%3Aword@github.com/npm/hosted-git-info.git' ) . auth , ':p%40ss%3Aword' )
23+ } else {
24+ parsedInfo = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/hosted-git-info.git' )
25+ tap . equal ( parsedInfo . auth , 'user:n@me:p@ss:word' )
26+ }
0 commit comments