]> source.dussan.org Git - archiva.git/blob
6cd171ff6a442723ebccd906b25ec21e23d29a68
[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.opensymphony.xwork.Action;
23 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
24 import org.apache.maven.archiva.configuration.Configuration;
25 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
26 import org.codehaus.plexus.PlexusTestCase;
27 import org.codehaus.plexus.redback.role.RoleManager;
28 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
29 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
30 import org.easymock.MockControl;
31
32 import java.util.Collections;
33
34 /**
35  * Test the repositories action returns the correct data.
36  */
37 public class ConfigureRepositoryActionTest
38     extends PlexusTestCase
39 {
40     private ConfigureRepositoryAction action;
41
42     private RoleManager roleManager;
43
44     private MockControl roleManagerControl;
45
46     private MockControl archivaConfigurationControl;
47
48     private ArchivaConfiguration archivaConfiguration;
49
50     private static final String REPO_ID = "repo-ident";
51
52     protected void setUp()
53         throws Exception
54     {
55         super.setUp();
56
57         // TODO: purely to quiet logging - shouldn't be needed
58         String appserverBase = getTestFile( "target/appserver-base" ).getAbsolutePath();
59         System.setProperty( "appserver.base", appserverBase );
60         action = (ConfigureRepositoryAction) lookup( Action.class.getName(), "configureRepositoryAction" );
61
62         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
63         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
64         action.setArchivaConfiguration( archivaConfiguration );
65
66         roleManagerControl = MockControl.createControl( RoleManager.class );
67         roleManager = (RoleManager) roleManagerControl.getMock();
68         action.setRoleManager( roleManager );
69     }
70
71     public void testAddRepositoryInitialPage()
72         throws Exception
73     {
74         archivaConfiguration.getConfiguration();
75         archivaConfigurationControl.setReturnValue( new Configuration() );
76         archivaConfigurationControl.replay();
77
78         action.prepare();
79         assertNull( action.getRepoid() );
80         assertNull( action.getMode() );
81         AdminRepositoryConfiguration configuration = action.getRepository();
82         assertNotNull( configuration );
83         assertNull( configuration.getId() );
84         // check all booleans are false
85         assertFalse( configuration.isDeleteReleasedSnapshots() );
86         assertFalse( configuration.isIndexed() );
87         assertFalse( configuration.isReleases() );
88         assertFalse( configuration.isSnapshots() );
89
90         String status = action.add();
91         assertEquals( Action.INPUT, status );
92
93         // check defaults
94         assertFalse( configuration.isDeleteReleasedSnapshots() );
95         assertTrue( configuration.isIndexed() );
96         assertTrue( configuration.isReleases() );
97         assertFalse( configuration.isSnapshots() );
98     }
99
100     public void testAddRepository()
101         throws Exception
102     {
103         // TODO: should be in the business model
104         roleManager.createTemplatedRole( "archiva-repository-manager", REPO_ID );
105         roleManager.createTemplatedRole( "archiva-repository-observer", REPO_ID );
106
107         roleManagerControl.replay();
108
109         Configuration configuration = new Configuration();
110         archivaConfiguration.getConfiguration();
111         archivaConfigurationControl.setReturnValue( configuration );
112         archivaConfiguration.getConfiguration();
113         archivaConfigurationControl.setReturnValue( configuration );
114
115         archivaConfiguration.save( configuration );
116
117         archivaConfigurationControl.replay();
118
119         action.prepare();
120         action.setMode( "add" );
121         AdminRepositoryConfiguration repository = action.getRepository();
122         populateRepository( repository );
123
124         String status = action.save();
125         assertEquals( Action.SUCCESS, status );
126
127         assertEquals( configuration.getManagedRepositories(), Collections.singletonList( repository ) );
128
129         roleManagerControl.verify();
130         archivaConfigurationControl.verify();
131     }
132
133     public void testEditRepositoryInitialPage()
134         throws Exception
135     {
136         Configuration configuration = createConfigurationForEditing();
137
138         archivaConfiguration.getConfiguration();
139         archivaConfigurationControl.setReturnValue( configuration );
140         archivaConfigurationControl.replay();
141
142         action.setRepoid( REPO_ID );
143
144         action.prepare();
145         assertEquals( REPO_ID, action.getRepoid() );
146         assertNull( action.getMode() );
147         AdminRepositoryConfiguration repository = action.getRepository();
148         assertNotNull( repository );
149         assertRepositoryEquals( repository, createRepository() );
150
151         String status = action.edit();
152         assertEquals( Action.INPUT, status );
153         repository = action.getRepository();
154         assertRepositoryEquals( repository, createRepository() );
155     }
156
157     private void assertRepositoryEquals( ManagedRepositoryConfiguration expectedRepository,
158                                          ManagedRepositoryConfiguration actualRepository )
159     {
160         assertEquals( expectedRepository.getDaysOlder(), actualRepository.getDaysOlder() );
161         assertEquals( expectedRepository.getId(), actualRepository.getId() );
162         assertEquals( expectedRepository.getIndexDir(), actualRepository.getIndexDir() );
163         assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() );
164         assertEquals( expectedRepository.getLocation(), actualRepository.getLocation() );
165         assertEquals( expectedRepository.getName(), actualRepository.getName() );
166         assertEquals( expectedRepository.getRefreshCronExpression(), actualRepository.getRefreshCronExpression() );
167         assertEquals( expectedRepository.getRetentionCount(), actualRepository.getRetentionCount() );
168         assertEquals( expectedRepository.isDeleteReleasedSnapshots(), actualRepository.isDeleteReleasedSnapshots() );
169         assertEquals( expectedRepository.isIndexed(), actualRepository.isIndexed() );
170         assertEquals( expectedRepository.isReleases(), actualRepository.isReleases() );
171         assertEquals( expectedRepository.isSnapshots(), actualRepository.isSnapshots() );
172     }
173
174     private static Configuration createConfigurationForEditing()
175     {
176         Configuration configuration = new Configuration();
177         ManagedRepositoryConfiguration r = createRepository();
178         configuration.addManagedRepository( r );
179         return configuration;
180     }
181
182     private static ManagedRepositoryConfiguration createRepository()
183     {
184         ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration();
185         r.setId( REPO_ID );
186         populateRepository( r );
187         return r;
188     }
189
190     public void testEditRepository()
191         throws Exception
192     {
193         // TODO: should be in the business model
194         roleManager.createTemplatedRole( "archiva-repository-manager", REPO_ID );
195         roleManager.createTemplatedRole( "archiva-repository-observer", REPO_ID );
196
197         roleManagerControl.replay();
198
199         Configuration configuration = createConfigurationForEditing();
200         archivaConfiguration.getConfiguration();
201         archivaConfigurationControl.setReturnValue( configuration );
202         archivaConfiguration.getConfiguration();
203         archivaConfigurationControl.setReturnValue( configuration );
204
205         archivaConfiguration.save( configuration );
206
207         archivaConfigurationControl.replay();
208
209         action.prepare();
210         action.setMode( "edit" );
211         AdminRepositoryConfiguration repository = action.getRepository();
212         populateRepository( repository );
213         repository.setName( "new repo name" );
214
215         String status = action.save();
216         assertEquals( Action.SUCCESS, status );
217
218         ManagedRepositoryConfiguration newRepository = createRepository();
219         newRepository.setName( "new repo name" );
220         assertRepositoryEquals( repository, newRepository );
221         assertEquals( configuration.getManagedRepositories(), Collections.singletonList( repository ) );
222
223         roleManagerControl.verify();
224         archivaConfigurationControl.verify();
225     }
226
227     private static void populateRepository( ManagedRepositoryConfiguration repository )
228     {
229         repository.setId( REPO_ID );
230         repository.setName( "repo name" );
231         repository.setLocation( "location" );
232         repository.setLayout( "default" );
233         repository.setRefreshCronExpression( "* 0/5 * * * ?" );
234         repository.setDaysOlder( 31 );
235         repository.setRetentionCount( 20 );
236         repository.setReleases( true );
237         repository.setSnapshots( true );
238         repository.setIndexed( true );
239         repository.setDeleteReleasedSnapshots( true );
240     }
241
242     // TODO: test errors during add, other actions
243
244     public void testSecureActionBundle()
245         throws SecureActionException
246     {
247         archivaConfiguration.getConfiguration();
248         archivaConfigurationControl.setReturnValue( new Configuration() );
249         archivaConfigurationControl.replay();
250
251         action.prepare();
252         SecureActionBundle bundle = action.getSecureActionBundle();
253         assertTrue( bundle.requiresAuthentication() );
254         assertEquals( 1, bundle.getAuthorizationTuples().size() );
255     }
256 }