You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2008/07/30 11:54:11 UTC
svn commit: r680954 - in /maven/wagon/trunk/wagon-provider-api/src:
main/java/org/apache/maven/wagon/ main/java/org/apache/maven/wagon/events/
main/java/org/apache/maven/wagon/observers/
main/java/org/apache/maven/wagon/proxy/ test/java/org/apache/mave...
Author: brett
Date: Wed Jul 30 02:54:09 2008
New Revision: 680954
URL: http://svn.apache.org/viewvc?rev=680954&view=rev
Log:
completing test coverage of the API module
Added:
maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java (with props)
Modified:
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PathUtils.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PermissionModeUtils.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/WagonUtils.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/observers/Debug.java
maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyUtils.java
maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/AbstractWagonTest.java
maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/observers/ChecksumObserverTest.java
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PathUtils.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PathUtils.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PathUtils.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PathUtils.java Wed Jul 30 02:54:09 2008
@@ -28,8 +28,12 @@
* @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
* @version $Id$
*/
-public class PathUtils
+public final class PathUtils
{
+ private PathUtils()
+ {
+ }
+
/**
* Returns the directory path portion of a file specification string.
* Matches the equally named unix command.
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PermissionModeUtils.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PermissionModeUtils.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PermissionModeUtils.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/PermissionModeUtils.java Wed Jul 30 02:54:09 2008
@@ -26,8 +26,12 @@
* @see PermissionModeUtils
* @since Sep 3, 2005
*/
-public class PermissionModeUtils
+public final class PermissionModeUtils
{
+ private PermissionModeUtils()
+ {
+ }
+
/**
* See the System Interfaces volume of IEEE Std 1003.1-2001, umask(1)
*
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/WagonUtils.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/WagonUtils.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/WagonUtils.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/WagonUtils.java Wed Jul 30 02:54:09 2008
@@ -29,10 +29,13 @@
/**
* @author <a href="mailto:mmaczka@interia.pl">Michal Maczka</a>
* @version $Id$
+ * @deprecated
*/
-public class WagonUtils
+public final class WagonUtils
{
-
+ private WagonUtils()
+ {
+ }
public static String toString( String resource, Wagon wagon )
throws IOException, TransferFailedException, ResourceDoesNotExistException, AuthorizationException
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java Wed Jul 30 02:54:09 2008
@@ -288,7 +288,7 @@
if ( other.exception != null )
return false;
}
- else if ( !exception.equals( other.exception ) )
+ else if ( !exception.getClass().equals( other.exception.getClass() ) )
return false;
if ( requestType != other.requestType )
return false;
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/observers/Debug.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/observers/Debug.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/observers/Debug.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/observers/Debug.java Wed Jul 30 02:54:09 2008
@@ -39,7 +39,6 @@
long transfer;
-
public Debug()
{
this( System.out );
@@ -199,4 +198,9 @@
}
+ public PrintStream getOut()
+ {
+ return out;
+ }
+
}
Modified: maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyUtils.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyUtils.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyUtils.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/main/java/org/apache/maven/wagon/proxy/ProxyUtils.java Wed Jul 30 02:54:09 2008
@@ -24,8 +24,11 @@
/**
* @author <a href="mailto:lafeuil@gmail.com">Thomas Champagne</a>
*/
-public class ProxyUtils
+public final class ProxyUtils
{
+ private ProxyUtils()
+ {
+ }
/**
* Check if the specified host is in the list of non proxy hosts.
Modified: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/AbstractWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/AbstractWagonTest.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/AbstractWagonTest.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/AbstractWagonTest.java Wed Jul 30 02:54:09 2008
@@ -19,20 +19,28 @@
* under the License.
*/
+import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import junit.framework.TestCase;
import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.events.SessionListener;
+import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.proxy.ProxyInfoProvider;
import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.repository.RepositoryPermissions;
+import org.apache.maven.wagon.resource.Resource;
+import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
+import org.easymock.AbstractMatcher;
import org.easymock.MockControl;
/**
@@ -42,6 +50,36 @@
public class AbstractWagonTest
extends TestCase
{
+ private static class TestWagon
+ extends AbstractWagon
+ {
+ protected void closeConnection()
+ throws ConnectionException
+ {
+ }
+
+ protected void openConnectionInternal()
+ throws ConnectionException, AuthenticationException
+ {
+ }
+
+ public void get( String resourceName, File destination )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ }
+
+ public boolean getIfNewer( String resourceName, File destination, long timestamp )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ return false;
+ }
+
+ public void put( File source, String destination )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ }
+ };
+
private String basedir;
private WagonMock wagon = null;
@@ -73,12 +111,12 @@
wagon = new WagonMock();
- sessionListenerControl = MockControl.createControl( SessionListener.class );
+ sessionListenerControl = MockControl.createControl( SessionListener.class );
sessionListener = (SessionListener) sessionListenerControl.getMock();
wagon.addSessionListener( sessionListener );
- transferListenerControl = MockControl.createControl( TransferListener.class );
+ transferListenerControl = MockControl.createControl( TransferListener.class );
transferListener = (TransferListener) transferListenerControl.getMock();
wagon.addTransferListener( transferListener );
@@ -103,7 +141,8 @@
assertFalse( wagon.hasTransferListener( transferListener ) );
}
- public void testNoProxyConfiguration() throws ConnectionException, AuthenticationException
+ public void testNoProxyConfiguration()
+ throws ConnectionException, AuthenticationException
{
Repository repository = new Repository();
wagon.connect( repository );
@@ -115,7 +154,8 @@
assertNull( wagon.getProxyInfo( "http", "localhost" ) );
}
- public void testNullProxyConfiguration() throws ConnectionException, AuthenticationException
+ public void testNullProxyConfiguration()
+ throws ConnectionException, AuthenticationException
{
Repository repository = new Repository();
wagon.connect( repository, (ProxyInfo) null );
@@ -125,13 +165,30 @@
assertNull( wagon.getProxyInfo( "scp", "www.example.com" ) );
assertNull( wagon.getProxyInfo( "ftp", "www.example.com" ) );
assertNull( wagon.getProxyInfo( "http", "localhost" ) );
+
+ wagon.connect( repository );
+ assertNull( wagon.getProxyInfo() );
+ assertNull( wagon.getProxyInfo( "http", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "dav", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "scp", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "ftp", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "http", "localhost" ) );
+
+ wagon.connect( repository, new AuthenticationInfo() );
+ assertNull( wagon.getProxyInfo() );
+ assertNull( wagon.getProxyInfo( "http", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "dav", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "scp", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "ftp", "www.example.com" ) );
+ assertNull( wagon.getProxyInfo( "http", "localhost" ) );
}
- public void testLegacyProxyConfiguration() throws ConnectionException, AuthenticationException
+ public void testLegacyProxyConfiguration()
+ throws ConnectionException, AuthenticationException
{
ProxyInfo proxyInfo = new ProxyInfo();
proxyInfo.setType( "http" );
-
+
Repository repository = new Repository();
wagon.connect( repository, proxyInfo );
assertEquals( proxyInfo, wagon.getProxyInfo() );
@@ -141,19 +198,20 @@
assertNull( wagon.getProxyInfo( "ftp", "www.example.com" ) );
}
- public void testProxyConfiguration() throws ConnectionException, AuthenticationException
+ public void testProxyConfiguration()
+ throws ConnectionException, AuthenticationException
{
final ProxyInfo httpProxyInfo = new ProxyInfo();
httpProxyInfo.setType( "http" );
-
- final ProxyInfo socksProxyInfo = new ProxyInfo();
+
+ final ProxyInfo socksProxyInfo = new ProxyInfo();
socksProxyInfo.setType( "http" );
-
+
ProxyInfoProvider proxyInfoProvider = new ProxyInfoProvider()
{
public ProxyInfo getProxyInfo( String protocol )
{
- if ( "http".equals( protocol ) || "dav".equals( protocol ))
+ if ( "http".equals( protocol ) || "dav".equals( protocol ) )
{
return httpProxyInfo;
}
@@ -164,7 +222,7 @@
return null;
}
};
-
+
Repository repository = new Repository();
wagon.connect( repository, proxyInfoProvider );
assertNull( wagon.getProxyInfo() );
@@ -183,14 +241,86 @@
sessionListener.sessionOpening( null );
sessionListener.sessionOpened( null );
sessionListenerControl.replay();
-
+
wagon.connect( repository );
-
+
sessionListenerControl.verify();
assertEquals( repository, wagon.getRepository() );
}
+ public void testSessionConnectionRefusedEventConnectionException()
+ throws Exception
+ {
+ final WagonException exception = new ConnectionException( "" );
+
+ try
+ {
+ runTestSessionConnectionRefusedEvent( exception );
+ fail();
+ }
+ catch ( ConnectionException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testSessionConnectionRefusedEventAuthenticationException()
+ throws Exception
+ {
+ final WagonException exception = new AuthenticationException( "" );
+
+ try
+ {
+ runTestSessionConnectionRefusedEvent( exception );
+ fail();
+ }
+ catch ( AuthenticationException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ private void runTestSessionConnectionRefusedEvent( final WagonException exception )
+ throws ConnectionException, AuthenticationException
+ {
+ Repository repository = new Repository();
+
+ sessionListenerControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
+ sessionListener.sessionOpening( null );
+ sessionListener.sessionConnectionRefused( null );
+ sessionListenerControl.replay();
+
+ Wagon wagon = new TestWagon()
+ {
+ protected void openConnectionInternal()
+ throws ConnectionException, AuthenticationException
+ {
+ if ( exception instanceof ConnectionException )
+ {
+ throw (ConnectionException) exception;
+ }
+ if ( exception instanceof AuthenticationException )
+ {
+ throw (AuthenticationException) exception;
+ }
+ }
+ };
+ wagon.addSessionListener( sessionListener );
+
+ try
+ {
+ wagon.connect( repository );
+ fail();
+ }
+ finally
+ {
+ sessionListenerControl.verify();
+
+ assertEquals( repository, wagon.getRepository() );
+ }
+ }
+
public void testSessionCloseEvents()
throws Exception
{
@@ -198,12 +328,47 @@
sessionListener.sessionDisconnecting( null );
sessionListener.sessionDisconnected( null );
sessionListenerControl.replay();
-
+
wagon.disconnect();
-
+
sessionListenerControl.verify();
}
+ public void testSessionCloseRefusedEventConnectionException()
+ throws Exception
+ {
+ Repository repository = new Repository();
+
+ sessionListenerControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
+ sessionListener.sessionDisconnecting( null );
+ sessionListener.sessionError( null );
+ sessionListenerControl.replay();
+
+ Wagon wagon = new TestWagon()
+ {
+ protected void closeConnection()
+ throws ConnectionException
+ {
+ throw new ConnectionException( "" );
+ }
+ };
+ wagon.addSessionListener( sessionListener );
+
+ try
+ {
+ wagon.disconnect();
+ fail();
+ }
+ catch ( ConnectionException e )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ sessionListenerControl.verify();
+ }
+ }
+
public void testGetTransferEvents()
throws Exception
{
@@ -217,14 +382,14 @@
transferListenerControl.setVoidCallable( 5 );
transferListener.transferCompleted( null );
transferListenerControl.replay();
-
+
wagon.fireTransferDebug( "fetch debug message" );
Repository repository = new Repository();
wagon.connect( repository );
wagon.get( artifact, destination );
-
+
transferListenerControl.verify();
}
@@ -233,12 +398,12 @@
{
transferListenerControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
transferListener.transferInitiated( null );
- transferListener.transferStarted( null );
+ transferListener.transferStarted( null );
transferListener.debug( null );
transferListenerControl.setVoidCallable( MockControl.ZERO_OR_MORE );
transferListener.transferError( null );
transferListenerControl.replay();
-
+
try
{
Repository repository = new Repository();
@@ -272,7 +437,7 @@
transferListener.transferProgress( null, null, 0 );
transferListener.transferCompleted( null );
transferListenerControl.replay();
-
+
wagon.fireTransferDebug( "deploy debug message" );
Repository repository = new Repository();
@@ -284,56 +449,156 @@
transferListenerControl.verify();
}
- /*
- public void testPutError()
+ public void testStreamShutdown()
{
- MockInputStream mockInputStream = new MockInputStream();
+ IOUtil.close( (InputStream) null );
- //forced io error!
- mockInputStream.setForcedError( true );
+ IOUtil.close( (OutputStream) null );
- StreamSource result = new StreamSource( mockInputStream );
+ InputStreamMock inputStream = new InputStreamMock();
+
+ assertFalse( inputStream.isClosed() );
+
+ IOUtil.close( inputStream );
+
+ assertTrue( inputStream.isClosed() );
+
+ OutputStreamMock outputStream = new OutputStreamMock();
+
+ assertFalse( outputStream.isClosed() );
+
+ IOUtil.close( outputStream );
+
+ assertTrue( outputStream.isClosed() );
+ }
+
+ public void testRepositoryPermissionsOverride()
+ throws ConnectionException, AuthenticationException
+ {
+ Repository repository = new Repository();
- PutRequest command = new PutRequest( result, "my favourite resource" );
+ RepositoryPermissions original = new RepositoryPermissions();
+ original.setFileMode( "664" );
+ repository.setPermissions( original );
+
+ RepositoryPermissions override = new RepositoryPermissions();
+ override.setFileMode( "644" );
+ wagon.setPermissionsOverride( override );
+ wagon.connect( repository );
+
+ assertEquals( override, repository.getPermissions() );
+ assertEquals( "644", repository.getPermissions().getFileMode() );
+ }
+
+ public void testRepositoryUserName()
+ throws ConnectionException, AuthenticationException
+ {
+ Repository repository = new Repository( "id", "http://bporter:password@www.example.com/path/to/resource" );
+
+ AuthenticationInfo authenticationInfo = new AuthenticationInfo();
+ authenticationInfo.setUserName( "brett" );
+ authenticationInfo.setPassword( "pass" );
+ wagon.connect( repository, authenticationInfo );
+
+ assertEquals( authenticationInfo, wagon.getAuthenticationInfo() );
+ assertEquals( "brett", authenticationInfo.getUserName() );
+ assertEquals( "pass", authenticationInfo.getPassword() );
+ }
+
+ public void testRepositoryUserNameNotGivenInCredentials()
+ throws ConnectionException, AuthenticationException
+ {
+ Repository repository = new Repository( "id", "http://bporter:password@www.example.com/path/to/resource" );
+
+ AuthenticationInfo authenticationInfo = new AuthenticationInfo();
+ wagon.connect( repository, authenticationInfo );
+
+ assertEquals( authenticationInfo, wagon.getAuthenticationInfo() );
+ assertEquals( "bporter", authenticationInfo.getUserName() );
+ assertEquals( "password", authenticationInfo.getPassword() );
+ }
+
+ public void testConnectNullRepository()
+ throws ConnectionException, AuthenticationException
+ {
try
{
- wagon.transfer( command );
-
- fail( "Transfer error was expected during fetch" );
+ wagon.connect( null );
+ fail();
}
- catch ( Exception e )
+ catch ( IllegalStateException e )
{
+ assertTrue( true );
}
-
- assertTrue( transferListener.isTransferStartedCalled() );
-
- assertTrue( transferListener.isTransferErrorCalled() );
-
- assertFalse( transferListener.isTransferCompletedCalled() );
}
- */
- public void testStreamShutdown()
+ public void testPostProcessListeners()
+ throws TransferFailedException, IOException
{
- IOUtil.close( (InputStream) null );
+ File tempFile = File.createTempFile( "wagon", "tmp" );
+ tempFile.deleteOnExit();
+ String content = "content";
+ FileUtils.fileWrite( tempFile.getAbsolutePath(), content );
- IOUtil.close( (OutputStream) null );
+ Resource resource = new Resource( "resource" );
- InputStreamMock inputStream = new InputStreamMock();
+ transferListener.transferInitiated( null );
+ transferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ transferListener.transferStarted( null );
+ transferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ TransferEvent event =
+ new TransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_PUT );
+ event.setLocalFile( tempFile );
+ transferListener.transferProgress( event, content.getBytes(), content.length() );
+ ProgressArgumentMatcher matcher = new ProgressArgumentMatcher();
+ transferListenerControl.setMatcher( matcher );
+ transferListener.transferCompleted( null );
+ transferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ transferListenerControl.replay();
- assertFalse( inputStream.isClosed() );
+ wagon.postProcessListeners( resource, tempFile, TransferEvent.REQUEST_PUT );
- IOUtil.close( inputStream );
+ assertEquals( content.length(), matcher.getSize() );
+ assertEquals( new String( content.getBytes() ), new String( matcher.getBytes() ) );
- assertTrue( inputStream.isClosed() );
+ tempFile.delete();
+ }
- OutputStreamMock outputStream = new OutputStreamMock();
+ static final class ProgressArgumentMatcher
+ extends AbstractMatcher
+ {
+ private ByteArrayOutputStream baos = new ByteArrayOutputStream();
- assertFalse( outputStream.isClosed() );
+ private int size;
+
+ private byte[] lastArray;
- IOUtil.close( outputStream );
+ protected boolean argumentMatches( Object expected, Object actual )
+ {
+ if ( actual instanceof byte[] )
+ {
+ lastArray = (byte[]) actual;
+ return true;
+ }
+ if ( actual instanceof Integer )
+ {
+ int length = ( (Integer) actual ).intValue();
+ baos.write( lastArray, 0, length );
+ size += length;
+ return true;
+ }
+ return super.argumentMatches( expected, actual );
+ }
- assertTrue( outputStream.isClosed() );
+ public int getSize()
+ {
+ return size;
+ }
+
+ public byte[] getBytes()
+ {
+ return baos.toByteArray();
+ }
}
}
Added: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java?rev=680954&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java (added)
+++ maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java Wed Jul 30 02:54:09 2008
@@ -0,0 +1,552 @@
+package org.apache.maven.wagon;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferListener;
+import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.resource.Resource;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringInputStream;
+import org.codehaus.plexus.util.StringOutputStream;
+import org.easymock.MockControl;
+
+public class StreamWagonTest
+ extends TestCase
+{
+ private static class TestWagon
+ extends StreamWagon
+ {
+ public void closeConnection()
+ throws ConnectionException
+ {
+ }
+
+ public void fillInputData( InputData inputData )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ }
+
+ public void fillOutputData( OutputData outputData )
+ throws TransferFailedException
+ {
+ }
+
+ protected void openConnectionInternal()
+ throws ConnectionException, AuthenticationException
+ {
+ }
+ }
+
+ private Repository repository = new Repository( "id", "url" );
+
+ public void testNullInputStream()
+ throws Exception
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ {
+ inputData.setInputStream( null );
+ }
+ };
+
+ MockControl control = MockControl.createControl( TransferListener.class );
+ TransferListener listener = (TransferListener) control.getMock();
+ listener.transferInitiated( null );
+ control.setMatcher( MockControl.ALWAYS_MATCHER );
+ TransferEvent transferEvent =
+ new TransferEvent( wagon, new Resource( "resource" ), new TransferFailedException( "" ),
+ TransferEvent.REQUEST_GET );
+ listener.transferError( transferEvent );
+ control.replay();
+
+ wagon.connect( repository );
+ wagon.addTransferListener( listener );
+ try
+ {
+ wagon.getToStream( "resource", new StringOutputStream() );
+ fail();
+ }
+ catch ( TransferFailedException e )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+
+ control.verify();
+ }
+
+ public void testNullOutputStream()
+ throws Exception
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillOutputData( OutputData inputData )
+ {
+ inputData.setOutputStream( null );
+ }
+ };
+
+ MockControl control = MockControl.createControl( TransferListener.class );
+ TransferListener listener = (TransferListener) control.getMock();
+ listener.transferInitiated( null );
+ control.setMatcher( MockControl.ALWAYS_MATCHER );
+ TransferEvent transferEvent =
+ new TransferEvent( wagon, new Resource( "resource" ), new TransferFailedException( "" ),
+ TransferEvent.REQUEST_PUT );
+ listener.transferError( transferEvent );
+ control.replay();
+
+ wagon.connect( repository );
+ wagon.addTransferListener( listener );
+ try
+ {
+ wagon.putFromStream( new StringInputStream( "" ), "resource" );
+ fail();
+ }
+ catch ( TransferFailedException e )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+
+ control.verify();
+ }
+
+ public void testTransferFailedExceptionOnInput()
+ throws Exception
+ {
+ try
+ {
+ runTestTransferError( new TransferFailedException( "" ) );
+ fail();
+ }
+ catch ( TransferFailedException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testTransferFailedExceptionOnOutput()
+ throws Exception
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillOutputData( OutputData inputData )
+ throws TransferFailedException
+ {
+ throw (TransferFailedException) new TransferFailedException( "" );
+ }
+ };
+
+ MockControl control = MockControl.createControl( TransferListener.class );
+ TransferListener listener = (TransferListener) control.getMock();
+ listener.transferInitiated( null );
+ control.setMatcher( MockControl.ALWAYS_MATCHER );
+ TransferEvent transferEvent =
+ new TransferEvent( wagon, new Resource( "resource" ), new TransferFailedException( "" ),
+ TransferEvent.REQUEST_PUT );
+ listener.transferError( transferEvent );
+ control.replay();
+
+ wagon.connect( repository );
+ wagon.addTransferListener( listener );
+ try
+ {
+ wagon.putFromStream( new StringInputStream( "" ), "resource" );
+ fail();
+ }
+ catch ( TransferFailedException e )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ wagon.disconnect();
+ control.verify();
+ }
+ }
+
+ public void testResourceDoesNotExistException()
+ throws Exception
+ {
+ try
+ {
+ runTestTransferError( new ResourceDoesNotExistException( "" ) );
+ fail();
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ public void testAuthorizationException()
+ throws Exception
+ {
+ try
+ {
+ runTestTransferError( new AuthorizationException( "" ) );
+ fail();
+ }
+ catch ( AuthorizationException e )
+ {
+ assertTrue( true );
+ }
+ }
+
+ private void runTestTransferError( final WagonException exception )
+ throws ConnectionException, AuthenticationException, ResourceDoesNotExistException, AuthorizationException,
+ TransferFailedException
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ if ( exception instanceof TransferFailedException )
+ {
+ throw (TransferFailedException) exception;
+ }
+ if ( exception instanceof ResourceDoesNotExistException )
+ {
+ throw (ResourceDoesNotExistException) exception;
+ }
+ if ( exception instanceof AuthorizationException )
+ {
+ throw (AuthorizationException) exception;
+ }
+ }
+ };
+
+ MockControl control = MockControl.createControl( TransferListener.class );
+ TransferListener listener = (TransferListener) control.getMock();
+ listener.transferInitiated( null );
+ control.setMatcher( MockControl.ALWAYS_MATCHER );
+ TransferEvent transferEvent =
+ new TransferEvent( wagon, new Resource( "resource" ), exception, TransferEvent.REQUEST_GET );
+ listener.transferError( transferEvent );
+ control.replay();
+
+ wagon.connect( repository );
+ wagon.addTransferListener( listener );
+ try
+ {
+ wagon.getToStream( "resource", new StringOutputStream() );
+ fail();
+ }
+ finally
+ {
+ wagon.disconnect();
+ control.verify();
+ }
+ }
+
+ public void testGetIfNewerWithNewerResource()
+ throws Exception
+ {
+ long resourceTime = System.currentTimeMillis();
+ long comparisonTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertTrue( runTestGetIfNewer( resourceTime, comparisonTime ) );
+ }
+
+ public void testGetIfNewerWithOlderResource()
+ throws Exception
+ {
+ long comparisonTime = System.currentTimeMillis();
+ long resourceTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertFalse( runTestGetIfNewer( resourceTime, comparisonTime ) );
+ }
+
+ public void testGetIfNewerWithSameTimeResource()
+ throws Exception
+ {
+ long resourceTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertFalse( runTestGetIfNewer( resourceTime, resourceTime ) );
+ }
+
+ private boolean runTestGetIfNewer( final long resourceTime, long comparisonTime )
+ throws IOException, ConnectionException, AuthenticationException, TransferFailedException,
+ ResourceDoesNotExistException, AuthorizationException
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ {
+ inputData.setInputStream( new StringInputStream( "" ) );
+ inputData.getResource().setLastModified( resourceTime );
+ }
+ };
+
+ File tempFile = File.createTempFile( "wagon", "tmp" );
+ tempFile.deleteOnExit();
+
+ wagon.connect( repository );
+ try
+ {
+ return wagon.getIfNewer( "resource", tempFile, comparisonTime );
+ }
+ finally
+ {
+ wagon.disconnect();
+ tempFile.delete();
+ }
+ }
+
+ public void testGetToStream()
+ throws Exception
+ {
+ final String content = "the content to return";
+ final long comparisonTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ {
+ inputData.setInputStream( new StringInputStream( content ) );
+ inputData.getResource().setLastModified( comparisonTime );
+ }
+ };
+
+ wagon.connect( repository );
+ try
+ {
+ StringOutputStream out = new StringOutputStream();
+ wagon.getToStream( "resource", out );
+ assertEquals( content, out.toString() );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+ }
+
+ public void testGet()
+ throws Exception
+ {
+ final String content = "the content to return";
+ final long comparisonTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ {
+ inputData.setInputStream( new StringInputStream( content ) );
+ inputData.getResource().setLastModified( comparisonTime );
+ }
+ };
+
+ File tempFile = File.createTempFile( "wagon", "tmp" );
+ tempFile.deleteOnExit();
+
+ wagon.connect( repository );
+ try
+ {
+ wagon.get( "resource", tempFile );
+ assertEquals( content, FileUtils.fileRead( tempFile ) );
+ }
+ finally
+ {
+ wagon.disconnect();
+ tempFile.delete();
+ }
+ }
+
+ public void testGetIfNewerToStreamWithNewerResource()
+ throws Exception
+ {
+ long resourceTime = System.currentTimeMillis();
+ long comparisonTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertTrue( runTestGetIfNewerToStream( resourceTime, comparisonTime ) );
+ }
+
+ public void testGetIfNewerToStreamWithOlderResource()
+ throws Exception
+ {
+ long comparisonTime = System.currentTimeMillis();
+ long resourceTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertFalse( runTestGetIfNewerToStream( resourceTime, comparisonTime ) );
+ }
+
+ public void testGetIfNewerToStreamWithSameTimeResource()
+ throws Exception
+ {
+ long resourceTime = new SimpleDateFormat( "yyyy-MM-dd" ).parse( "2008-01-01" ).getTime();
+ assertFalse( runTestGetIfNewerToStream( resourceTime, resourceTime ) );
+ }
+
+ private boolean runTestGetIfNewerToStream( final long resourceTime, long comparisonTime )
+ throws IOException, ConnectionException, AuthenticationException, TransferFailedException,
+ ResourceDoesNotExistException, AuthorizationException
+ {
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillInputData( InputData inputData )
+ {
+ inputData.setInputStream( new StringInputStream( "" ) );
+ inputData.getResource().setLastModified( resourceTime );
+ }
+ };
+
+ wagon.connect( repository );
+ try
+ {
+ return wagon.getIfNewerToStream( "resource", new StringOutputStream(), comparisonTime );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+ }
+
+ public void testPutFromStream()
+ throws Exception
+ {
+ final String content = "the content to return";
+
+ final StringOutputStream out = new StringOutputStream();
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillOutputData( OutputData outputData )
+ {
+ assertEquals( "resource", outputData.getResource().getName() );
+ assertEquals( -1, outputData.getResource().getContentLength() );
+ assertEquals( 0, outputData.getResource().getLastModified() );
+ outputData.setOutputStream( out );
+ }
+ };
+
+ wagon.connect( repository );
+ try
+ {
+ wagon.putFromStream( new StringInputStream( content ), "resource" );
+ assertEquals( content, out.toString() );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+ }
+
+ public void testPutFromStreamWithResourceInformation()
+ throws Exception
+ {
+ final String content = "the content to return";
+ final long lastModified = System.currentTimeMillis();
+
+ final StringOutputStream out = new StringOutputStream();
+ StreamingWagon wagon = new TestWagon()
+ {
+ public void fillOutputData( OutputData outputData )
+ {
+ assertEquals( "resource", outputData.getResource().getName() );
+ assertEquals( content.length(), outputData.getResource().getContentLength() );
+ assertEquals( lastModified, outputData.getResource().getLastModified() );
+ outputData.setOutputStream( out );
+ }
+ };
+
+ wagon.connect( repository );
+ try
+ {
+ wagon.putFromStream( new StringInputStream( content ), "resource", content.length(), lastModified );
+ assertEquals( content, out.toString() );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+ }
+
+ public void testPut()
+ throws Exception
+ {
+ final String content = "the content to return";
+
+ final File tempFile = File.createTempFile( "wagon", "tmp" );
+ FileUtils.fileWrite( tempFile.getAbsolutePath(), content );
+ tempFile.deleteOnExit();
+
+ final StringOutputStream out = new StringOutputStream();
+ Wagon wagon = new TestWagon()
+ {
+ public void fillOutputData( OutputData outputData )
+ {
+ assertEquals( "resource", outputData.getResource().getName() );
+ assertEquals( content.length(), outputData.getResource().getContentLength() );
+ assertEquals( tempFile.lastModified(), outputData.getResource().getLastModified() );
+ outputData.setOutputStream( out );
+ }
+ };
+
+ wagon.connect( repository );
+ try
+ {
+ wagon.put( tempFile, "resource" );
+ assertEquals( content, out.toString() );
+ }
+ finally
+ {
+ wagon.disconnect();
+ tempFile.delete();
+ }
+ }
+
+ public void testPutFileDoesntExist()
+ throws Exception
+ {
+ final File tempFile = File.createTempFile( "wagon", "tmp" );
+ tempFile.delete();
+ assertFalse( tempFile.exists() );
+
+ Wagon wagon = new TestWagon();
+
+ wagon.connect( repository );
+ try
+ {
+ wagon.put( tempFile, "resource" );
+ fail();
+ }
+ catch ( TransferFailedException e )
+ {
+ assertTrue( true );
+ }
+ finally
+ {
+ wagon.disconnect();
+ }
+ }
+
+}
Propchange: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/StreamWagonTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/observers/ChecksumObserverTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/observers/ChecksumObserverTest.java?rev=680954&r1=680953&r2=680954&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/observers/ChecksumObserverTest.java (original)
+++ maven/wagon/trunk/wagon-provider-api/src/test/java/org/apache/maven/wagon/observers/ChecksumObserverTest.java Wed Jul 30 02:54:09 2008
@@ -31,8 +31,10 @@
import org.apache.maven.wagon.Wagon;
import org.apache.maven.wagon.WagonMock;
import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.resource.Resource;
public class ChecksumObserverTest
extends TestCase
@@ -47,18 +49,19 @@
wagon = new WagonMock( true );
Repository repository = new Repository();
- wagon.connect( repository );
+ wagon.connect( repository );
}
-
+
public void tearDown()
- throws ConnectionException
+ throws Exception
{
wagon.disconnect();
+
+ super.tearDown();
}
public void testSubsequentTransfersAfterTransferError()
- throws NoSuchAlgorithmException, ResourceDoesNotExistException,
- AuthorizationException, IOException
+ throws NoSuchAlgorithmException, ResourceDoesNotExistException, AuthorizationException, IOException
{
TransferListener listener = new ChecksumObserver();
@@ -66,7 +69,7 @@
File testFile = File.createTempFile( "wagon", "tmp" );
testFile.deleteOnExit();
-
+
try
{
wagon.get( "resource", testFile );
@@ -86,7 +89,35 @@
{
assertTrue( true );
}
-
+
testFile.delete();
}
+
+ public void testChecksum()
+ throws NoSuchAlgorithmException
+ {
+ ChecksumObserver listener = new ChecksumObserver( "SHA-1" );
+
+ Resource resource = new Resource( "resource" );
+
+ TransferEvent transferEvent =
+ new TransferEvent( wagon, resource, TransferEvent.TRANSFER_INITIATED, TransferEvent.REQUEST_GET );
+
+ listener.transferInitiated( transferEvent );
+
+ transferEvent = new TransferEvent( wagon, resource, TransferEvent.TRANSFER_STARTED, TransferEvent.REQUEST_GET );
+
+ listener.transferStarted( transferEvent );
+
+ transferEvent = new TransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_GET );
+
+ listener.transferProgress( transferEvent, "checksum\n".getBytes(), 9 );
+
+ transferEvent =
+ new TransferEvent( wagon, resource, TransferEvent.TRANSFER_COMPLETED, TransferEvent.REQUEST_GET );
+
+ listener.transferCompleted( transferEvent );
+
+ assertEquals( "2e5daf0201ddeb068a62d5e08da18657ab2c6be9", listener.getActualChecksum() );
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org