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