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