]> source.dussan.org Git - archiva.git/blob
993151a837ff6fd06f97ec440946fbdd88b9f851
[archiva.git] /
1 package org.apache.archiva.admin.repository;
2 /*
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  */
20
21 import junit.framework.TestCase;
22 import org.apache.archiva.admin.mock.MockAuditListener;
23 import org.apache.archiva.admin.model.AuditInformation;
24 import org.apache.archiva.admin.model.beans.ManagedRepository;
25 import org.apache.archiva.admin.model.beans.RemoteRepository;
26 import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
27 import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;
28 import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
29 import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
30 import org.apache.archiva.configuration.ArchivaConfiguration;
31 import org.apache.archiva.redback.role.RoleManager;
32 import org.apache.archiva.redback.users.User;
33 import org.apache.archiva.redback.users.memory.SimpleUser;
34 import org.apache.archiva.repository.base.RepositoryGroupHandler;
35 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
36 import org.apache.commons.lang3.StringUtils;
37 import org.junit.Before;
38 import org.junit.BeforeClass;
39 import org.junit.runner.RunWith;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42 import org.springframework.test.context.ContextConfiguration;
43
44 import javax.inject.Inject;
45 import java.io.IOException;
46 import java.nio.file.Files;
47 import java.nio.file.Path;
48 import java.nio.file.Paths;
49 import java.util.HashMap;
50 import java.util.List;
51 import java.util.Locale;
52 import java.util.Map;
53
54 /**
55  * @author Olivier Lamy
56  */
57 @RunWith (ArchivaSpringJUnit4ClassRunner.class)
58 @ContextConfiguration (locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" })
59 public abstract class AbstractRepositoryAdminTest
60     extends TestCase
61 {
62     protected Logger log = LoggerFactory.getLogger( getClass() );
63
64     public static final String APPSERVER_BASE_PATH =
65         AbstractRepositoryAdminTest.fixPath( System.getProperty( "appserver.base" ) );
66
67     @Inject
68     protected MockAuditListener mockAuditListener;
69
70     @Inject
71     protected RoleManager roleManager;
72
73     @Inject
74     protected RemoteRepositoryAdmin remoteRepositoryAdmin;
75
76     @Inject
77     protected ManagedRepositoryAdmin managedRepositoryAdmin;
78
79     @Inject
80     protected ProxyConnectorAdmin proxyConnectorAdmin;
81
82     @Inject
83     protected ProxyConnectorRuleAdmin proxyConnectorRuleAdmin;
84
85     @Inject
86     private ArchivaConfiguration archivaConfiguration;
87
88     @SuppressWarnings( "unused" )
89     @Inject
90     RepositoryGroupHandler repositoryGroupHandler;
91
92     @Before
93     public void initialize() {
94         Path confFile = Paths.get(APPSERVER_BASE_PATH, "conf/archiva.xml");
95         try
96         {
97             Files.deleteIfExists( confFile );
98             archivaConfiguration.reload();
99         }
100         catch ( IOException e )
101         {
102             // ignore
103         }
104     }
105
106     protected AuditInformation getFakeAuditInformation()
107     {
108         AuditInformation auditInformation = new AuditInformation( getFakeUser(), "archiva-localhost" );
109         return auditInformation;
110     }
111
112     // make a nice repo path to allow unit test to run
113     private static String fixPath( String path )
114     {
115         String SPACE = " ";
116         if ( path.contains( SPACE ) )
117         {
118             LoggerFactory.getLogger( AbstractRepositoryAdminTest.class.getName() ).error(
119                 "You are building and testing  with {appserver.base}: \n {}"
120                     + " containing space. Consider relocating.", path );
121         }
122         return path.replaceAll( SPACE, "&20" );
123     }
124
125     protected User getFakeUser()
126     {
127         SimpleUser user = new SimpleUser();
128
129         user.setUsername( "root" );
130         user.setFullName( "The top user" );
131         return user;
132     }
133
134     protected ManagedRepository getTestManagedRepository( String repoId, String repoLocation )
135     {
136         String repoLocationStr = Paths.get(repoLocation, ".index").toString();
137         return new ManagedRepository( Locale.getDefault( ), repoId, "test repo", repoLocation, "default", false, true, true, "0 0 * * * ?",
138                                       repoLocationStr, false, 1, 2, true, false );
139     }
140
141     protected Path clearRepoLocation(String path )
142         throws Exception
143     {
144         Path repoDir = Paths.get( path );
145         if ( Files.exists(repoDir) )
146         {
147             org.apache.archiva.common.utils.FileUtils.deleteDirectory( repoDir );
148         }
149         assertFalse( Files.exists(repoDir) );
150         return repoDir;
151     }
152
153     protected ManagedRepository findManagedRepoById( List<ManagedRepository> repos, String id )
154     {
155         for ( ManagedRepository repo : repos )
156         {
157             if ( StringUtils.equals( id, repo.getId() ) )
158             {
159                 return repo;
160             }
161         }
162         return null;
163     }
164
165     protected RemoteRepository getRemoteRepository()
166     {
167         return getRemoteRepository( "foo" );
168     }
169
170     protected RemoteRepository getRemoteRepository( String id )
171     {
172         RemoteRepository remoteRepository = new RemoteRepository(Locale.getDefault());
173         remoteRepository.setUrl( "http://foo.com/maven-it-rocks" );
174         remoteRepository.setTimeout( 10 );
175         remoteRepository.setName( "maven foo" );
176         remoteRepository.setUserName( "foo-name" );
177         remoteRepository.setPassword( "toto" );
178         remoteRepository.setId( id );
179         remoteRepository.setRemoteDownloadNetworkProxyId( "foo" );
180         remoteRepository.setDescription( "cool apache repo" );
181         Map<String, String> extraParameters = new HashMap<>();
182         extraParameters.put( "foo", "bar" );
183         remoteRepository.setExtraParameters( extraParameters );
184         Map<String, String> extraHeaders = new HashMap<>();
185         extraHeaders.put( "beer", "wine" );
186         remoteRepository.setExtraHeaders( extraHeaders );
187         return remoteRepository;
188     }
189 }