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