1 package org.apache.archiva.admin.repository.group;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.metadata.model.facets.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
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
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
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
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 }