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/10/05 00:29:50 UTC

svn commit: r582020 [3/3] - in /maven/archiva/trunk: archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/ archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/functors/ archiva-base...

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java?rev=582020&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java Thu Oct  4 15:29:43 2007
@@ -0,0 +1,436 @@
+package org.apache.maven.archiva.web.action.admin.connectors.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 com.opensymphony.xwork.Action;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+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.web.action.AbstractWebworkTestCase;
+import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
+import org.codehaus.plexus.registry.RegistryException;
+import org.easymock.MockControl;
+
+import java.util.List;
+
+/**
+ * EditProxyConnectorActionTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class EditProxyConnectorActionTest
+    extends AbstractWebworkTestCase
+{
+    private static final String TEST_TARGET_ID = "central";
+
+    private static final String TEST_SOURCE_ID = "corporate";
+
+    private EditProxyConnectorAction action;
+
+    private MockControl archivaConfigurationControl;
+
+    private ArchivaConfiguration archivaConfiguration;
+
+    public void testAddBlackListPattern()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Perform Test w/no values.
+        preRequest( action );
+        String status = action.addBlackListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no blacklist pattern added.
+        assertHasErrors( action );
+        assertEquals( 0, connector.getBlackListPatterns().size() );
+
+        // Try again, but now with a pattern to add.
+        action.setBlackListPattern( "**/*-javadoc.jar" );
+        preRequest( action );
+        status = action.addBlackListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 blacklist pattern added.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getBlackListPatterns().size() );
+    }
+
+    public void testAddProperty()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Perform Test w/no values.
+        preRequest( action );
+        String status = action.addProperty();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no property pattern added.
+        assertHasErrors( action );
+        assertEquals( 0, connector.getProperties().size() );
+
+        // Try again, but now with a property key/value to add.
+        action.setPropertyKey( "eat-a" );
+        action.setPropertyValue( "gramov-a-bits" );
+        preRequest( action );
+        status = action.addProperty();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 property added.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getProperties().size() );
+    }
+
+    public void testAddWhiteListPattern()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Perform Test w/no values.
+        preRequest( action );
+        String status = action.addWhiteListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no whitelist pattern added.
+        assertHasErrors( action );
+        assertEquals( 0, connector.getWhiteListPatterns().size() );
+
+        // Try again, but now with a pattern to add.
+        action.setWhiteListPattern( "**/*.jar" );
+        preRequest( action );
+        status = action.addWhiteListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 whitelist pattern added.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getWhiteListPatterns().size() );
+    }
+
+    public void testEditProxyConnectorCommit()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Create the input screen.
+        assertRequestStatus( action, Action.SUCCESS, "commit" );
+        assertNoErrors( action );
+
+        // Test configuration.
+        List<ProxyConnectorConfiguration> proxyConfigs = archivaConfiguration.getConfiguration().getProxyConnectors();
+        assertNotNull( proxyConfigs );
+        assertEquals( 1, proxyConfigs.size() );
+
+        ProxyConnectorConfiguration actualConnector = proxyConfigs.get( 0 );
+
+        assertNotNull( actualConnector );
+        // The use of "(direct connection)" should result in a proxyId which is <null>.
+        assertNull( actualConnector.getProxyId() );
+        assertEquals( "corporate", actualConnector.getSourceRepoId() );
+        assertEquals( "central", actualConnector.getTargetRepoId() );
+    }
+
+    public void testEditProxyConnectorInitialPage()
+        throws Exception
+    {
+        expectConfigurationRequests( 3 );
+        archivaConfigurationControl.replay();
+
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        String status = action.input();
+        assertEquals( Action.INPUT, status );
+    }
+
+    public void testRemoveBlackListPattern()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Add some arbitrary blacklist patterns.
+        connector.addBlackListPattern( "**/*-javadoc.jar" );
+        connector.addBlackListPattern( "**/*.war" );
+
+        // Perform Test w/no pattern value.
+        preRequest( action );
+        String status = action.removeBlackListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no blacklist pattern removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getBlackListPatterns().size() );
+
+        // Perform test w/invalid (non-existant) pattern value to remove.
+        preRequest( action );
+        action.setPattern( "**/*oops*" );
+        status = action.removeBlackListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no blacklist pattern removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getBlackListPatterns().size() );
+
+        // Try again, but now with a valid pattern to remove.
+        action.setPattern( "**/*-javadoc.jar" );
+        preRequest( action );
+        status = action.removeBlackListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 blacklist pattern left.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getBlackListPatterns().size() );
+        assertEquals( "Should have left 1 blacklist pattern", "**/*.war", connector.getBlackListPatterns().get( 0 ) );
+    }
+
+    public void testRemoveProperty()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Add some arbitrary properties.
+        connector.addProperty( "username", "general-tso" );
+        connector.addProperty( "password", "chicken" );
+
+        // Perform Test w/no property key.
+        preRequest( action );
+        String status = action.removeProperty();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no properties removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getProperties().size() );
+
+        // Perform test w/invalid (non-existant) property key to remove.
+        preRequest( action );
+        action.setPropertyKey( "slurm" );
+        status = action.removeProperty();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no properties removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getProperties().size() );
+
+        // Try again, but now with a valid property to remove.
+        preRequest( action );
+        action.setPropertyKey( "password" );
+        status = action.removeProperty();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 property left.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getProperties().size() );
+        assertEquals( "Should have left 1 property", "general-tso", connector.getProperties().get( "username" ) );
+    }
+
+    public void testRemoveWhiteListPattern()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Prepare Test.
+        action.setSource( TEST_SOURCE_ID );
+        action.setTarget( TEST_TARGET_ID );
+        action.prepare();
+        ProxyConnectorConfiguration connector = action.getConnector();
+        assertInitialProxyConnector( connector );
+
+        // Add some arbitrary whitelist patterns.
+        connector.addWhiteListPattern( "javax/**/*" );
+        connector.addWhiteListPattern( "com/sun/**/*" );
+
+        // Perform Test w/no pattern value.
+        preRequest( action );
+        String status = action.removeWhiteListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no whitelist pattern removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getWhiteListPatterns().size() );
+
+        // Perform test w/invalid (non-existant) pattern value to remove.
+        preRequest( action );
+        action.setPattern( "**/*oops*" );
+        status = action.removeWhiteListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have returned an error, with no whitelist pattern removed.
+        assertHasErrors( action );
+        assertEquals( 2, connector.getWhiteListPatterns().size() );
+
+        // Try again, but now with a valid pattern to remove.
+        action.setPattern( "com/sun/**/*" );
+        preRequest( action );
+        status = action.removeWhiteListPattern();
+        assertEquals( Action.INPUT, status );
+
+        // Should have no error, and 1 whitelist pattern left.
+        assertNoErrors( action );
+        assertEquals( 1, connector.getWhiteListPatterns().size() );
+        assertEquals( "Should have left 1 whitelist pattern", "javax/**/*", connector.getWhiteListPatterns().get( 0 ) );
+    }
+
+    public void testSecureActionBundle()
+        throws Exception
+    {
+        archivaConfigurationControl.replay();
+
+        action.prepare();
+        SecureActionBundle bundle = action.getSecureActionBundle();
+        assertTrue( bundle.requiresAuthentication() );
+        assertEquals( 1, bundle.getAuthorizationTuples().size() );
+    }
+
+    private void assertInitialProxyConnector( ProxyConnectorConfiguration connector )
+    {
+        assertNotNull( connector );
+        assertNotNull( connector.getBlackListPatterns() );
+        assertNotNull( connector.getWhiteListPatterns() );
+        assertNotNull( connector.getProperties() );
+
+        assertEquals( TEST_SOURCE_ID, connector.getSourceRepoId() );
+        assertEquals( TEST_TARGET_ID, connector.getTargetRepoId() );
+    }
+
+    private Configuration createInitialConfiguration()
+    {
+        Configuration config = new Configuration();
+
+        ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
+        managedRepo.setId( TEST_SOURCE_ID );
+        managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" );
+        managedRepo.setReleases( true );
+
+        config.addManagedRepository( managedRepo );
+
+        RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( TEST_TARGET_ID );
+        remoteRepo.setUrl( "http://repo1.maven.org/maven2/" );
+
+        config.addRemoteRepository( remoteRepo );
+
+        ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( TEST_SOURCE_ID );
+        connector.setTargetRepoId( TEST_TARGET_ID );
+        connector.getPolicies().put( "releases", ReleasesPolicy.IGNORED );
+        connector.getPolicies().put( "snapshots", SnapshotsPolicy.DISABLED );
+        connector.getPolicies().put( "checksum", ChecksumPolicy.FIX );
+        connector.getPolicies().put( "cache-failures", CachedFailuresPolicy.IGNORED );
+
+        config.addProxyConnector( connector );
+
+        return config;
+    }
+
+    private void expectConfigurationRequests( int requestConfigCount )
+        throws RegistryException, IndeterminateConfigurationException
+    {
+        Configuration config = createInitialConfiguration();
+
+        for ( int i = 0; i < requestConfigCount; i++ )
+        {
+            archivaConfiguration.getConfiguration();
+            archivaConfigurationControl.setReturnValue( config );
+        }
+
+        archivaConfiguration.save( config );
+    }
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        action = (EditProxyConnectorAction) lookup( Action.class.getName(), "editProxyConnectorAction" );
+
+        archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
+        archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
+        action.setArchivaConfiguration( archivaConfiguration );
+
+        /* Configuration will be requested at least 3 times. */
+        for ( int i = 0; i < 3; i++ )
+        {
+            archivaConfiguration.getConfiguration();
+            archivaConfigurationControl.setReturnValue( new Configuration() );
+        }
+    }
+}

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java?rev=582020&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java Thu Oct  4 15:29:43 2007
@@ -0,0 +1,151 @@
+package org.apache.maven.archiva.web.action.admin.connectors.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 com.opensymphony.xwork.Action;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
+import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
+import org.codehaus.plexus.registry.RegistryException;
+import org.easymock.MockControl;
+
+/**
+ * ProxyConnectorsActionTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ProxyConnectorsActionTest
+    extends AbstractWebworkTestCase
+{
+    private static final String JAVAX = "javax";
+
+    private static final String CENTRAL = "central";
+
+    private static final String CORPORATE = "corporate";
+
+    private ProxyConnectorsAction action;
+
+    private MockControl archivaConfigurationControl;
+
+    private ArchivaConfiguration archivaConfiguration;
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        action = (ProxyConnectorsAction) lookup( Action.class.getName(), "proxyConnectorsAction" );
+
+        archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
+        archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
+        action.setArchivaConfiguration( archivaConfiguration );
+    }
+
+    public void testSecureActionBundle()
+        throws Exception
+    {
+        expectConfigurationRequests( 3 );
+        archivaConfigurationControl.replay();
+
+        action.prepare();
+        SecureActionBundle bundle = action.getSecureActionBundle();
+        assertTrue( bundle.requiresAuthentication() );
+        assertEquals( 1, bundle.getAuthorizationTuples().size() );
+    }
+
+    public void testExecute()
+        throws Exception
+    {
+        expectConfigurationRequests( 3 );
+        archivaConfigurationControl.replay();
+
+        action.prepare();
+
+        String status = action.execute();
+        assertEquals( Action.SUCCESS, status );
+        assertNoErrors( action );
+        
+        assertNotNull( action.getProxyConnectorMap() );
+        assertNotNull( action.getRepoMap() );
+
+        assertEquals( 1, action.getProxyConnectorMap().size() );
+        assertEquals( 3, action.getRepoMap().size() );
+    }
+
+    private void expectConfigurationRequests( int requestConfigCount )
+        throws RegistryException, IndeterminateConfigurationException
+    {
+        Configuration config = createInitialConfiguration();
+
+        for ( int i = 0; i < requestConfigCount; i++ )
+        {
+            archivaConfiguration.getConfiguration();
+            archivaConfigurationControl.setReturnValue( config );
+        }
+
+        archivaConfiguration.save( config );
+    }
+
+    private Configuration createInitialConfiguration()
+    {
+        Configuration config = new Configuration();
+
+        ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
+        managedRepo.setId( CORPORATE );
+        managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" );
+        managedRepo.setReleases( true );
+
+        config.addManagedRepository( managedRepo );
+
+        RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( CENTRAL );
+        remoteRepo.setUrl( "http://repo1.maven.org/maven2/" );
+
+        config.addRemoteRepository( remoteRepo );
+
+        remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( JAVAX );
+        remoteRepo.setUrl( "http://download.java.net/maven/2/" );
+
+        config.addRemoteRepository( remoteRepo );
+
+        ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( CORPORATE );
+        connector.setTargetRepoId( CENTRAL );
+
+        config.addProxyConnector( connector );
+
+        connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( CORPORATE );
+        connector.setTargetRepoId( JAVAX );
+
+        config.addProxyConnector( connector );
+
+        return config;
+    }
+}

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java?rev=582020&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java Thu Oct  4 15:29:43 2007
@@ -0,0 +1,253 @@
+package org.apache.maven.archiva.web.action.admin.connectors.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 com.opensymphony.xwork.Action;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.functors.ProxyConnectorConfigurationOrderComparator;
+import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
+import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
+import org.codehaus.plexus.registry.RegistryException;
+import org.easymock.MockControl;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * SortProxyConnectorsActionTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class SortProxyConnectorsActionTest
+    extends AbstractWebworkTestCase
+{
+    private static final String JAVAX = "javax";
+
+    private static final String CENTRAL = "central";
+
+    private static final String CORPORATE = "corporate";
+
+    private static final String CODEHAUS = "codehaus";
+
+    private SortProxyConnectorsAction action;
+
+    private MockControl archivaConfigurationControl;
+
+    private ArchivaConfiguration archivaConfiguration;
+
+    public void testSecureActionBundle()
+        throws Exception
+    {
+        expectConfigurationRequests( 1 );
+        archivaConfigurationControl.replay();
+
+        SecureActionBundle bundle = action.getSecureActionBundle();
+        assertTrue( bundle.requiresAuthentication() );
+        assertEquals( 1, bundle.getAuthorizationTuples().size() );
+    }
+
+    public void testSortDown()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        action.setSource( CORPORATE );
+        action.setTarget( CENTRAL );
+        String status = action.sortDown();
+        assertEquals( Action.SUCCESS, status );
+
+        assertOrder( new String[] { JAVAX, CENTRAL, CODEHAUS } );
+    }
+
+    public void testSortDownPastEnd()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Ask the last connector to sort down (essentially a no-op)
+        action.setSource( CORPORATE );
+        action.setTarget( CODEHAUS );
+        String status = action.sortDown();
+        assertEquals( Action.SUCCESS, status );
+
+        // No order change.
+        assertOrder( new String[] { CENTRAL, JAVAX, CODEHAUS } );
+    }
+
+    public void testSortUp()
+        throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        action.setSource( CORPORATE );
+        action.setTarget( CODEHAUS );
+        String status = action.sortUp();
+        assertEquals( Action.SUCCESS, status );
+
+        assertOrder( new String[] { CENTRAL, CODEHAUS, JAVAX } );
+    }
+
+    public void testSortUpPastBeginning()
+    throws Exception
+    {
+        expectConfigurationRequests( 7 );
+        archivaConfigurationControl.replay();
+
+        // Ask the first connector to sort up (essentially a no-op)
+        action.setSource( CORPORATE );
+        action.setTarget( CENTRAL );
+        String status = action.sortUp();
+        assertEquals( Action.SUCCESS, status );
+
+        // No order change.
+        assertOrder( new String[] { CENTRAL, JAVAX, CODEHAUS } );
+    }
+
+    private void assertOrder( String[] targetRepoOrder )
+    {
+        List<ProxyConnectorConfiguration> connectors = archivaConfiguration.getConfiguration().getProxyConnectors();
+        Collections.sort( connectors, ProxyConnectorConfigurationOrderComparator.getInstance() );
+
+        for ( ProxyConnectorConfiguration connector : connectors )
+        {
+            assertEquals( "All connectors in list should have the same source id (in this test)", CORPORATE, connector
+                .getSourceRepoId() );
+        }
+
+        assertEquals( targetRepoOrder.length, connectors.size() );
+
+        int orderFailedAt = ( -1 );
+        for ( int i = 0; i < targetRepoOrder.length; i++ )
+        {
+            if ( !StringUtils.equals( targetRepoOrder[i], connectors.get( i ).getTargetRepoId() ) )
+            {
+                orderFailedAt = i;
+                break;
+            }
+        }
+
+        if ( orderFailedAt >= 0 )
+        {
+            StringBuffer msg = new StringBuffer();
+
+            msg.append( "Failed expected order of the proxy connectors <" );
+            msg.append( StringUtils.join( targetRepoOrder, ", " ) );
+            msg.append( ">, actual <" );
+
+            boolean needsComma = false;
+            for ( ProxyConnectorConfiguration proxy : connectors )
+            {
+                if ( needsComma )
+                {
+                    msg.append( ", " );
+                }
+                msg.append( proxy.getTargetRepoId() );
+                needsComma = true;
+            }
+            msg.append( "> failure at index <" ).append( orderFailedAt ).append( ">." );
+
+            fail( msg.toString() );
+        }
+    }
+
+    private Configuration createInitialConfiguration()
+    {
+        Configuration config = new Configuration();
+
+        ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
+        managedRepo.setId( CORPORATE );
+        managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" );
+        managedRepo.setReleases( true );
+        config.addManagedRepository( managedRepo );
+
+        RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( CENTRAL );
+        remoteRepo.setUrl( "http://repo1.maven.org/maven2/" );
+        config.addRemoteRepository( remoteRepo );
+
+        remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( JAVAX );
+        remoteRepo.setUrl( "http://download.java.net/maven/2/" );
+        config.addRemoteRepository( remoteRepo );
+
+        remoteRepo = new RemoteRepositoryConfiguration();
+        remoteRepo.setId( CODEHAUS );
+        remoteRepo.setUrl( "http://repository.codehaus.org/" );
+        config.addRemoteRepository( remoteRepo );
+
+        ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( CORPORATE );
+        connector.setTargetRepoId( CENTRAL );
+        connector.setOrder( 1 );
+        config.addProxyConnector( connector );
+
+        connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( CORPORATE );
+        connector.setTargetRepoId( JAVAX );
+        connector.setOrder( 2 );
+        config.addProxyConnector( connector );
+
+        connector = new ProxyConnectorConfiguration();
+        connector.setSourceRepoId( CORPORATE );
+        connector.setTargetRepoId( CODEHAUS );
+        connector.setOrder( 3 );
+        config.addProxyConnector( connector );
+
+        return config;
+    }
+
+    private void expectConfigurationRequests( int requestConfigCount )
+        throws RegistryException, IndeterminateConfigurationException
+    {
+        Configuration config = createInitialConfiguration();
+
+        for ( int i = 0; i < requestConfigCount; i++ )
+        {
+            archivaConfiguration.getConfiguration();
+            archivaConfigurationControl.setReturnValue( config );
+        }
+
+        archivaConfiguration.save( config );
+    }
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        action = (SortProxyConnectorsAction) lookup( Action.class.getName(), "sortProxyConnectorsAction" );
+
+        archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
+        archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
+        action.setArchivaConfiguration( archivaConfiguration );
+    }
+}

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/log4j.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/log4j.xml?rev=582020&r1=582019&r2=582020&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/log4j.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/log4j.xml Thu Oct  4 15:29:43 2007
@@ -12,7 +12,11 @@
 
   <!-- Help identify bugs during testing -->
   <logger name="org.apache.maven.archiva">
-    <level value="debug"/>
+    <level value="info"/>
+  </logger>
+  
+  <logger name="net.sf.ehcache">
+    <level value="warn"/>
   </logger>
 
   <logger name="org.codehaus.plexus.security">
@@ -40,7 +44,7 @@
   </logger>
 
   <root>
-    <priority value ="debug" />
+    <priority value ="info" />
     <appender-ref ref="console" />
   </root>
 

Copied: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.xml (from r581314, maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorActionTest.xml)
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.xml?p2=maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.xml&p1=maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorActionTest.xml&r1=581314&r2=582020&rev=582020&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorActionTest.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.xml Thu Oct  4 15:29:43 2007
@@ -24,22 +24,27 @@
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
       <lifecycle-handler>basic</lifecycle-handler>
     </component>
+    
     <component>
-      <role>com.opensymphony.xwork.Action</role>
-      <role-hint>configureProxyConnectorAction</role-hint>
-      <implementation>org.apache.maven.archiva.web.action.admin.connectors.proxy.ConfigureProxyConnectorAction
-      </implementation>
-      <instantiation-strategy>per-lookup</instantiation-strategy>
-      <requirements>
-        <requirement>
-          <role>org.apache.maven.archiva.policies.PreDownloadPolicy</role>
-          <field-name>preDownloadPolicyMap</field-name>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.policies.PostDownloadPolicy</role>
-          <field-name>postDownloadPolicyMap</field-name>
-        </requirement>
-      </requirements>
-    </component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>    
+    
   </components>
 </plexus>

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml?rev=582020&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml Thu Oct  4 15:29:43 2007
@@ -0,0 +1,50 @@
+<!--
+  ~ 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.
+  -->
+
+<plexus>
+  <components>
+    <component>
+      <role>org.codehaus.plexus.logging.LoggerManager</role>
+      <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
+      <lifecycle-handler>basic</lifecycle-handler>
+    </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>    
+    
+  </components>
+</plexus>

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml