]> source.dussan.org Git - archiva.git/blob
a79d724d08d3cdea386d45141b0baeb084d70701
[archiva.git] /
1 package org.apache.archiva.admin.repository.group;
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 org.apache.archiva.admin.model.RepositoryAdminException;
22 import org.apache.archiva.admin.model.beans.ManagedRepository;
23 import org.apache.archiva.admin.model.beans.RepositoryGroup;
24 import org.apache.archiva.admin.model.group.RepositoryGroupAdmin;
25 import org.apache.archiva.admin.repository.AbstractRepositoryAdminTest;
26 import org.apache.archiva.audit.AuditEvent;
27 import org.junit.Test;
28
29 import javax.inject.Inject;
30 import java.io.File;
31 import java.util.Arrays;
32
33 /**
34  * @author Olivier Lamy
35  */
36 public class RepositoryGroupAdminTest
37     extends AbstractRepositoryAdminTest
38 {
39     @Inject
40     RepositoryGroupAdmin repositoryGroupAdmin;
41
42     @Test
43     public void addAndDeleteGroup()
44         throws Exception
45     {
46         try
47         {
48             ManagedRepository managedRepositoryOne =
49                 getTestManagedRepository( "test-new-one", APPSERVER_BASE_PATH + File.separator + "test-new-one" );
50
51             ManagedRepository managedRepositoryTwo =
52                 getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
53
54             managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
55
56             managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
57
58             RepositoryGroup repositoryGroup =
59                 new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) );
60
61             mockAuditListener.clearEvents();
62
63             repositoryGroupAdmin.addRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
64
65             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
66             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
67             assertEquals( 2, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
68             assertEquals( Arrays.asList( "test-new-one", "test-new-two" ),
69                           repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
70
71             // verify if default values were saved
72             assertEquals(30, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexTtl() );
73             assertEquals("/.indexer", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexPath() );
74
75             repositoryGroupAdmin.deleteRepositoryGroup( "repo-group-one", getFakeAuditInformation() );
76
77             assertEquals( 0, repositoryGroupAdmin.getRepositoriesGroups().size() );
78
79             assertEquals( 2, mockAuditListener.getAuditEvents().size() );
80
81             assertEquals( AuditEvent.ADD_REPO_GROUP, mockAuditListener.getAuditEvents().get( 0 ).getAction() );
82             assertEquals( AuditEvent.DELETE_REPO_GROUP, mockAuditListener.getAuditEvents().get( 1 ).getAction() );
83         }
84         finally
85         {
86             mockAuditListener.clearEvents();
87             managedRepositoryAdmin.deleteManagedRepository( "test-new-one", getFakeAuditInformation(), true );
88             managedRepositoryAdmin.deleteManagedRepository( "test-new-two", getFakeAuditInformation(), true );
89         }
90     }
91
92     @Test
93     public void addAndUpdateAndDeleteGroup()
94         throws Exception
95     {
96         try
97         {
98             ManagedRepository managedRepositoryOne =
99                 getTestManagedRepository( "test-new-one", APPSERVER_BASE_PATH + File.separator + "test-new-one" );
100
101             ManagedRepository managedRepositoryTwo =
102                 getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
103
104             managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
105
106             managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
107
108             RepositoryGroup repositoryGroup = new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one" ) )
109                     .mergedIndexTtl( 20 ).mergedIndexPath( "/.nonDefaultPath" );
110
111             mockAuditListener.clearEvents();
112
113             repositoryGroupAdmin.addRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
114
115             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
116             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
117             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
118             assertEquals( Arrays.asList( "test-new-one" ),
119                           repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
120             assertEquals( 20, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexTtl() );
121             assertEquals( "/.nonDefaultPath", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexPath() );
122
123             repositoryGroup = repositoryGroupAdmin.getRepositoryGroup( "repo-group-one" );
124             assertNotNull( repositoryGroup );
125
126             repositoryGroup.addRepository( managedRepositoryTwo.getId() );
127
128             repositoryGroupAdmin.updateRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
129
130             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
131             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
132             assertEquals( 2, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
133             assertEquals( Arrays.asList( "test-new-one", "test-new-two" ),
134                           repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
135
136             repositoryGroupAdmin.deleteRepositoryGroup( "repo-group-one", getFakeAuditInformation() );
137
138             assertEquals( 0, repositoryGroupAdmin.getRepositoriesGroups().size() );
139
140             assertEquals( 3, mockAuditListener.getAuditEvents().size() );
141
142             assertEquals( AuditEvent.ADD_REPO_GROUP, mockAuditListener.getAuditEvents().get( 0 ).getAction() );
143             assertEquals( AuditEvent.MODIFY_REPO_GROUP, mockAuditListener.getAuditEvents().get( 1 ).getAction() );
144             assertEquals( AuditEvent.DELETE_REPO_GROUP, mockAuditListener.getAuditEvents().get( 2 ).getAction() );
145         }
146         finally
147         {
148             mockAuditListener.clearEvents();
149             managedRepositoryAdmin.deleteManagedRepository( "test-new-one", getFakeAuditInformation(), true );
150             managedRepositoryAdmin.deleteManagedRepository( "test-new-two", getFakeAuditInformation(), true );
151         }
152     }
153
154     @Test
155     public void addAndDeleteGroupWithRemovedManagedRepo()
156         throws Exception
157     {
158         try
159         {
160             ManagedRepository managedRepositoryOne =
161                 getTestManagedRepository( "test-new-one", APPSERVER_BASE_PATH + File.separator + "test-new-one" );
162
163             ManagedRepository managedRepositoryTwo =
164                 getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
165
166             managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
167
168             managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
169
170             RepositoryGroup repositoryGroup =
171                 new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) );
172
173             mockAuditListener.clearEvents();
174
175             repositoryGroupAdmin.addRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
176
177             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
178             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
179             assertEquals( 2, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
180             assertEquals( Arrays.asList( "test-new-one", "test-new-two" ),
181                           repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
182
183             // deleting a managed repo to validate repogroup correctly updated !
184             managedRepositoryAdmin.deleteManagedRepository( "test-new-one", getFakeAuditInformation(), true );
185
186             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
187             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
188             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
189             assertEquals( Arrays.asList( "test-new-two" ),
190                           repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
191
192             repositoryGroupAdmin.deleteRepositoryGroup( "repo-group-one", getFakeAuditInformation() );
193
194             assertEquals( 0, repositoryGroupAdmin.getRepositoriesGroups().size() );
195
196             assertEquals( 3, mockAuditListener.getAuditEvents().size() );
197
198             assertEquals( AuditEvent.ADD_REPO_GROUP, mockAuditListener.getAuditEvents().get( 0 ).getAction() );
199             assertEquals( AuditEvent.DELETE_MANAGED_REPO, mockAuditListener.getAuditEvents().get( 1 ).getAction() );
200             assertEquals( AuditEvent.DELETE_REPO_GROUP, mockAuditListener.getAuditEvents().get( 2 ).getAction() );
201         }
202         finally
203         {
204             mockAuditListener.clearEvents();
205
206             managedRepositoryAdmin.deleteManagedRepository( "test-new-two", getFakeAuditInformation(), true );
207         }
208     }
209
210     @Test( expected = RepositoryAdminException.class )
211     public void testAddGroupWithInvalidMergedIndexTtl() throws Exception {
212         try {
213             ManagedRepository managedRepositoryOne =
214                     getTestManagedRepository( "test-new-one", APPSERVER_BASE_PATH + File.separator + "test-new-one" );
215
216             ManagedRepository managedRepositoryTwo =
217                     getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
218
219             managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
220
221             managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
222
223             RepositoryGroup repositoryGroup =
224                     new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) )
225                     .mergedIndexTtl( -1 );
226
227             mockAuditListener.clearEvents();
228
229             repositoryGroupAdmin.addRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
230         }
231         finally
232         {
233             mockAuditListener.clearEvents();
234             managedRepositoryAdmin.deleteManagedRepository( "test-new-one", getFakeAuditInformation(), true );
235             managedRepositoryAdmin.deleteManagedRepository( "test-new-two", getFakeAuditInformation(), true );
236         }
237     }
238
239     @Test( expected = RepositoryAdminException.class )
240     public void testAddAndUpdateGroupWithInvalidMergedIndexTtl() throws Exception {
241         try {
242             ManagedRepository managedRepositoryOne =
243                     getTestManagedRepository( "test-new-one", APPSERVER_BASE_PATH + File.separator + "test-new-one" );
244
245             ManagedRepository managedRepositoryTwo =
246                     getTestManagedRepository( "test-new-two", APPSERVER_BASE_PATH + File.separator + "test-new-two" );
247
248             managedRepositoryAdmin.addManagedRepository( managedRepositoryOne, false, getFakeAuditInformation() );
249
250             managedRepositoryAdmin.addManagedRepository( managedRepositoryTwo, false, getFakeAuditInformation() );
251
252             RepositoryGroup repositoryGroup =
253                     new RepositoryGroup( "repo-group-one", Arrays.asList( "test-new-one", "test-new-two" ) );
254
255             mockAuditListener.clearEvents();
256
257             repositoryGroupAdmin.addRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
258
259             assertEquals( 1, repositoryGroupAdmin.getRepositoriesGroups().size() );
260             assertEquals( "repo-group-one", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getId() );
261             assertEquals( 2, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories().size() );
262             assertEquals( Arrays.asList( "test-new-one", "test-new-two" ),
263                     repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getRepositories() );
264
265             // verify if default values were saved
266             assertEquals(30, repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexTtl() );
267             assertEquals("/.indexer", repositoryGroupAdmin.getRepositoriesGroups().get( 0 ).getMergedIndexPath() );
268
269             repositoryGroup = repositoryGroupAdmin.getRepositoryGroup( "repo-group-one" );
270             assertNotNull( repositoryGroup );
271
272             repositoryGroup.mergedIndexTtl( -1 );
273
274             repositoryGroupAdmin.updateRepositoryGroup( repositoryGroup, getFakeAuditInformation() );
275         }
276         finally
277         {
278             mockAuditListener.clearEvents();
279             managedRepositoryAdmin.deleteManagedRepository( "test-new-one", getFakeAuditInformation(), true );
280             managedRepositoryAdmin.deleteManagedRepository( "test-new-two", getFakeAuditInformation(), true );
281         }
282     }
283 }