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