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