You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/04/17 16:12:37 UTC

svn commit: r529617 [1/2] - in /maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src: main/java/org/apache/maven/archiva/proxy/ test/java/org/apache/maven/archiva/proxy/ test/resources/org/apache/maven/archiva/proxy/

Author: joakime
Date: Tue Apr 17 07:12:36 2007
New Revision: 529617

URL: http://svn.apache.org/viewvc?view=rev&rev=529617
Log:
* Furthor test case improvement.


Added:
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java   (with props)
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml   (with props)
Modified:
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.java
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java
    maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/SnapshotTransferTest.java

Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java?view=diff&rev=529617&r1=529616&r2=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java Tue Apr 17 07:12:36 2007
@@ -144,6 +144,10 @@
                 BidirectionalRepositoryLayout targetLayout = layoutFactory.getLayout( targetRepository.getLayoutType() );
                 String targetPath = targetLayout.toPath( artifact );
 
+                getLogger().debug(
+                                   "Using target repository: " + targetRepository.getId() + " - layout: "
+                                       + targetRepository.getLayoutType() + " - targetPath: " + targetPath );
+
                 File downloadedFile = transferFile( connector, targetRepository, targetPath, localFile,
                                                     requestProperties );
 
@@ -680,6 +684,7 @@
         }
 
         ArchivaRepository repo = new ArchivaRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getUrl() );
+        repo.getModel().setLayoutName( repoConfig.getLayout() );
         return repo;
     }
 

Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java?view=diff&rev=529617&r1=529616&r2=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java Tue Apr 17 07:12:36 2007
@@ -31,7 +31,6 @@
 import org.apache.maven.archiva.policies.urlcache.UrlFailureCache;
 import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
 import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory;
-import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.apache.maven.wagon.Wagon;
 import org.codehaus.plexus.PlexusTestCase;
 import org.easymock.MockControl;
@@ -42,6 +41,7 @@
 import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 import java.util.Iterator;
@@ -59,8 +59,12 @@
     protected static final String ID_LEGACY_PROXIED = "legacy-proxied";
 
     protected static final String ID_PROXIED1 = "proxied1";
+    
+    protected static final String ID_PROXIED1_TARGET = "proxied1-target";
 
     protected static final String ID_PROXIED2 = "proxied2";
+    
+    protected static final String ID_PROXIED2_TARGET = "proxied2-target";
 
     protected static final String ID_DEFAULT_MANAGED = "default-managed-repository";
 
@@ -69,8 +73,12 @@
     protected static final String REPOPATH_PROXIED_LEGACY = "src/test/repositories/legacy-proxied";
 
     protected static final String REPOPATH_PROXIED1 = "src/test/repositories/proxied1";
+    
+    protected static final String REPOPATH_PROXIED1_TARGET = "target/test-repository/proxied1";
 
     protected static final String REPOPATH_PROXIED2 = "src/test/repositories/proxied2";
+    
+    protected static final String REPOPATH_PROXIED2_TARGET = "target/test-repository/proxied2";
 
     protected static final String REPOPATH_DEFAULT_MANAGED = "src/test/repositories/managed";
 
@@ -93,93 +101,40 @@
     protected ArchivaRepository managedLegacyRepository;
 
     protected File managedLegacyDir;
-    
+
     protected BidirectionalRepositoryLayoutFactory layoutFactory;
 
     protected MockConfiguration config;
 
-    protected void setUp()
+    protected void assertChecksums( File expectedFile, String expectedSha1Contents, String expectedMd5Contents )
         throws Exception
     {
-        super.setUp();
-
-        layoutFactory = (BidirectionalRepositoryLayoutFactory) lookup( BidirectionalRepositoryLayoutFactory.class
-                                                                       .getName() );
-        
-        config = (MockConfiguration) lookup( ArchivaConfiguration.class.getName(), "mock" );
-        RepositoryConfiguration repoConfig;
-
-        // Setup source repository (using default layout)
-        File repoLocation = getTestFile( REPOPATH_DEFAULT_MANAGED_TARGET );
-        // faster only to delete this one before copying, the others are done case by case
-        FileUtils.deleteDirectory( new File( repoLocation, "org/apache/maven/test/get-merged-metadata" ) );
-        copyDirectoryStructure( getTestFile( REPOPATH_DEFAULT_MANAGED ), repoLocation );
-
-        managedDefaultRepository = createRepository( ID_DEFAULT_MANAGED, "Default Managed Repository",
-                                                     REPOPATH_DEFAULT_MANAGED_TARGET, "default" );
-
-        managedDefaultDir = new File( managedDefaultRepository.getUrl().getPath() );
-
-        repoConfig = createRepoConfig( managedDefaultRepository );
-
-        config.getConfiguration().addRepository( repoConfig );
-
-        // Setup source repository (using legacy layout)
-        repoLocation = getTestFile( REPOPATH_LEGACY_MANAGED_TARGET );
-        FileUtils.deleteDirectory( repoLocation );
-        copyDirectoryStructure( getTestFile( REPOPATH_LEGACY_MANAGED ), repoLocation );
-
-        managedLegacyRepository = createRepository( ID_LEGACY_MANAGED, "Legacy Managed Repository",
-                                                    REPOPATH_LEGACY_MANAGED_TARGET, "legacy" );
-
-        managedLegacyDir = new File( managedLegacyRepository.getUrl().getPath() );
-
-        repoConfig = createRepoConfig( managedLegacyRepository );
-
-        config.getConfiguration().addRepository( repoConfig );
-
-        // Setup target (proxied to) repository.
-        saveRepositoryConfig( ID_PROXIED1, "Proxied Repository 1", REPOPATH_PROXIED1, "default" );
-
-        // Setup target (proxied to) repository.
-        saveRepositoryConfig( ID_PROXIED2, "Proxied Repository 2", REPOPATH_PROXIED2, "default" );
-
-        // Setup target (proxied to) repository using legacy layout.
-        saveRepositoryConfig( ID_LEGACY_PROXIED, "Proxied Legacy Repository", REPOPATH_PROXIED_LEGACY, "legacy" );
-
-        // Setup the proxy handler.
-        proxyHandler = (RepositoryProxyConnectors) lookup( RepositoryProxyConnectors.class.getName() );
-
-        // Setup the wagon mock.
-        wagonMockControl = MockControl.createNiceControl( Wagon.class );
-        wagonMock = (Wagon) wagonMockControl.getMock();
-        WagonDelegate delegate = (WagonDelegate) lookup( Wagon.ROLE, "test" );
-        delegate.setDelegate( wagonMock );
-
-        System.out.println( "\n.\\ " + getName() + "() \\._________________________________________\n" );
-    }
-    
-    protected void saveRepositoryConfig( String id, String name, String path, String layout )
-    {
-        RepositoryConfiguration repoConfig = new RepositoryConfiguration();
-
-        repoConfig.setId( id );
-        repoConfig.setName( name );
+        File sha1File = new File( expectedFile.getAbsolutePath() + ".sha1" );
+        File md5File = new File( expectedFile.getAbsolutePath() + ".md5" );
 
-        if ( path.indexOf( "://" ) > 0 )
+        if ( expectedSha1Contents == null )
         {
-            repoConfig.setUrl( path );
+            assertFalse( "SHA1 File should NOT exist: " + sha1File.getPath(), sha1File.exists() );
         }
         else
         {
-            repoConfig.setUrl( PathUtil.toUrl( path ) );
+            assertTrue( "SHA1 File should exist: " + sha1File.getPath(), sha1File.exists() );
+            String actualSha1Contents = readChecksumFile( sha1File );
+            assertEquals( "SHA1 File contents: " + sha1File.getPath(), expectedSha1Contents, actualSha1Contents );
         }
-        repoConfig.setLayout( layout );
 
-        config.getConfiguration().addRepository( repoConfig );
-        config.triggerChange( "repository", "" );
+        if ( expectedMd5Contents == null )
+        {
+            assertFalse( "MD5 File should NOT exist: " + md5File.getPath(), md5File.exists() );
+        }
+        else
+        {
+            assertTrue( "MD5 File should exist: " + md5File.getPath(), md5File.exists() );
+            String actualMd5Contents = readChecksumFile( md5File );
+            assertEquals( "MD5 File contents: " + md5File.getPath(), expectedMd5Contents, actualMd5Contents );
+        }
     }
-
+    
     protected void assertFileEquals( File expectedFile, File actualFile, File sourceFile )
         throws Exception
     {
@@ -194,6 +149,34 @@
         assertEquals( "Check file contents.", expectedContents, actualContents );
     }
 
+    protected void assertNotDownloaded( File downloadedFile )
+    {
+        assertNull( "Found file: " + downloadedFile + "; but was expecting a failure", downloadedFile );
+    }
+
+    protected void assertNoTempFiles( File expectedFile )
+    {
+        File workingDir = expectedFile.getParentFile();
+        if ( ( workingDir == null ) || !workingDir.isDirectory() )
+        {
+            return;
+        }
+
+        Collection tmpFiles = FileUtils.listFiles( workingDir, new String[] { "tmp" }, false );
+        if ( !tmpFiles.isEmpty() )
+        {
+            StringBuffer emsg = new StringBuffer();
+            emsg.append( "Found Temp Files in dir: " ).append( workingDir.getPath() );
+            Iterator it = tmpFiles.iterator();
+            while ( it.hasNext() )
+            {
+                File tfile = (File) it.next();
+                emsg.append( "\n   " ).append( tfile.getName() );
+            }
+            fail( emsg.toString() );
+        }
+    }
+
     /**
      * A faster recursive copy that omits .svn directories.
      *
@@ -266,6 +249,12 @@
         return ref;
     }
 
+    protected ArchivaRepository createManagedLegacyRepository()
+    {
+        return createRepository( "src/test/repositories/legacy-managed", "testManagedLegacyRepo",
+                                 "Test Managed (Legacy) Repository", "legacy" );
+    }
+
     protected ProjectReference createMetadataReference( String layoutType, String path )
         throws Exception
     {
@@ -274,12 +263,6 @@
         return metadata;
     }
 
-    protected ArchivaRepository createManagedLegacyRepository()
-    {
-        return createRepository( "src/test/repositories/legacy-managed", "testManagedLegacyRepo",
-                                 "Test Managed (Legacy) Repository", "legacy" );
-    }
-
     protected ArchivaRepository createProxiedLegacyRepository()
     {
         return createRepository( "src/test/repositories/legacy-proxied", "testProxiedLegacyRepo",
@@ -312,21 +295,6 @@
         return repo;
     }
 
-    protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy,
-                                  String releasePolicy, String snapshotPolicy, String cacheFailuresPolicy )
-    {
-        ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration();
-        connectorConfig.setSourceRepoId( sourceRepoId );
-        connectorConfig.setTargetRepoId( targetRepoId );
-        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, checksumPolicy );
-        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasePolicy );
-        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotPolicy );
-        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, cacheFailuresPolicy );
-
-        config.getConfiguration().addProxyConnector( connectorConfig );
-        config.triggerChange( "proxyConnector", "" );
-    }
-
     protected UrlFailureCache lookupUrlFailureCache()
         throws Exception
     {
@@ -335,29 +303,6 @@
         return failurlCache;
     }
 
-    protected void assertNoTempFiles( File expectedFile )
-    {
-        File workingDir = expectedFile.getParentFile();
-        if ( ( workingDir == null ) || !workingDir.isDirectory() )
-        {
-            return;
-        }
-
-        Collection tmpFiles = FileUtils.listFiles( workingDir, new String[] { "tmp" }, false );
-        if ( !tmpFiles.isEmpty() )
-        {
-            StringBuffer emsg = new StringBuffer();
-            emsg.append( "Found Temp Files in dir: " ).append( workingDir.getPath() );
-            Iterator it = tmpFiles.iterator();
-            while ( it.hasNext() )
-            {
-                File tfile = (File) it.next();
-                emsg.append( "\n   " ).append( tfile.getName() );
-            }
-            fail( emsg.toString() );
-        }
-    }
-
     /**
      * Read the first line from the checksum file, and return it (trimmed).
      */
@@ -387,38 +332,120 @@
         }
     }
 
-    protected void assertChecksums( File expectedFile, String expectedSha1Contents, String expectedMd5Contents )
-        throws Exception
+    protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy,
+                                  String releasePolicy, String snapshotPolicy, String cacheFailuresPolicy )
     {
-        File sha1File = new File( expectedFile.getAbsolutePath() + ".sha1" );
-        File md5File = new File( expectedFile.getAbsolutePath() + ".md5" );
+        ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration();
+        connectorConfig.setSourceRepoId( sourceRepoId );
+        connectorConfig.setTargetRepoId( targetRepoId );
+        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, checksumPolicy );
+        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasePolicy );
+        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotPolicy );
+        connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, cacheFailuresPolicy );
 
-        if ( expectedSha1Contents == null )
-        {
-            assertFalse( "SHA1 File should NOT exist: " + sha1File.getPath(), sha1File.exists() );
-        }
-        else
-        {
-            assertTrue( "SHA1 File should exist: " + sha1File.getPath(), sha1File.exists() );
-            String actualSha1Contents = readChecksumFile( sha1File );
-            assertEquals( "SHA1 File contents: " + sha1File.getPath(), expectedSha1Contents, actualSha1Contents );
-        }
+        config.getConfiguration().addProxyConnector( connectorConfig );
+        config.triggerChange( "proxyConnector", "" );
+    }
 
-        if ( expectedMd5Contents == null )
+    protected void saveRepositoryConfig( String id, String name, String path, String layout )
+    {
+        RepositoryConfiguration repoConfig = new RepositoryConfiguration();
+
+        repoConfig.setId( id );
+        repoConfig.setName( name );
+
+        if ( path.startsWith( "test://" ) )
         {
-            assertFalse( "MD5 File should NOT exist: " + md5File.getPath(), md5File.exists() );
+            repoConfig.setUrl( path );
         }
         else
         {
-            assertTrue( "MD5 File should exist: " + md5File.getPath(), md5File.exists() );
-            String actualMd5Contents = readChecksumFile( md5File );
-            assertEquals( "MD5 File contents: " + md5File.getPath(), expectedMd5Contents, actualMd5Contents );
+            repoConfig.setUrl( PathUtil.toUrl( path ) );
         }
+        repoConfig.setLayout( layout );
+
+        config.getConfiguration().addRepository( repoConfig );
+        config.triggerChange( "repository", "" );
     }
 
-    protected void assertNotDownloaded( File downloadedFile )
+    protected File saveTargetedRepositoryConfig( String id, String originalPath, String targetPath, String layout ) throws IOException
     {
-        assertNull( "Found file: " + downloadedFile + "; but was expecting a failure", downloadedFile );
+        File repoLocation = getTestFile( targetPath );
+        FileUtils.deleteDirectory( repoLocation );
+        copyDirectoryStructure( getTestFile( originalPath ), repoLocation );
+
+        saveRepositoryConfig( id, "Target Repo-" + id, targetPath, layout );
+        
+        return repoLocation;
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        layoutFactory = (BidirectionalRepositoryLayoutFactory) lookup( BidirectionalRepositoryLayoutFactory.class
+            .getName() );
+
+        config = (MockConfiguration) lookup( ArchivaConfiguration.class.getName(), "mock" );
+        RepositoryConfiguration repoConfig;
+
+        // Setup source repository (using default layout)
+        File repoLocation = getTestFile( REPOPATH_DEFAULT_MANAGED_TARGET );
+        // faster only to delete this one before copying, the others are done case by case
+        FileUtils.deleteDirectory( new File( repoLocation, "org/apache/maven/test/get-merged-metadata" ) );
+        copyDirectoryStructure( getTestFile( REPOPATH_DEFAULT_MANAGED ), repoLocation );
+
+        managedDefaultRepository = createRepository( ID_DEFAULT_MANAGED, "Default Managed Repository",
+                                                     REPOPATH_DEFAULT_MANAGED_TARGET, "default" );
+
+        managedDefaultDir = new File( managedDefaultRepository.getUrl().getPath() );
+
+        repoConfig = createRepoConfig( managedDefaultRepository );
+
+        config.getConfiguration().addRepository( repoConfig );
+
+        // Setup source repository (using legacy layout)
+        repoLocation = getTestFile( REPOPATH_LEGACY_MANAGED_TARGET );
+        FileUtils.deleteDirectory( repoLocation );
+        copyDirectoryStructure( getTestFile( REPOPATH_LEGACY_MANAGED ), repoLocation );
+
+        managedLegacyRepository = createRepository( ID_LEGACY_MANAGED, "Legacy Managed Repository",
+                                                    REPOPATH_LEGACY_MANAGED_TARGET, "legacy" );
+
+        managedLegacyDir = new File( managedLegacyRepository.getUrl().getPath() );
+
+        repoConfig = createRepoConfig( managedLegacyRepository );
+
+        config.getConfiguration().addRepository( repoConfig );
+
+        // Setup target (proxied to) repository.
+        saveRepositoryConfig( ID_PROXIED1, "Proxied Repository 1", REPOPATH_PROXIED1, "default" );
+
+        // Setup target (proxied to) repository.
+        saveRepositoryConfig( ID_PROXIED2, "Proxied Repository 2", REPOPATH_PROXIED2, "default" );
+
+        // Setup target (proxied to) repository using legacy layout.
+        saveRepositoryConfig( ID_LEGACY_PROXIED, "Proxied Legacy Repository", REPOPATH_PROXIED_LEGACY, "legacy" );
+
+        // Setup the proxy handler.
+        proxyHandler = (RepositoryProxyConnectors) lookup( RepositoryProxyConnectors.class.getName() );
+
+        // Setup the wagon mock.
+        wagonMockControl = MockControl.createNiceControl( Wagon.class );
+        wagonMock = (Wagon) wagonMockControl.getMock();
+        WagonDelegate delegate = (WagonDelegate) lookup( Wagon.ROLE, "test" );
+        delegate.setDelegate( wagonMock );
+
+        System.out.println( "\n.\\ " + getName() + "() \\._________________________________________\n" );
+    }
+
+    protected static Date getFutureDate()
+        throws ParseException
+    {
+        Calendar cal = Calendar.getInstance();
+        cal.add( Calendar.YEAR, 1 );
+        return cal.getTime();
     }
 
     protected static Date getPastDate()

Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java?view=auto&rev=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java Tue Apr 17 07:12:36 2007
@@ -0,0 +1,48 @@
+package org.apache.maven.archiva.proxy;
+
+/*
+ * 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 junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * IDE Provided Utility Class for all tests. 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AllTests
+{
+
+    public static Test suite()
+    {
+        TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.proxy" );
+        //$JUnit-BEGIN$
+        suite.addTestSuite( ChecksumTransferTest.class );
+        suite.addTestSuite( MetadataTransferTest.class );
+        suite.addTestSuite( CacheFailuresTransferTest.class );
+        suite.addTestSuite( ManagedDefaultTransferTest.class );
+        suite.addTestSuite( SnapshotTransferTest.class );
+        suite.addTestSuite( ManagedLegacyTransferTest.class );
+        suite.addTestSuite( RelocateTransferTest.class );
+        //$JUnit-END$
+        return suite;
+    }
+}

Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AllTests.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java?view=diff&rev=529617&r1=529616&r2=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java Tue Apr 17 07:12:36 2007
@@ -307,4 +307,73 @@
         // TODO: How much information on each failure should we pass back to the user vs. logging in the proxy? 
     }
 
+    public void testLegacyProxyRepoGetAlreadyPresent()
+        throws Exception
+    {
+        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( managedDefaultDir, path );
+        ArtifactReference artifact = createArtifactReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+
+        File proxiedFile = new File( REPOPATH_PROXIED_LEGACY,
+                                     "org.apache.maven.test/jars/get-default-layout-present-1.0.jar" );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
+    }
+
+    public void testLegacyRequestConvertedToDefaultPathInManagedRepo()
+        throws Exception
+    {
+        // Check that a Maven1 legacy request is translated to a maven2 path in
+        // the managed repository.
+
+        String legacyPath = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( managedDefaultDir, path );
+        ArtifactReference artifact = createArtifactReference( "default", path );
+
+        expectedFile.delete();
+        assertFalse( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+
+        File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
+    }
+
+    public void testLegacyProxyRepoGetNotPresent()
+        throws Exception
+    {
+        String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
+        File expectedFile = new File( managedDefaultDir, path );
+        ArtifactReference artifact = createArtifactReference( "default", path );
+
+        expectedFile.delete();
+        assertFalse( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+
+        File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, "org.apache.maven.test/jars/get-default-layout-1.0.jar" );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
+
+        // TODO: timestamp preservation requires support for that in wagon
+        //    assertEquals( "Check file timestamp", proxiedFile.lastModified(), file.lastModified() );
+    }
 }

Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.java?view=diff&rev=529617&r1=529616&r2=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.java Tue Apr 17 07:12:36 2007
@@ -51,9 +51,9 @@
         saveConnector( ID_LEGACY_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
-        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+        File downloadedFile = proxyHandler.fetchFromProxies( managedLegacyRepository, artifact );
 
-        File proxied2File = new File( REPOPATH_PROXIED2,
+        File proxied2File = new File( REPOPATH_PROXIED1,
                                       "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar" );
         assertFileEquals( expectedFile, downloadedFile, proxied2File );
         assertNoTempFiles( expectedFile );
@@ -65,95 +65,43 @@
     public void testLegacyManagedRepoGetAlreadyPresent()
         throws Exception
     {
-        fail( "Implemented " + getName() );
+        String path = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( managedLegacyDir, path );
+        ArtifactReference artifact = createArtifactReference( "legacy", path );
 
-        //        String path = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
-        //        File expectedFile = new File( legacyManagedRepository.getBasedir(), path );
-        //        String expectedContents = FileUtils.readFileToString( expectedFile, null );
-        //        long originalModificationTime = expectedFile.lastModified();
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, legacyManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check file contents", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        File proxiedFile = new File( proxiedRepository1.getBasedir(),
-        //                                     "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar" );
-        //        String unexpectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertFalse( "Check file contents", unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
-        //        assertFalse( "Check file timestamp is not that of proxy", proxiedFile.lastModified() == file.lastModified() );
-        //        assertEquals( "Check file timestamp is that of original managed file", originalModificationTime, file
-        //            .lastModified() );
-    }
+        assertTrue( expectedFile.exists() );
 
-    public void testLegacyProxyRepoGetNotPresent()
-        throws Exception
-    {
-        fail( "Implemented " + getName() );
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_LEGACY_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
-        //        String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //
-        //        expectedFile.delete();
-        //        assertFalse( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, legacyProxiedRepositories, defaultManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        File proxiedFile = new File( legacyProxiedRepository.getBasedir(),
-        //                                     "org.apache.maven.test/jars/get-default-layout-1.0.jar" );
-        //        String expectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertEquals( "Check file contents", expectedContents, FileUtils.readFileToString( file, null ) );
-        // TODO: timestamp preservation requires support for that in wagon
-        //    assertEquals( "Check file timestamp", proxiedFile.lastModified(), file.lastModified() );
-    }
+        File downloadedFile = proxyHandler.fetchFromProxies( managedLegacyRepository, artifact );
 
-    public void testLegacyProxyRepoGetAlreadyPresent()
-        throws Exception
-    {
-        fail( "Implemented " + getName() );
-
-        //        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String expectedContents = FileUtils.readFileToString( expectedFile, null );
-        //        long originalModificationTime = expectedFile.lastModified();
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, legacyProxiedRepositories, defaultManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check file contents", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        File proxiedFile = new File( legacyProxiedRepository.getBasedir(),
-        //                                     "org.apache.maven.test/jars/get-default-layout-present-1.0.jar" );
-        //        String unexpectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertFalse( "Check file contents", unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
-        //        assertFalse( "Check file timestamp is not that of proxy", proxiedFile.lastModified() == file.lastModified() );
-        //        assertEquals( "Check file timestamp is that of original managed file", originalModificationTime, file
-        //            .lastModified() );
+        File proxied2File = new File( REPOPATH_PROXIED1,
+                                      "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar" );
+        assertFileEquals( expectedFile, downloadedFile, proxied2File );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testLegacyManagedAndProxyRepoGetNotPresent()
         throws Exception
     {
-        fail( "Implemented " + getName() );
+        String path = "org.apache.maven.test/jars/get-default-layout-1.0.jar";
+        File expectedFile = new File( managedLegacyDir, path );
+        ArtifactReference artifact = createArtifactReference( "legacy", path );
+
+        assertFalse( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_LEGACY_MANAGED, ID_LEGACY_PROXIED, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedLegacyRepository, artifact );
+
+        File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, path );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
 
-        //        String path = "org.apache.maven.test/jars/get-default-layout-1.0.jar";
-        //        File expectedFile = new File( legacyManagedRepository.getBasedir(), path );
-        //
-        //        assertFalse( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, legacyProxiedRepositories, legacyManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        File proxiedFile = new File( legacyProxiedRepository.getBasedir(), path );
-        //        String expectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertEquals( "Check file contents", expectedContents, FileUtils.readFileToString( file, null ) );
         // TODO: timestamp preservation requires support for that in wagon
         //    assertEquals( "Check file timestamp", proxiedFile.lastModified(), file.lastModified() );
     }
@@ -161,61 +109,45 @@
     public void testLegacyManagedAndProxyRepoGetAlreadyPresent()
         throws Exception
     {
-        fail( "Implemented " + getName() );
+        String path = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( managedLegacyDir, path );
+        ArtifactReference artifact = createArtifactReference( "legacy", path );
 
-        //        String path = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
-        //        File expectedFile = new File( legacyManagedRepository.getBasedir(), path );
-        //        String expectedContents = FileUtils.readFileToString( expectedFile, null );
-        //        long originalModificationTime = expectedFile.lastModified();
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, legacyProxiedRepositories, legacyManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check file contents", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        File proxiedFile = new File( legacyProxiedRepository.getBasedir(), path );
-        //        String unexpectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertFalse( "Check file contents", unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
-        //        assertFalse( "Check file timestamp is not that of proxy", proxiedFile.lastModified() == file.lastModified() );
-        //        assertEquals( "Check file timestamp is that of original managed file", originalModificationTime, file
-        //            .lastModified() );
-    }
+        assertTrue( expectedFile.exists() );
 
-    public void testLegacyRequestConvertedToDefaultPathInManagedRepo()
-        throws Exception
-    {
-        fail( "Implemented " + getName() );
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_LEGACY_MANAGED, ID_LEGACY_PROXIED, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
-        // Check that a Maven1 legacy request is translated to a maven2 path in
-        // the managed repository.
+        File downloadedFile = proxyHandler.fetchFromProxies( managedLegacyRepository, artifact );
 
-        //        String legacyPath = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
-        //        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( legacyPath, legacyProxiedRepositories, defaultManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
+        File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, path );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testDefaultRequestConvertedToLegacyPathInManagedRepo()
         throws Exception
     {
-        fail( "Implemented " + getName() );
-
         // Check that a Maven2 default request is translated to a legacy path in
         // the managed repository.
 
-        //        String legacyPath = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
-        //        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
-        //        File expectedFile = new File( legacyManagedRepository.getBasedir(), legacyPath );
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, legacyManagedRepository );
-        //
-        //        assertEquals( "Check file matches", expectedFile, file );
+        String legacyPath = "org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( managedLegacyDir, legacyPath );
+        ArtifactReference artifact = createArtifactReference( "legacy", legacyPath );
+
+        expectedFile.delete();
+        assertFalse( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_LEGACY_MANAGED, ID_PROXIED1, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedLegacyRepository, artifact );
+
+        File proxiedFile = new File( REPOPATH_PROXIED1, path );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
     }
 }

Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java?view=diff&rev=529617&r1=529616&r2=529617
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java Tue Apr 17 07:12:36 2007
@@ -19,13 +19,26 @@
  * under the License.
  */
 
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
 import org.apache.maven.archiva.model.ProjectReference;
+import org.apache.maven.archiva.model.SnapshotVersion;
 import org.apache.maven.archiva.policies.CachedFailuresPolicy;
 import org.apache.maven.archiva.policies.ChecksumPolicy;
 import org.apache.maven.archiva.policies.ReleasesPolicy;
 import org.apache.maven.archiva.policies.SnapshotsPolicy;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
 
 import java.io.File;
+import java.io.StringWriter;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
 
 /**
  * MetadataTransferTest 
@@ -45,248 +58,305 @@
         ProjectReference metadata = createMetadataReference( "default", path );
 
         // Configure Connector (usually done within archiva.xml configuration)
-        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+        saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
 
         assertNotDownloaded( downloadedFile );
+        assertNoTempFiles( expectedFile );
+    }
+
+    private String getExpectedMetadata( String artifactId, String version )
+        throws RepositoryMetadataException
+    {
+        return getExpectedMetadata( artifactId, version, (SnapshotVersion) null, null );
+    }
+
+    private static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone( "UTC" );
+
+    private static String getLastUpdatedTimestamp( File file )
+    {
+        DateFormat fmt = new SimpleDateFormat( "yyyyMMddHHmmss", Locale.US );
+        fmt.setTimeZone( UTC_TIMEZONE );
+        return fmt.format( new Date( file.lastModified() ) );
+    }
+
+    private String getExpectedMetadata( String artifactId, String[] availableVersions, File file )
+        throws RepositoryMetadataException
+    {
+        return getExpectedMetadata( artifactId, null, availableVersions, file );
+    }
+
+    private SnapshotVersion getSnapshotVersion( String timestamp, int buildNumber )
+    {
+        SnapshotVersion snapshot = new SnapshotVersion();
+
+        snapshot.setTimestamp( timestamp );
+        snapshot.setBuildNumber( buildNumber );
+
+        return snapshot;
+    }
+
+    private String getExpectedMetadata( String artifactId, String version, SnapshotVersion snapshot, File file )
+        throws RepositoryMetadataException
+    {
+        StringWriter expectedContents = new StringWriter();
+
+        ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
+        m.setGroupId( "org.apache.maven.test" );
+        m.setArtifactId( artifactId );
+        m.setVersion( version );
+        m.setSnapshotVersion( snapshot );
+        if ( file != null )
+        {
+            m.setLastUpdated( getLastUpdatedTimestamp( file ) );
+        }
+        m.setModelEncoding( null );
+
+        RepositoryMetadataWriter.write( m, expectedContents );
+        return expectedContents.toString();
+    }
+
+    private String getExpectedMetadata( String artifactId, String version, String[] availableVersions, File file )
+        throws RepositoryMetadataException
+    {
+        StringWriter expectedContents = new StringWriter();
+
+        ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
+        m.setGroupId( "org.apache.maven.test" );
+        m.setArtifactId( artifactId );
+        m.setVersion( version );
+        if ( file != null )
+        {
+            m.setLastUpdated( getLastUpdatedTimestamp( file ) );
+        }
+        if ( availableVersions != null )
+        {
+            m.getAvailableVersions().addAll( Arrays.asList( availableVersions ) );
+        }
+        m.setModelEncoding( null );
+
+        RepositoryMetadataWriter.write( m, expectedContents );
+        return expectedContents.toString();
+    }
+
+    private void assertMetadataEquals( File expectedFile, File downloadedFile, String expectedMetadata )
+        throws Exception
+    {
+        assertNotNull( "Expected File should not be null.", expectedFile );
+        assertNotNull( "Downloaded File should not be null.", downloadedFile );
+
+        assertTrue( "Check downloaded file exists.", downloadedFile.exists() );
+        assertEquals( "Check file path matches.", expectedFile.getAbsolutePath(), downloadedFile.getAbsolutePath() );
 
-        //        String path = "org/apache/maven/test/dummy-artifact/1.0/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //
-        //        assertFalse( expectedFile.exists() );
-        //
-        //        try
-        //        {
-        //            File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //            fail( "Found file: " + file + "; but was expecting a failure" );
-        //        }
-        //        catch ( ResourceDoesNotExistException e )
-        //        {
-        //            // expected
-        //
-        //            assertFalse( expectedFile.exists() );
-        //        }
+        StringWriter actualContents = new StringWriter();
+        RepositoryMetadataReader metadataReader = new RepositoryMetadataReader();
+        ArchivaRepositoryMetadata metadata = metadataReader.read( downloadedFile );
+        RepositoryMetadataWriter.write( metadata, actualContents );
+        assertEquals( "Check file contents.", expectedMetadata, actualContents );
     }
 
     public void testGetMetadataProxied()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        FileUtils.deleteDirectory( expectedFile.getParentFile() );
+        assertFalse( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
 
-        //        String path = "org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //
-        //        FileUtils.deleteDirectory( expectedFile.getParentFile() );
-        //        assertFalse( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        String expectedContents = getExpectedMetadata( "get-default-metadata", "1.0" );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );        
+        String expectedMetadata = getExpectedMetadata( "get-default-metadata", "1.0" );
+        assertMetadataEquals( expectedFile, downloadedFile, expectedMetadata );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetMetadataMergeRepos()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-merged-metadata/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
-        //        String path = "org/apache/maven/test/get-merged-metadata/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //
-        //        String expectedContents = getExpectedMetadata( "get-merged-metadata", getVersioning(
-        //            Arrays.asList( new String[]{"0.9", "1.0", "2.0", "3.0", "5.0", "4.0"} ), file ) );
-        //
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        String expectedMetadata = getExpectedMetadata( "get-merged-metadata", new String[] {
+            "0.9",
+            "1.0",
+            "2.0",
+            "3.0",
+            "5.0",
+            "4.0" }, downloadedFile );
+        assertMetadataEquals( expectedFile, downloadedFile, expectedMetadata );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetMetadataRemovedFromProxies()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
 
-        //        String path = "org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String expectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );        
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        File proxiedFile = new File( REPOPATH_PROXIED1, path );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetReleaseMetadataNotExpired()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String expectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
-        //
-        //        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
-        //        proxiedRepository1.getSnapshots().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //
-        //        String unexpectedContents =
-        //            FileUtils.readFileToString( new File( proxiedRepository1.getBasedir(), path ), null );
-        //        assertFalse( "Check content doesn't match proxy version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
+        assertTrue( expectedFile.exists() );
 
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        File proxiedFile = new File( REPOPATH_PROXIED1, path );
+        assertFileEquals( expectedFile, downloadedFile, proxiedFile );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetSnapshotMetadataNotExpired()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
+
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String expectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
-        //
-        //        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        //        proxiedRepository1.getSnapshots().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //
-        //        String unexpectedContents =
-        //            FileUtils.readFileToString( new File( proxiedRepository1.getBasedir(), path ), null );
-        //        assertFalse( "Check content doesn't match proxy version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );        
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        // Content should NOT match that from proxied 1. 
+        assertFileEquals( expectedFile, downloadedFile, expectedFile );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetReleaseMetadataExpired()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String unexpectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
-        //
-        //        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        //        proxiedRepository1.getSnapshots().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //
-        //        String expectedContents = getExpectedMetadata( "get-updated-metadata", getVersioning(
-        //            Arrays.asList( new String[]{"1.0", "2.0"} ), file ) );
-        //
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        assertFalse( "Check content doesn't match proxy version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
 
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        String expectedMetadata = getExpectedMetadata( "get-updated-metadata", new String[] { "1.0", "2.0", },
+                                                       downloadedFile );
+        assertMetadataEquals( expectedFile, downloadedFile, expectedMetadata );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetSnapshotMetadataExpired()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String unexpectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
-        //
-        //        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
-        //        proxiedRepository1.getSnapshots().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //
-        //        String expectedContents =
-        //            getExpectedMetadata( "get-updated-metadata", "1.0-SNAPSHOT", getVersioning( "20050831.111213", 2, file ) );
-        //
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        assertFalse( "Check content doesn't match proxy version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );
+        assertTrue( expectedFile.exists() );
 
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        String expectedMetadata = getExpectedMetadata( "get-updated-metadata", "1.0-SNAPSHOT",
+                                                       getSnapshotVersion( "20050831.111213", 2 ), downloadedFile );
+        assertMetadataEquals( expectedFile, downloadedFile, expectedMetadata );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetMetadataNotUpdated()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
+
+        File proxiedFile = new File( REPOPATH_PROXIED1, path );
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( proxiedFile.lastModified() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String expectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        File proxiedFile = new File( proxiedRepository1.getBasedir(), path );
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( proxiedFile.lastModified() );
-        //
-        //        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //
-        //        String unexpectedContents = FileUtils.readFileToString( proxiedFile, null );
-        //        assertFalse( "Check content doesn't match proxy version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );        
+        assertFileEquals( expectedFile, downloadedFile, expectedFile );
+        assertNoTempFiles( expectedFile );
     }
 
     public void testGetMetadataUpdated()
+        throws Exception
     {
         String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        fail( "Implemented " + getName() );
+        File expectedFile = new File( managedDefaultDir, path );
+        ProjectReference metadata = createMetadataReference( "default", path );
+
+        assertTrue( expectedFile.exists() );
+
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
+
+        // Configure Connector (usually done within archiva.xml configuration)
+        saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.IGNORED,
+                       SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
+
+        File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, metadata );
+
+        String expectedMetadata = getExpectedMetadata( "get-updated-metadata", new String[] { "1.0", "2.0" },
+                                                       downloadedFile );
 
-        //        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
-        //        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
-        //        String unexpectedContents =
-        //            FileUtils.readFileToString( new File( defaultManagedRepository.getBasedir(), path ), null );
-        //
-        //        assertTrue( expectedFile.exists() );
-        //
-        //        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getPastDate().getTime() );
-        //
-        //        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
-        //        assertEquals( "Check file matches", expectedFile, file );
-        //        assertTrue( "Check file created", file.exists() );
-        //
-        //        String expectedContents = getExpectedMetadata( "get-updated-metadata", getVersioning(
-        //            Arrays.asList( new String[]{"1.0", "2.0"} ), file ) );
-        //        assertEquals( "Check content matches", expectedContents, FileUtils.readFileToString( file, null ) );
-        //        assertFalse( "Check content doesn't match old version",
-        //                     unexpectedContents.equals( FileUtils.readFileToString( file, null ) ) );    
+        assertMetadataEquals( expectedFile, downloadedFile, expectedMetadata );
+        assertNoTempFiles( expectedFile );
     }
 }