]> source.dussan.org Git - archiva.git/blob
783cea8e70b8589eb2365838e54a089f22873e5c
[archiva.git] /
1 package org.apache.archiva.web.action.admin.connectors.proxy;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import com.opensymphony.xwork2.Action;
23 import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin;
24 import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin;
25 import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin;
26 import org.apache.archiva.configuration.ArchivaConfiguration;
27 import org.apache.archiva.configuration.Configuration;
28 import org.apache.archiva.configuration.IndeterminateConfigurationException;
29 import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
30 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
31 import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
32 import org.apache.archiva.web.action.AbstractWebworkTestCase;
33 import org.apache.archiva.redback.integration.interceptor.SecureActionBundle;
34 import org.easymock.MockControl;
35
36 /**
37  * DeleteProxyConnectorActionTest
38  *
39  * @version $Id$
40  */
41 public class DeleteProxyConnectorActionTest
42     extends AbstractWebworkTestCase
43 {
44     private static final String TEST_TARGET_ID = "central";
45
46     private static final String TEST_SOURCE_ID = "corporate";
47
48     private DeleteProxyConnectorAction action;
49
50     private MockControl archivaConfigurationControl;
51
52     private ArchivaConfiguration archivaConfiguration;
53
54     @Override
55     protected void setUp()
56         throws Exception
57     {
58         super.setUp();
59
60         action = (DeleteProxyConnectorAction) getActionProxy( "/admin/deleteProxyConnector.action" ).getAction();
61
62         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
63         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
64         ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration(
65             archivaConfiguration );
66         ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration(
67             archivaConfiguration );
68         ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration(
69             archivaConfiguration );
70     }
71
72     public void testConfirmDelete()
73         throws Exception
74     {
75         expectConfigurationRequests( 1 );
76         archivaConfigurationControl.replay();
77
78         // Show the confirm the delete of proxy connector screen.
79         preRequest( action );
80         action.setSource( TEST_SOURCE_ID );
81         action.setTarget( TEST_TARGET_ID );
82         String status = action.confirmDelete();
83         assertEquals( Action.INPUT, status );
84         assertNoErrors( action );
85     }
86
87     public void testConfirmDeleteBadSourceOrTarget()
88         throws Exception
89     {
90         expectConfigurationRequests( 4 );
91         archivaConfigurationControl.replay();
92
93         // Attempt to show the confirm delete screen, but provide
94         // a bad source id or target id to actually delete
95
96         preRequest( action );
97         action.setSource( "bad-source" ); // id doesn't exist.
98         action.setTarget( "bad-target" ); // id doesn't exist.
99         String status = action.confirmDelete();
100         // Should have resulted in an error.
101         assertEquals( Action.ERROR, status );
102         assertHasErrors( action );
103
104         preRequest( action );
105         action.setSource( "bad" ); // Bad doesn't exist.
106         action.setTarget( TEST_TARGET_ID );
107         status = action.confirmDelete();
108         // Should have resulted in an error.
109         assertEquals( Action.ERROR, status );
110         assertHasErrors( action );
111
112         preRequest( action );
113         action.setSource( TEST_SOURCE_ID );
114         action.setTarget( "bad" ); // Bad doesn't exist.
115         status = action.confirmDelete();
116         // Should have resulted in an error.
117         assertEquals( Action.ERROR, status );
118         assertHasErrors( action );
119     }
120
121     public void testConfirmDeleteNoSourceOrTarget()
122         throws Exception
123     {
124         expectConfigurationRequests( 1 );
125         archivaConfigurationControl.replay();
126
127         // Attempt to show the confirm delete screen, but don't provide
128         // the source id or target id to actually delete
129
130         preRequest( action );
131         action.setSource( null ); // No source Id.
132         action.setTarget( null ); // No target Id.
133         String status = action.confirmDelete();
134         // Should have resulted in an error.
135         assertEquals( Action.ERROR, status );
136         assertHasErrors( action );
137
138         preRequest( action );
139         action.setSource( TEST_SOURCE_ID );
140         action.setTarget( null ); // No target Id.
141         status = action.confirmDelete();
142         // Should have resulted in an error.
143         assertEquals( Action.ERROR, status );
144         assertHasErrors( action );
145
146         preRequest( action );
147         action.setSource( null ); // No source Id.
148         action.setTarget( TEST_TARGET_ID );
149         status = action.confirmDelete();
150         // Should have resulted in an error.
151         assertEquals( Action.ERROR, status );
152         assertHasErrors( action );
153     }
154
155     public void testDelete()
156         throws Exception
157     {
158         expectConfigurationRequests( 5 );
159         archivaConfigurationControl.replay();
160
161         // Show the confirm the delete of proxy connector screen.
162         preRequest( action );
163         action.setSource( TEST_SOURCE_ID );
164         action.setTarget( TEST_TARGET_ID );
165         String status = action.confirmDelete();
166         assertEquals( Action.INPUT, status );
167         assertNoErrors( action );
168
169         // Perform the delete.
170         preRequest( action );
171         status = action.delete();
172         assertEquals( Action.SUCCESS, status );
173         assertNoErrors( action );
174         assertHasMessages( action );
175
176         // Test the configuration.
177         assertEquals( 0, archivaConfiguration.getConfiguration().getProxyConnectors().size() );
178     }
179
180     public void testSecureActionBundle()
181         throws Exception
182     {
183         expectConfigurationRequests( 1 );
184         archivaConfigurationControl.replay();
185
186         SecureActionBundle bundle = action.getSecureActionBundle();
187         assertTrue( bundle.requiresAuthentication() );
188         assertEquals( 1, bundle.getAuthorizationTuples().size() );
189     }
190
191     private Configuration createInitialConfiguration()
192     {
193         Configuration config = new Configuration();
194
195         ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
196         managedRepo.setId( TEST_SOURCE_ID );
197         managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" );
198         managedRepo.setReleases( true );
199
200         config.addManagedRepository( managedRepo );
201
202         RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration();
203         remoteRepo.setId( TEST_TARGET_ID );
204         remoteRepo.setUrl( "http://repo1.maven.org/maven2/" );
205
206         config.addRemoteRepository( remoteRepo );
207
208         ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
209         connector.setSourceRepoId( TEST_SOURCE_ID );
210         connector.setTargetRepoId( TEST_TARGET_ID );
211
212         config.addProxyConnector( connector );
213
214         return config;
215     }
216
217     private void expectConfigurationRequests( int requestConfigCount )
218         throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException
219     {
220         Configuration config = createInitialConfiguration();
221
222         for ( int i = 0; i < requestConfigCount; i++ )
223         {
224             archivaConfiguration.getConfiguration();
225             archivaConfigurationControl.setReturnValue( config );
226         }
227
228         archivaConfiguration.save( config );
229     }
230
231 }