]> source.dussan.org Git - archiva.git/blob
04bac9f4506a8822105c7afb1c88b21c3794a176
[archiva.git] /
1 package org.apache.maven.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
24 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
25 import org.apache.maven.archiva.configuration.Configuration;
26 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
27 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
28 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
29 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
30 import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
31 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
32 import org.codehaus.plexus.registry.RegistryException;
33 import org.easymock.MockControl;
34
35 /**
36  * DeleteProxyConnectorActionTest 
37  *
38  * @version $Id$
39  */
40 public class DeleteProxyConnectorActionTest
41     extends AbstractWebworkTestCase
42 {
43     private static final String TEST_TARGET_ID = "central";
44
45     private static final String TEST_SOURCE_ID = "corporate";
46
47     private DeleteProxyConnectorAction action;
48
49     private MockControl archivaConfigurationControl;
50
51     private ArchivaConfiguration archivaConfiguration;
52
53     public void testConfirmDelete()
54         throws Exception
55     {
56         expectConfigurationRequests( 1 );
57         archivaConfigurationControl.replay();
58
59         // Show the confirm the delete of proxy connector screen.
60         preRequest( action );
61         action.setSource( TEST_SOURCE_ID );
62         action.setTarget( TEST_TARGET_ID );
63         String status = action.confirmDelete();
64         assertEquals( Action.INPUT, status );
65         assertNoErrors( action );
66     }
67
68     public void testConfirmDeleteBadSourceOrTarget()
69         throws Exception
70     {
71         expectConfigurationRequests( 4 );
72         archivaConfigurationControl.replay();
73
74         // Attempt to show the confirm delete screen, but provide 
75         // a bad source id or target id to actually delete
76
77         preRequest( action );
78         action.setSource( "bad-source" ); // id doesn't exist.
79         action.setTarget( "bad-target" ); // id doesn't exist.
80         String status = action.confirmDelete();
81         // Should have resulted in an error.
82         assertEquals( Action.ERROR, status );
83         assertHasErrors( action );
84
85         preRequest( action );
86         action.setSource( "bad" ); // Bad doesn't exist.
87         action.setTarget( TEST_TARGET_ID );
88         status = action.confirmDelete();
89         // Should have resulted in an error.
90         assertEquals( Action.ERROR, status );
91         assertHasErrors( action );
92
93         preRequest( action );
94         action.setSource( TEST_SOURCE_ID );
95         action.setTarget( "bad" ); // Bad doesn't exist.
96         status = action.confirmDelete();
97         // Should have resulted in an error.
98         assertEquals( Action.ERROR, status );
99         assertHasErrors( action );
100     }
101
102     public void testConfirmDeleteNoSourceOrTarget()
103         throws Exception
104     {
105         expectConfigurationRequests( 1 );
106         archivaConfigurationControl.replay();
107
108         // Attempt to show the confirm delete screen, but don't provide 
109         // the source id or target id to actually delete
110
111         preRequest( action );
112         action.setSource( null ); // No source Id.
113         action.setTarget( null ); // No target Id.
114         String status = action.confirmDelete();
115         // Should have resulted in an error.
116         assertEquals( Action.ERROR, status );
117         assertHasErrors( action );
118
119         preRequest( action );
120         action.setSource( TEST_SOURCE_ID );
121         action.setTarget( null ); // No target Id.
122         status = action.confirmDelete();
123         // Should have resulted in an error.
124         assertEquals( Action.ERROR, status );
125         assertHasErrors( action );
126
127         preRequest( action );
128         action.setSource( null ); // No source Id.
129         action.setTarget( TEST_TARGET_ID );
130         status = action.confirmDelete();
131         // Should have resulted in an error.
132         assertEquals( Action.ERROR, status );
133         assertHasErrors( action );
134     }
135
136     public void testDelete()
137         throws Exception
138     {
139         expectConfigurationRequests( 5 );
140         archivaConfigurationControl.replay();
141
142         // Show the confirm the delete of proxy connector screen.
143         preRequest( action );
144         action.setSource( TEST_SOURCE_ID );
145         action.setTarget( TEST_TARGET_ID );
146         String status = action.confirmDelete();
147         assertEquals( Action.INPUT, status );
148         assertNoErrors( action );
149
150         // Perform the delete.
151         preRequest( action );
152         status = action.delete();
153         assertEquals( Action.SUCCESS, status );
154         assertNoErrors( action );
155         assertHasMessages( action );
156
157         // Test the configuration.
158         assertEquals( 0, archivaConfiguration.getConfiguration().getProxyConnectors().size() );
159     }
160
161     public void testSecureActionBundle()
162         throws Exception
163     {
164         expectConfigurationRequests( 1 );
165         archivaConfigurationControl.replay();
166
167         SecureActionBundle bundle = action.getSecureActionBundle();
168         assertTrue( bundle.requiresAuthentication() );
169         assertEquals( 1, bundle.getAuthorizationTuples().size() );
170     }
171
172     private Configuration createInitialConfiguration()
173     {
174         Configuration config = new Configuration();
175
176         ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
177         managedRepo.setId( TEST_SOURCE_ID );
178         managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" );
179         managedRepo.setReleases( true );
180
181         config.addManagedRepository( managedRepo );
182
183         RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration();
184         remoteRepo.setId( TEST_TARGET_ID );
185         remoteRepo.setUrl( "http://repo1.maven.org/maven2/" );
186
187         config.addRemoteRepository( remoteRepo );
188
189         ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
190         connector.setSourceRepoId( TEST_SOURCE_ID );
191         connector.setTargetRepoId( TEST_TARGET_ID );
192
193         config.addProxyConnector( connector );
194
195         return config;
196     }
197
198     private void expectConfigurationRequests( int requestConfigCount )
199         throws RegistryException, IndeterminateConfigurationException
200     {
201         Configuration config = createInitialConfiguration();
202
203         for ( int i = 0; i < requestConfigCount; i++ )
204         {
205             archivaConfiguration.getConfiguration();
206             archivaConfigurationControl.setReturnValue( config );
207         }
208
209         archivaConfiguration.save( config );
210     }
211
212     @Override
213     protected void setUp()
214         throws Exception
215     {
216         super.setUp();
217
218         //action = (DeleteProxyConnectorAction) lookup( Action.class.getName(), "deleteProxyConnectorAction" );
219
220         action = (DeleteProxyConnectorAction) getActionProxy( "/admin/deleteProxyConnector.action" ).getAction();
221
222         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
223         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
224         action.setArchivaConfiguration( archivaConfiguration );
225     }
226 }