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