]> source.dussan.org Git - archiva.git/blob
7a90f787807120e5ecbda09ac93e609ab9453737
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.repositories;
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 java.util.Collections;
23
24 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
25 import org.apache.maven.archiva.configuration.Configuration;
26 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
27 import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
28 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
29 import org.codehaus.redback.integration.interceptor.SecureActionException;
30 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
31 import org.easymock.MockControl;
32
33 import com.meterware.servletunit.ServletRunner;
34 import com.meterware.servletunit.ServletUnitClient;
35 import com.opensymphony.xwork2.Action;
36
37 /**
38  * RepositoryGroupsActionTest
39  * 
40  * @version
41  */
42 public class RepositoryGroupsActionTest 
43     extends PlexusInSpringTestCase
44 {
45     private static final String REPO_GROUP_ID = "repo-group-ident";
46         
47     private static final String REPO1_ID = "managed-repo-ident-1";
48         
49     private static final String REPO2_ID = "managed-repo-ident-2";
50         
51     private RepositoryGroupsAction action;
52         
53     private MockControl archivaConfigurationControl;
54
55     private ArchivaConfiguration archivaConfiguration;
56
57     protected void setUp()
58         throws Exception
59     {
60         super.setUp();
61         
62         action = (RepositoryGroupsAction) lookup( Action.class.getName(), "repositoryGroupsAction" );
63             
64         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
65         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
66         action.setArchivaConfiguration( archivaConfiguration );
67     }
68
69     public void testSecureActionBundle()
70         throws SecureActionException
71     {
72         archivaConfiguration.getConfiguration();
73         archivaConfigurationControl.setReturnValue( new Configuration() );
74         archivaConfigurationControl.replay();
75         
76         action.prepare();
77         SecureActionBundle bundle = action.getSecureActionBundle();
78         assertTrue( bundle.requiresAuthentication() );
79         assertEquals( 1, bundle.getAuthorizationTuples().size() );
80     }
81
82     public void testAddRepositoryGroup()
83         throws Exception
84     {
85         Configuration configuration = new Configuration();
86         archivaConfiguration.getConfiguration();
87         archivaConfigurationControl.setReturnValue( configuration, 2 );
88         
89         archivaConfiguration.save( configuration );
90         archivaConfigurationControl.replay();
91         
92         action.prepare();
93         RepositoryGroupConfiguration repositoryGroup = action.getRepositoryGroup();
94         repositoryGroup.setId( REPO_GROUP_ID );
95         
96         String status = action.addRepositoryGroup();
97         assertEquals( Action.SUCCESS, status );
98         
99         assertEquals( Collections.singletonList( repositoryGroup ), configuration.getRepositoryGroups() );
100         
101         archivaConfigurationControl.verify();
102     }
103         
104     public void testAddEmptyRepositoryGroup()
105         throws Exception
106     {
107         Configuration configuration = new Configuration();
108         archivaConfiguration.getConfiguration();
109         archivaConfigurationControl.setReturnValue( configuration, 2 );
110         
111         archivaConfiguration.save( configuration );
112         
113         archivaConfigurationControl.replay();
114         
115         action.prepare();
116             
117         String status = action.addRepositoryGroup();
118         assertEquals( Action.ERROR, status );
119             
120         assertEquals( 0, configuration.getRepositoryGroups().size() );
121     }
122         
123     public void testAddDuplicateRepositoryGroup()
124         throws Exception
125     {
126         Configuration configuration = new Configuration();
127         archivaConfiguration.getConfiguration();
128         archivaConfigurationControl.setReturnValue( configuration, 3 );
129
130         archivaConfiguration.save( configuration );
131         
132         archivaConfigurationControl.replay();
133         
134         action.prepare();
135         RepositoryGroupConfiguration repositoryGroup = action.getRepositoryGroup();
136         repositoryGroup.setId( REPO_GROUP_ID );
137         
138         String status = action.addRepositoryGroup();
139         assertEquals( Action.SUCCESS, status );
140         
141         assertEquals( Collections.singletonList( repositoryGroup ), configuration.getRepositoryGroups() );
142                     
143         repositoryGroup.setId( REPO_GROUP_ID );
144         status = action.addRepositoryGroup();
145             
146         assertEquals( Action.ERROR, status );
147         assertEquals( Collections.singletonList( repositoryGroup ), configuration.getRepositoryGroups() );
148     }
149
150     public void testGetRepositoryGroups()
151         throws Exception
152     {
153         ServletRunner sr = new ServletRunner();
154         ServletUnitClient sc = sr.newClient();
155
156         Configuration configuration = createInitialConfiguration();
157         
158         archivaConfiguration.getConfiguration();
159         archivaConfigurationControl.setReturnValue( configuration );
160         archivaConfigurationControl.replay();
161         
162         action.setServletRequest( sc.newInvocation( "http://localhost/admin/repositoryGroups.action" ).getRequest() );
163         action.prepare();
164         String result = action.execute();
165         assertEquals( Action.SUCCESS, result );
166         
167         assertEquals( "http://localhost:0/repository", action.getBaseUrl() );
168         
169         assertNotNull( action.getRepositoryGroups() );
170         assertEquals( 1, action.getRepositoryGroups().size() );
171         assertEquals( 2, action.getManagedRepositories().size() );
172         
173         RepositoryGroupConfiguration repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
174         
175         assertEquals( 1, repoGroup.getRepositories().size() );
176         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
177         assertNotNull( action.getGroupToRepositoryMap() );
178         assertEquals( 1, action.getGroupToRepositoryMap().size() );
179         
180         java.util.List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
181         assertEquals( 1, repos.size() );
182         assertEquals( REPO2_ID, repos.get( 0 ) );
183     }
184         
185     public void testAddRepositoryToGroup()
186         throws Exception
187     {
188         Configuration configuration = createInitialConfiguration();
189         
190         archivaConfiguration.getConfiguration();
191         archivaConfigurationControl.setReturnValue( configuration, 6 );
192         archivaConfiguration.save( configuration );
193         archivaConfigurationControl.replay();
194         
195         action.prepare();
196         String result = action.execute();
197         assertEquals( Action.SUCCESS, result );
198         
199         assertNotNull( action.getRepositoryGroups() );
200         assertEquals( 1, action.getRepositoryGroups().size() );
201         assertEquals( 2, action.getManagedRepositories().size() );
202         
203         RepositoryGroupConfiguration repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
204         assertEquals( 1 , repoGroup.getRepositories().size() );
205         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
206         
207         assertNotNull( action.getGroupToRepositoryMap() );
208         assertEquals( 1, action.getGroupToRepositoryMap().size() );
209         
210         java.util.List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
211         assertEquals( 1, repos.size() );
212         assertEquals( REPO2_ID, repos.get( 0 ) );
213         
214         action.setRepoGroupId( REPO_GROUP_ID );
215         action.setRepoId( REPO2_ID );
216         
217         result = action.addRepositoryToGroup();
218         assertEquals( Action.SUCCESS, result );
219         
220         action.prepare();
221         result = action.execute();
222         assertEquals( Action.SUCCESS, result );
223      
224         assertEquals( 1, action.getRepositoryGroups().size() );
225         repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
226         assertEquals( 2, repoGroup.getRepositories().size() );
227         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
228         assertEquals( REPO2_ID, repoGroup.getRepositories().get( 1 ) );
229         
230         assertEquals( 0, action.getGroupToRepositoryMap().size() );
231         assertNull( action.getGroupToRepositoryMap().get( repoGroup.getId() ) );
232     }
233
234     public void testRemoveRepositoryFromGroup()
235         throws Exception
236     {
237         Configuration configuration = createInitialConfiguration();
238         
239         archivaConfiguration.getConfiguration();
240         archivaConfigurationControl.setReturnValue( configuration, 6 );
241         archivaConfiguration.save( configuration );
242         archivaConfigurationControl.replay();
243         
244         action.prepare();
245         String result = action.execute();
246         assertEquals( Action.SUCCESS, result );
247         
248         assertNotNull( action.getRepositoryGroups() );
249         assertEquals( 1, action.getRepositoryGroups().size() );
250         assertEquals( 2, action.getManagedRepositories().size() );
251         
252         RepositoryGroupConfiguration repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
253         assertEquals( 1 , repoGroup.getRepositories().size() );
254         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
255         
256         assertNotNull( action.getGroupToRepositoryMap() );
257         assertEquals( 1, action.getGroupToRepositoryMap().size() );
258         
259         java.util.List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
260         assertEquals( 1, repos.size() );
261         assertEquals( REPO2_ID, repos.get( 0 ) );
262         
263         action.setRepoGroupId( REPO_GROUP_ID );
264         action.setRepoId( REPO1_ID );
265         
266         result = action.removeRepositoryFromGroup();
267         assertEquals( Action.SUCCESS, result );
268         
269         action.prepare();
270         result = action.execute();
271         assertEquals( Action.SUCCESS, result );
272         
273         repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
274         assertEquals( 0, repoGroup.getRepositories().size() );
275         
276         assertNotNull( action.getGroupToRepositoryMap() );
277         assertEquals( 1, action.getGroupToRepositoryMap().size() );
278         
279         repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
280         assertEquals( 2, repos.size() );
281         assertEquals( REPO1_ID, repos.get( 0 ) );
282         assertEquals( REPO2_ID, repos.get( 1 ) );
283     }
284
285     public void testAddDuplicateRepositoryToGroup()
286         throws Exception
287     {
288         Configuration configuration = createInitialConfiguration();
289         
290         archivaConfiguration.getConfiguration();
291         archivaConfigurationControl.setReturnValue( configuration, 6 );
292         archivaConfiguration.save( configuration );
293         archivaConfigurationControl.replay();
294         
295         action.prepare();
296         String result = action.execute();
297         assertEquals( Action.SUCCESS, result );
298         
299         assertNotNull( action.getRepositoryGroups() );
300         assertEquals( 1, action.getRepositoryGroups().size() );
301         assertEquals( 2, action.getManagedRepositories().size() );
302         
303         RepositoryGroupConfiguration repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
304         assertEquals( 1 , repoGroup.getRepositories().size() );
305         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
306         
307         assertNotNull( action.getGroupToRepositoryMap() );
308         assertEquals( 1, action.getGroupToRepositoryMap().size() );
309         
310         java.util.List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
311         assertEquals( 1, repos.size() );
312         assertEquals( REPO2_ID, repos.get( 0 ) );
313         
314         action.setRepoGroupId( REPO_GROUP_ID );
315         action.setRepoId( REPO1_ID );
316         
317         result = action.addRepositoryToGroup();
318         assertEquals( Action.ERROR, result );
319     }
320         
321     public void testRemoveRepositoryNotInGroup()
322         throws Exception
323     {
324         Configuration configuration = createInitialConfiguration();
325         
326         archivaConfiguration.getConfiguration();
327         archivaConfigurationControl.setReturnValue( configuration, 6 );
328         archivaConfiguration.save( configuration );
329         archivaConfigurationControl.replay();
330         
331         action.prepare();
332         String result = action.execute();
333         assertEquals( Action.SUCCESS, result );
334         
335         assertNotNull( action.getRepositoryGroups() );
336         assertEquals( 1, action.getRepositoryGroups().size() );
337         assertEquals( 2, action.getManagedRepositories().size() );
338         
339         RepositoryGroupConfiguration repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID );
340         assertEquals( 1 , repoGroup.getRepositories().size() );
341         assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) );
342         
343         assertNotNull( action.getGroupToRepositoryMap() );
344         assertEquals( 1, action.getGroupToRepositoryMap().size() );
345         
346         java.util.List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() );
347         assertEquals( 1, repos.size() );
348         assertEquals( REPO2_ID, repos.get( 0 ) );
349         
350         action.setRepoGroupId( REPO_GROUP_ID );
351         action.setRepoId( REPO2_ID );
352         
353         result = action.removeRepositoryFromGroup();
354         assertEquals( Action.ERROR, result );
355     }
356
357     private Configuration createInitialConfiguration()
358     {
359         Configuration config = new Configuration();
360                 
361         ManagedRepositoryConfiguration managedRepo1 = new ManagedRepositoryConfiguration();
362         managedRepo1.setId( REPO1_ID );
363         
364         config.addManagedRepository( managedRepo1 );
365         
366         ManagedRepositoryConfiguration managedRepo2 = new ManagedRepositoryConfiguration();
367         managedRepo2.setId( REPO2_ID );
368         
369         config.addManagedRepository( managedRepo2 );
370         
371         RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration();
372         repoGroup.setId( REPO_GROUP_ID );
373         repoGroup.addRepository( REPO1_ID );
374                 
375         config.addRepositoryGroup( repoGroup );
376                 
377         return config;
378     }
379 }