You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ol...@apache.org on 2010/07/09 00:04:57 UTC

svn commit: r961960 - in /maven/scm/trunk: ./ maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/ maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/

Author: olamy
Date: Thu Jul  8 22:04:57 2010
New Revision: 961960

URL: http://svn.apache.org/viewvc?rev=961960&view=rev
Log:
[SCM-431] Username and Password cause NumberFormatException in scm:hg:http URLS
Submitted by Andrew Denyes

Modified:
    maven/scm/trunk/   (props changed)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java

Propchange: maven/scm/trunk/
------------------------------------------------------------------------------
    bugtraq:message = 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java?rev=961960&r1=961959&r2=961960&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java Thu Jul  8 22:04:57 2010
@@ -59,8 +59,7 @@ public class HgScmProviderRepository
 
     public String getURI()
     {
-        return protocol + ( needsAuthentication() ? addUser() + addPassword() + addAt() : "" ) + addHost()
-            + addPort() + addPath();
+        return protocol + addAuthority() + addHost() + addPort() + addPath();
     }
 
     /**
@@ -172,7 +171,7 @@ public class HgScmProviderRepository
 
     private String parseUsernameAndPassword( String url )
     {
-        if ( needsAuthentication() )
+        if ( canAuthenticate() )
         {
             String[] split = url.split( "@" );
             if ( split.length == 2 )
@@ -225,11 +224,6 @@ public class HgScmProviderRepository
         return ( getPassword() == null ) ? "" : ":" + getPassword();
     }
 
-    private String addAt()
-    {
-        return needsAuthentication() ? "@" : "";
-    }
-
     private String addHost()
     {
         return ( getHost() == null ) ? "" : getHost();
@@ -250,6 +244,18 @@ public class HgScmProviderRepository
         return protocol == SFTP || protocol == FTP || protocol == HTTPS || protocol == AFTP;
     }
 
+    private String addAuthority()
+    {
+        return ( (canAuthenticate() && (getUser() != null))
+                ? addUser() + addPassword() + "@"
+                : "" );
+    }
+
+
+    private boolean canAuthenticate()
+    {
+        return needsAuthentication() || protocol == HTTP;
+    }
     /** {@inheritDoc} */
     public String toString()
     {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java?rev=961960&r1=961959&r2=961960&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java Thu Jul  8 22:04:57 2010
@@ -85,7 +85,7 @@ public class HgScmProviderRepositoryTest
         String url = "http://www.myhost.com/~username/dev/maven";
         HgScmProviderRepository repo = new HgScmProviderRepository( url );
         assertEquals( url, repo.getURI() );
-        assertNull( repo.validateURI() );
+        assertEquals( null, repo.validateURI() );
 
         //2. Test with absolute path
         url = "http://www.myhost.com/dev/maven";
@@ -93,14 +93,14 @@ public class HgScmProviderRepositoryTest
         assertEquals( url, repo.getURI() );
         assertNull( repo.validateURI() );
 
-        //3. Test with unessesary authentication information
+        //3. Test with authentication information
         repo.setPassword( "Password" );
         repo.setUser( "User" );
         repo.setPassphrase( "Passphrase" );
-        assertEquals( "http://www.myhost.com/dev/maven", repo.getURI() );
+        assertEquals( "http://User:Password@www.myhost.com/dev/maven", repo.getURI() );
         assertNull( repo.validateURI() );
         repo.setPort( 81 );
-        assertEquals( "http://www.myhost.com:81/dev/maven", repo.getURI() );
+        assertEquals( "http://User:Password@www.myhost.com:81/dev/maven", repo.getURI() );
         assertNull( repo.validateURI() );
         assertTrue( true );
     }
@@ -125,4 +125,25 @@ public class HgScmProviderRepositoryTest
         repo = new HgScmProviderRepository( url );
         assertEquals( repo.getURI(), url );
     }
+
+    /**
+     * Test SCM-431
+     *
+     * @throws Exception
+     */
+    public void testParseBasicAuth()
+        throws Exception
+    {
+        String url = "http://a:b@localhost:8000/";
+        HgScmProviderRepository repo = new HgScmProviderRepository( url );
+        assertEquals( url, repo.getURI() );
+
+        url = "http://aa@localhost/";
+        repo = new HgScmProviderRepository( url );
+        assertEquals( url, repo.getURI() );
+
+        url = "http://SCM:431@www.myhost.com:81/dev/maven";
+        repo = new HgScmProviderRepository( url );
+        assertEquals( url, repo.getURI() );
+    }
 }
\ No newline at end of file