From: James William Dumay Date: Tue, 19 Aug 2008 12:05:38 +0000 (+0000) Subject: MRM-541 - convenient way to take Archiva proxies "offline" X-Git-Tag: archiva-1.2-M1~73^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=10d636365968af424f2774440d0ba1b9f5df39db;p=archiva.git MRM-541 - convenient way to take Archiva proxies "offline" * Unit tests for actions git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-541@687032 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java new file mode 100644 index 000000000..b8b900666 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java @@ -0,0 +1,219 @@ +/* + * Copyright 2008 jdumay. + * + * Licensed 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. + * under the License. + */ + +package org.apache.maven.archiva.web.action.admin.connectors.proxy; + +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; + +public class DisableProxyConnectorActionTest extends AbstractWebworkTestCase +{ + private static final String TEST_TARGET_ID = "central"; + + private static final String TEST_SOURCE_ID = "corporate"; + + private DisableProxyConnectorAction action; + + private MockControl archivaConfigurationControl; + + private ArchivaConfiguration archivaConfiguration; + + public void testConfirmDisableBadSourceOrTarget() + throws Exception + { + expectConfigurationRequests( 4 ); + archivaConfigurationControl.replay(); + + // Attempt to show the confirm disable screen, but provide + // a bad source id or target id to actually delete + + preRequest( action ); + action.setSource( "bad-source" ); // id doesn't exist. + action.setTarget( "bad-target" ); // id doesn't exist. + String status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( "bad" ); // Bad doesn't exist. + action.setTarget( TEST_TARGET_ID ); + status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( "bad" ); // Bad doesn't exist. + status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + } + + public void testConfirmDisableNoSourceOrTarget() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + // Attempt to show the confirm disable screen, but don't provide + // the source id or target id to actually delete + + preRequest( action ); + action.setSource( null ); // No source Id. + action.setTarget( null ); // No target Id. + String status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( null ); // No target Id. + status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( null ); // No source Id. + action.setTarget( TEST_TARGET_ID ); + status = action.confirmDisable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + } + + public void testDelete() + throws Exception + { + expectConfigurationRequests( 5 ); + archivaConfigurationControl.replay(); + + // Show the confirm the disable of proxy connector screen. + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( TEST_TARGET_ID ); + String status = action.confirmDisable(); + assertEquals( Action.INPUT, status ); + assertNoErrors( action ); + + // Perform the disable. + preRequest( action ); + status = action.disable(); + assertEquals( Action.SUCCESS, status ); + assertNoErrors( action ); + assertHasMessages( action ); + + // Test the configuration. + assertEquals( 1, archivaConfiguration.getConfiguration().getProxyConnectors().size() ); + ProxyConnectorConfiguration config = (ProxyConnectorConfiguration)archivaConfiguration.getConfiguration().getProxyConnectors().get(0); + assertTrue(config.isDisabled()); + } + + public void testSecureActionBundle() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + SecureActionBundle bundle = action.getSecureActionBundle(); + assertTrue( bundle.requiresAuthentication() ); + assertEquals( 1, bundle.getAuthorizationTuples().size() ); + } + + public void testConfirmEnable() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + // Show the confirm the disable of proxy connector screen. + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( TEST_TARGET_ID ); + String status = action.confirmDisable(); + assertEquals( Action.INPUT, status ); + assertNoErrors( action ); + } + + 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.setDisabled(false); + + 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 = (DisableProxyConnectorAction) lookup( Action.class.getName(), "disableProxyConnectorAction" ); + + archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); + archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); + action.setArchivaConfiguration( archivaConfiguration ); + } +} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java new file mode 100644 index 000000000..16544fd10 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java @@ -0,0 +1,218 @@ +/* + * Copyright 2008 jdumay. + * + * Licensed 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. + * under the License. + */ + +package org.apache.maven.archiva.web.action.admin.connectors.proxy; + +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; + +public class EnableProxyConnectorActionTest extends AbstractWebworkTestCase +{ + private static final String TEST_TARGET_ID = "central"; + + private static final String TEST_SOURCE_ID = "corporate"; + + private EnableProxyConnectorAction action; + + private MockControl archivaConfigurationControl; + + private ArchivaConfiguration archivaConfiguration; + + public void testConfirmDeleteBadSourceOrTarget() + throws Exception + { + expectConfigurationRequests( 4 ); + archivaConfigurationControl.replay(); + + // Attempt to show the confirm enable screen, but provide + // a bad source id or target id to actually enable + + preRequest( action ); + action.setSource( "bad-source" ); // id doesn't exist. + action.setTarget( "bad-target" ); // id doesn't exist. + String status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( "bad" ); // Bad doesn't exist. + action.setTarget( TEST_TARGET_ID ); + status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( "bad" ); // Bad doesn't exist. + status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + } + + public void testConfirmEnableNoSourceOrTarget() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + // Attempt to show the confirm enable screen, but don't provide + // the source id or target id to actually delete + + preRequest( action ); + action.setSource( null ); // No source Id. + action.setTarget( null ); // No target Id. + String status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( null ); // No target Id. + status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + + preRequest( action ); + action.setSource( null ); // No source Id. + action.setTarget( TEST_TARGET_ID ); + status = action.confirmEnable(); + // Should have resulted in an error. + assertEquals( Action.ERROR, status ); + assertHasErrors( action ); + } + + public void testEnable() + throws Exception + { + expectConfigurationRequests( 5 ); + archivaConfigurationControl.replay(); + + // Show the confirm the enable of proxy connector screen. + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( TEST_TARGET_ID ); + String status = action.confirmEnable(); + assertEquals( Action.INPUT, status ); + assertNoErrors( action ); + + // Perform the delete. + preRequest( action ); + status = action.enable(); + assertEquals( Action.SUCCESS, status ); + assertNoErrors( action ); + assertHasMessages( action ); + + // Test the configuration. + assertEquals( 1, archivaConfiguration.getConfiguration().getProxyConnectors().size() ); + ProxyConnectorConfiguration config = (ProxyConnectorConfiguration)archivaConfiguration.getConfiguration().getProxyConnectors().get(0); + assertFalse(config.isDisabled()); + } + + public void testSecureActionBundle() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + SecureActionBundle bundle = action.getSecureActionBundle(); + assertTrue( bundle.requiresAuthentication() ); + assertEquals( 1, bundle.getAuthorizationTuples().size() ); + } + + public void testConfirmEnable() + throws Exception + { + expectConfigurationRequests( 1 ); + archivaConfigurationControl.replay(); + + // Show the confirm the enable of proxy connector screen. + preRequest( action ); + action.setSource( TEST_SOURCE_ID ); + action.setTarget( TEST_TARGET_ID ); + String status = action.confirmEnable(); + assertEquals( Action.INPUT, status ); + assertNoErrors( action ); + } + + 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.setDisabled(true); + + 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 = (EnableProxyConnectorAction) lookup( Action.class.getName(), "enableProxyConnectorAction" ); + + archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); + archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); + action.setArchivaConfiguration( archivaConfiguration ); + } +}