]> source.dussan.org Git - archiva.git/blob
beaafba67a83c789e532f154d61ac6942a0e80bd
[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.commons.io.FileUtils;
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.security.ArchivaRoleConstants;
28 import org.codehaus.plexus.redback.role.RoleManager;
29 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
30 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
31 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
32 import org.easymock.MockControl;
33
34 import java.io.File;
35 import java.util.Collections;
36
37 /**
38  * AddManagedRepositoryActionTest 
39  *
40  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
41  * @version $Id$
42  */
43 public class AddManagedRepositoryActionTest
44     extends PlexusInSpringTestCase
45 {
46     private AddManagedRepositoryAction action;
47
48     private RoleManager roleManager;
49
50     private MockControl roleManagerControl;
51
52     private MockControl archivaConfigurationControl;
53
54     private ArchivaConfiguration archivaConfiguration;
55
56     private static final String REPO_ID = "repo-ident";
57
58     private File location;
59     
60     @Override
61     protected String getPlexusConfigLocation()
62     {
63         return AbstractManagedRepositoriesAction.class.getName().replace( '.', '/' ) + "Test.xml";
64     }
65     
66     protected void setUp()
67         throws Exception
68     {
69         super.setUp();
70
71         action = (AddManagedRepositoryAction) lookup( Action.class.getName(), "addManagedRepositoryAction" );
72
73         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
74         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
75         action.setArchivaConfiguration( archivaConfiguration );
76
77         roleManagerControl = MockControl.createControl( RoleManager.class );
78         roleManager = (RoleManager) roleManagerControl.getMock();
79         action.setRoleManager( roleManager );
80         location = getTestFile( "target/test/location" );
81     }
82
83     public void testSecureActionBundle()
84         throws SecureActionException
85     {
86         archivaConfiguration.getConfiguration();
87         archivaConfigurationControl.setReturnValue( new Configuration() );
88         archivaConfigurationControl.replay();
89
90         action.prepare();
91         SecureActionBundle bundle = action.getSecureActionBundle();
92         assertTrue( bundle.requiresAuthentication() );
93         assertEquals( 1, bundle.getAuthorizationTuples().size() );
94     }
95
96     public void testAddRepositoryInitialPage()
97         throws Exception
98     {
99         archivaConfiguration.getConfiguration();
100         archivaConfigurationControl.setReturnValue( new Configuration() );
101         archivaConfigurationControl.replay();
102
103         action.prepare();
104         ManagedRepositoryConfiguration configuration = action.getRepository();
105         assertNotNull( configuration );
106         assertNull( configuration.getId() );
107         // check all booleans are false
108         assertFalse( configuration.isDeleteReleasedSnapshots() );
109         assertFalse( configuration.isScanned() );
110         assertFalse( configuration.isReleases() );
111         assertFalse( configuration.isSnapshots() );
112
113         String status = action.input();
114         assertEquals( Action.INPUT, status );
115
116         // check defaults
117         assertFalse( configuration.isDeleteReleasedSnapshots() );
118         assertTrue( configuration.isScanned() );
119         assertTrue( configuration.isReleases() );
120         assertFalse( configuration.isSnapshots() );
121     }
122
123     public void testAddRepository()
124         throws Exception
125     {
126         FileUtils.deleteDirectory( location );
127
128         roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID );
129         roleManagerControl.setReturnValue( false );
130         roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID );
131         roleManagerControl.setVoidCallable();
132         roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID );
133         roleManagerControl.setReturnValue( false );
134         roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID );
135         roleManagerControl.setVoidCallable();
136
137         roleManagerControl.replay();
138
139         Configuration configuration = new Configuration();
140         archivaConfiguration.getConfiguration();
141         archivaConfigurationControl.setReturnValue( configuration );
142
143         archivaConfiguration.save( configuration );
144
145         archivaConfigurationControl.replay();
146
147         action.prepare();
148         ManagedRepositoryConfiguration repository = action.getRepository();
149         populateRepository( repository );
150
151         assertFalse( location.exists() );
152         String status = action.commit();
153         assertEquals( Action.SUCCESS, status );
154         assertTrue( location.exists() );
155
156         assertEquals( Collections.singletonList( repository ), configuration.getManagedRepositories() );
157
158         roleManagerControl.verify();
159         archivaConfigurationControl.verify();
160     }
161     
162     
163     public void testAddRepositoryExistingLocation()
164         throws Exception
165     {
166         if( !location.exists() )
167         {
168             location.mkdirs();
169         }        
170     
171         action.prepare();
172         ManagedRepositoryConfiguration repository = action.getRepository();
173         populateRepository( repository );
174     
175         assertTrue( location.exists() );
176         String status = action.commit();
177         assertEquals( AddManagedRepositoryAction.CONFIRM, status );
178     }
179     
180     private void populateRepository( ManagedRepositoryConfiguration repository )
181     {
182         repository.setId( REPO_ID );
183         repository.setName( "repo name" );
184         repository.setLocation( location.getAbsolutePath() );
185         repository.setLayout( "default" );
186         repository.setRefreshCronExpression( "* 0/5 * * * ?" );
187         repository.setDaysOlder( 31 );
188         repository.setRetentionCount( 20 );
189         repository.setReleases( true );
190         repository.setSnapshots( true );
191         repository.setScanned( false );
192         repository.setDeleteReleasedSnapshots( true );
193     }
194
195     // TODO: test errors during add, other actions
196 }