1 package org.apache.archiva.audit;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23 import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
24 import org.apache.archiva.metadata.model.facets.AuditEvent;
25 import org.apache.archiva.metadata.repository.MetadataRepository;
26 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
27 import org.easymock.EasyMock;
28 import org.easymock.IMocksControl;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32
33 import java.text.DecimalFormat;
34 import java.text.ParseException;
35 import java.text.SimpleDateFormat;
36 import java.util.ArrayList;
37 import java.util.Arrays;
38 import java.util.Collections;
39 import java.util.Date;
40 import java.util.LinkedHashMap;
41 import java.util.List;
42 import java.util.Map;
43 import java.util.TimeZone;
44
45 @RunWith(ArchivaBlockJUnit4ClassRunner.class)
46 public class AuditManagerTest
47 extends TestCase
48 {
49 private DefaultAuditManager auditManager;
50
51 private IMocksControl metadataRepositoryControl;
52
53 private MetadataRepository metadataRepository;
54
55 private static final String AUDIT_EVENT_BASE = "2010/01/18/123456.";
56
57 private static final String TEST_REPO_ID = "test-repo";
58
59 private static final String TEST_REPO_ID_2 = "repo2";
60
61 private static final String TEST_USER = "test_user";
62
63 private static final String TEST_RESOURCE_BASE = "test/resource";
64
65 private static final String TEST_IP_ADDRESS = "127.0.0.1";
66
67 private static final SimpleDateFormat TIMESTAMP_FORMAT = createTimestampFormat();
68
69 private static final DecimalFormat MILLIS_FORMAT = new DecimalFormat( "000" );
70
71 private static SimpleDateFormat createTimestampFormat()
72 {
73 SimpleDateFormat fmt = new SimpleDateFormat( AuditEvent.TIMESTAMP_FORMAT );
74 fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
75 return fmt;
76 }
77
78 @Override
79 @Before
80 public void setUp()
81 throws Exception
82 {
83 super.setUp();
84
85 auditManager = new DefaultAuditManager();
86
87 metadataRepositoryControl = EasyMock.createControl();
88 metadataRepository = metadataRepositoryControl.createMock( MetadataRepository.class );
89
90 ManagedRepositoryConfiguration repository = new ManagedRepositoryConfiguration();
91 repository.setId( TEST_REPO_ID );
92 repository.setLocation( "" );
93 }
94
95 @Test
96 public void testGetMostRecentEvents()
97 throws Exception
98 {
99 int numEvents = 11;
100 List<AuditEvent> expectedEvents = new ArrayList<>( numEvents );
101 for ( int i = 0; i < numEvents; i++ )
102 {
103 AuditEvent event = createEvent( AUDIT_EVENT_BASE + MILLIS_FORMAT.format( i ) );
104 expectedEvents.add( event );
105 }
106
107 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
108 getEventNames( expectedEvents ) );
109
110 for ( AuditEvent event : expectedEvents.subList( 1, expectedEvents.size() ) )
111 {
112 EasyMock.expect(
113 metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, event.getName() ) ).andReturn(
114 event );
115 }
116 metadataRepositoryControl.replay();
117
118 List<AuditEvent> events =
119 auditManager.getMostRecentAuditEvents( metadataRepository, Collections.singletonList( TEST_REPO_ID ) );
120 assertNotNull( events );
121 assertEquals( numEvents - 1, events.size() );
122 int expectedTimestampCounter = numEvents - 1;
123 for ( AuditEvent event : events )
124 {
125 String num = MILLIS_FORMAT.format( expectedTimestampCounter );
126 assertTestEvent( event, AUDIT_EVENT_BASE + num, getDefaultTestResourceName( num ) );
127 expectedTimestampCounter--;
128 }
129
130 metadataRepositoryControl.verify();
131 }
132
133 @Test
134 public void testGetMostRecentEventsLessThan10()
135 throws Exception
136 {
137 int numEvents = 5;
138 List<AuditEvent> expectedEvents = new ArrayList<>( numEvents );
139 for ( int i = 0; i < numEvents; i++ )
140 {
141 expectedEvents.add( createEvent( AUDIT_EVENT_BASE + MILLIS_FORMAT.format( i ) ) );
142 }
143
144 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
145 getEventNames( expectedEvents ) );
146 for ( AuditEvent event : expectedEvents )
147 {
148 EasyMock.expect(
149 metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, event.getName() ) ).andReturn(
150 event );
151 }
152 metadataRepositoryControl.replay();
153
154 List<AuditEvent> events =
155 auditManager.getMostRecentAuditEvents( metadataRepository, Collections.singletonList( TEST_REPO_ID ) );
156 assertNotNull( events );
157 assertEquals( numEvents, events.size() );
158 int expectedTimestampCounter = numEvents - 1;
159 for ( AuditEvent event : events )
160 {
161 String num = MILLIS_FORMAT.format( expectedTimestampCounter );
162 assertTestEvent( event, AUDIT_EVENT_BASE + num, getDefaultTestResourceName( num ) );
163 expectedTimestampCounter--;
164 }
165
166 metadataRepositoryControl.verify();
167 }
168
169 @Test
170 public void testGetMostRecentEventsInterleavedRepositories()
171 throws Exception
172 {
173 int numEvents = 11;
174 Map<String, List<String>> eventNames = new LinkedHashMap<String, List<String>>();
175 List<AuditEvent> events = new ArrayList<>();
176 eventNames.put( TEST_REPO_ID, new ArrayList<String>() );
177 eventNames.put( TEST_REPO_ID_2, new ArrayList<String>() );
178 for ( int i = 0; i < numEvents; i++ )
179 {
180 String repositoryId = i % 2 == 0 ? TEST_REPO_ID : TEST_REPO_ID_2;
181 String num = MILLIS_FORMAT.format( i );
182 AuditEvent event = createEvent( repositoryId, AUDIT_EVENT_BASE + num, getDefaultTestResourceName( num ) );
183 events.add( event );
184 eventNames.get( repositoryId ).add( event.getName() );
185 }
186
187 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
188 eventNames.get( TEST_REPO_ID ) );
189 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID_2, AuditEvent.FACET_ID ) ).andReturn(
190 eventNames.get( TEST_REPO_ID_2 ) );
191
192 for ( AuditEvent event : events.subList( 1, events.size() ) )
193 {
194 EasyMock.expect( metadataRepository.getMetadataFacet( event.getRepositoryId(), AuditEvent.FACET_ID,
195 event.getName() ) ).andReturn( event );
196 }
197 metadataRepositoryControl.replay();
198
199 events =
200 auditManager.getMostRecentAuditEvents( metadataRepository, Arrays.asList( TEST_REPO_ID, TEST_REPO_ID_2 ) );
201 assertNotNull( events );
202 assertEquals( numEvents - 1, events.size() );
203 int expectedTimestampCounter = numEvents - 1;
204 for ( AuditEvent event : events )
205 {
206 String num = MILLIS_FORMAT.format( expectedTimestampCounter );
207 String expectedRepoId = expectedTimestampCounter % 2 == 0 ? TEST_REPO_ID : TEST_REPO_ID_2;
208 assertTestEvent( event, expectedRepoId, AUDIT_EVENT_BASE + num, getDefaultTestResourceName( num ) );
209 expectedTimestampCounter--;
210 }
211
212 metadataRepositoryControl.verify();
213 }
214
215 @Test
216 public void testGetMostRecentEventsWhenEmpty()
217 throws Exception
218
219 {
220
221 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
222 Collections.<String>emptyList() );
223 metadataRepositoryControl.replay();
224
225 assertTrue( auditManager.getMostRecentAuditEvents( metadataRepository,
226 Collections.singletonList( TEST_REPO_ID ) ).isEmpty() );
227
228 metadataRepositoryControl.verify();
229 }
230
231 @Test
232 public void testAddAuditEvent()
233 throws Exception
234
235 {
236 AuditEvent event = createEvent( new Date() );
237
238 metadataRepository.addMetadataFacet( TEST_REPO_ID, event );
239
240 metadataRepositoryControl.replay();
241
242 auditManager.addAuditEvent( metadataRepository, event );
243
244 metadataRepositoryControl.verify();
245 }
246
247 @Test
248 public void testAddAuditEventNoRepositoryId()
249 throws Exception
250 {
251 AuditEvent event = createEvent( new Date() );
252 event.setRepositoryId( null );
253
254
255
256 metadataRepositoryControl.replay();
257
258 auditManager.addAuditEvent( metadataRepository, event );
259
260 metadataRepositoryControl.verify();
261 }
262
263 @Test
264 public void testDeleteStats()
265 throws Exception
266
267 {
268 metadataRepository.removeMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID );
269
270 metadataRepositoryControl.replay();
271
272 auditManager.deleteAuditEvents( metadataRepository, TEST_REPO_ID );
273
274 metadataRepositoryControl.verify();
275 }
276
277 @Test
278 public void testGetEventsRangeInside()
279 throws Exception
280
281 {
282 Date current = new Date();
283
284 AuditEvent event1 = createEvent( new Date( current.getTime() - 12345 ) );
285 Date expectedTimestamp = new Date( current.getTime() - 3000 );
286 AuditEvent expectedEvent = createEvent( expectedTimestamp );
287 AuditEvent event3 = createEvent( new Date( current.getTime() - 1000 ) );
288
289 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
290 Arrays.asList( event1.getName(), expectedEvent.getName(), event3.getName() ) );
291
292
293 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
294 expectedEvent.getName() ) ).andReturn( expectedEvent );
295
296 metadataRepositoryControl.replay();
297
298 List<AuditEvent> events =
299 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
300 new Date( current.getTime() - 4000 ),
301 new Date( current.getTime() - 2000 ) );
302
303 assertEquals( 1, events.size() );
304 assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent.getResource() );
305
306 metadataRepositoryControl.verify();
307 }
308
309 @Test
310 public void testGetEventsRangeUpperOutside()
311 throws Exception
312 {
313 Date current = new Date();
314
315 AuditEvent event1 = createEvent( new Date( current.getTime() - 12345 ) );
316 Date expectedTimestamp = new Date( current.getTime() - 3000 );
317 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
318 Date ts3 = new Date( current.getTime() - 1000 );
319 AuditEvent expectedEvent3 = createEvent( ts3 );
320
321 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
322 Arrays.asList( event1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
323
324 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
325 expectedEvent2.getName() ) ).andReturn( expectedEvent2 );
326 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
327 expectedEvent3.getName() ) ).andReturn( expectedEvent3 );
328 metadataRepositoryControl.replay();
329
330 List<AuditEvent> events =
331 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
332 new Date( current.getTime() - 4000 ), current );
333
334 assertEquals( 2, events.size() );
335 assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( ts3 ), expectedEvent3.getResource() );
336 assertTestEvent( events.get( 1 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent2.getResource() );
337
338 metadataRepositoryControl.verify();
339 }
340
341 @Test
342 public void testGetEventsRangeLowerOutside()
343 throws Exception
344 {
345 Date current = new Date();
346
347 Date ts1 = new Date( current.getTime() - 12345 );
348 AuditEvent expectedEvent1 = createEvent( ts1 );
349 Date expectedTimestamp = new Date( current.getTime() - 3000 );
350 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
351 AuditEvent event3 = createEvent( new Date( current.getTime() - 1000 ) );
352
353 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
354 Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), event3.getName() ) );
355
356 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
357 expectedEvent1.getName() ) ).andReturn( expectedEvent1 );
358
359 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
360 expectedEvent2.getName() ) ).andReturn( expectedEvent2 );
361
362 metadataRepositoryControl.replay();
363
364 List<AuditEvent> events =
365 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
366 new Date( current.getTime() - 20000 ),
367 new Date( current.getTime() - 2000 ) );
368
369 assertEquals( 2, events.size() );
370 assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent2.getResource() );
371 assertTestEvent( events.get( 1 ), TIMESTAMP_FORMAT.format( ts1 ), expectedEvent1.getResource() );
372
373 metadataRepositoryControl.verify();
374 }
375
376 @Test
377 public void testGetEventsRangeLowerAndUpperOutside()
378 throws Exception
379 {
380 Date current = new Date();
381
382 Date ts1 = new Date( current.getTime() - 12345 );
383 AuditEvent expectedEvent1 = createEvent( ts1 );
384 Date expectedTimestamp = new Date( current.getTime() - 3000 );
385 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
386 Date ts3 = new Date( current.getTime() - 1000 );
387 AuditEvent expectedEvent3 = createEvent( ts3 );
388
389 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
390 Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
391
392 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
393 expectedEvent1.getName() ) ).andReturn( expectedEvent1 );
394
395 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
396 expectedEvent2.getName() ) ).andReturn( expectedEvent2 );
397
398 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
399 expectedEvent3.getName() ) ).andReturn( expectedEvent3 );
400 metadataRepositoryControl.replay();
401
402 List<AuditEvent> events =
403 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
404 new Date( current.getTime() - 20000 ), current );
405
406 assertEquals( 3, events.size() );
407 assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( ts3 ), expectedEvent3.getResource() );
408 assertTestEvent( events.get( 1 ), TIMESTAMP_FORMAT.format( expectedTimestamp ), expectedEvent2.getResource() );
409 assertTestEvent( events.get( 2 ), TIMESTAMP_FORMAT.format( ts1 ), expectedEvent1.getResource() );
410
411 metadataRepositoryControl.verify();
412 }
413
414 @Test
415 public void testGetEventsWithResource()
416 throws Exception
417 {
418 Date current = new Date();
419
420 Date ts1 = new Date( current.getTime() - 12345 );
421 AuditEvent expectedEvent1 = createEvent( ts1 );
422 Date expectedTimestamp = new Date( current.getTime() - 3000 );
423 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
424 expectedEvent2.setResource( "different-resource" );
425 Date ts3 = new Date( current.getTime() - 1000 );
426 AuditEvent expectedEvent3 = createEvent( ts3 );
427
428
429 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
430 Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
431
432
433 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
434 expectedEvent1.getName() ) ).andReturn( expectedEvent1 );
435
436 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
437 expectedEvent2.getName() ) ).andReturn( expectedEvent2 );
438
439 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID,
440 expectedEvent3.getName() ) ).andReturn( expectedEvent3 );
441 metadataRepositoryControl.replay();
442
443 List<AuditEvent> events =
444 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
445 TEST_RESOURCE_BASE, new Date( current.getTime() - 20000 ), current );
446
447 assertEquals( 2, events.size() );
448 assertTestEvent( events.get( 0 ), TIMESTAMP_FORMAT.format( ts3 ), expectedEvent3.getResource() );
449 assertTestEvent( events.get( 1 ), TIMESTAMP_FORMAT.format( ts1 ), expectedEvent1.getResource() );
450
451 metadataRepositoryControl.verify();
452 }
453
454 @Test
455 public void testGetEventsWithNonExistantResource()
456 throws Exception
457 {
458 Date current = new Date();
459
460 AuditEvent expectedEvent1 = createEvent( new Date( current.getTime() - 12345 ) );
461 Date expectedTimestamp = new Date( current.getTime() - 3000 );
462 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
463 expectedEvent2.setResource( "different-resource" );
464 AuditEvent expectedEvent3 = createEvent( new Date( current.getTime() - 1000 ) );
465
466
467 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) ).andReturn(
468 Arrays.asList( expectedEvent1.getName(), expectedEvent2.getName(), expectedEvent3.getName() ) );
469
470
471 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ) ).andReturn( expectedEvent1 );
472
473 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent2.getName() ) ).andReturn( expectedEvent2 );
474
475 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ) ).andReturn( expectedEvent3 );
476
477 metadataRepositoryControl.replay();
478
479 List<AuditEvent> events =
480 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ), "foo",
481 new Date( current.getTime() - 20000 ), current );
482
483 assertEquals( 0, events.size() );
484
485 metadataRepositoryControl.verify();
486 }
487
488 @Test
489 public void testGetEventsRangeMultipleRepositories()
490 throws Exception
491 {
492 Date current = new Date();
493
494 Date ts1 = new Date( current.getTime() - 12345 );
495 AuditEvent expectedEvent1 = createEvent( ts1 );
496 Date expectedTimestamp = new Date( current.getTime() - 3000 );
497 AuditEvent expectedEvent2 = createEvent( expectedTimestamp );
498 expectedEvent2.setRepositoryId( TEST_REPO_ID_2 );
499 Date ts3 = new Date( current.getTime() - 1000 );
500 AuditEvent expectedEvent3 = createEvent( ts3 );
501
502
503 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) )
504 .andReturn( Arrays.asList( expectedEvent1.getName(), expectedEvent3.getName() ) );
505
506 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID_2, AuditEvent.FACET_ID ) )
507 .andReturn( Arrays.asList( expectedEvent2.getName() ) );
508
509
510 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent1.getName() ) )
511 .andReturn( expectedEvent1 );
512
513 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID_2, AuditEvent.FACET_ID, expectedEvent2.getName() ) )
514 .andReturn( expectedEvent2 );
515
516 EasyMock.expect( metadataRepository.getMetadataFacet( TEST_REPO_ID, AuditEvent.FACET_ID, expectedEvent3.getName() ) )
517 .andReturn( expectedEvent3 );
518
519 metadataRepositoryControl.replay();
520
521 List<AuditEvent> events =
522 auditManager.getAuditEventsInRange( metadataRepository, Arrays.asList( TEST_REPO_ID, TEST_REPO_ID_2 ),
523 new Date( current.getTime() - 20000 ), current );
524
525 assertEquals( 3, events.size() );
526 assertTestEvent( events.get( 0 ), TEST_REPO_ID, TIMESTAMP_FORMAT.format( ts3 ), expectedEvent3.getResource() );
527 assertTestEvent( events.get( 1 ), TEST_REPO_ID_2, TIMESTAMP_FORMAT.format( expectedTimestamp ),
528 expectedEvent2.getResource() );
529 assertTestEvent( events.get( 2 ), TEST_REPO_ID, TIMESTAMP_FORMAT.format( ts1 ), expectedEvent1.getResource() );
530
531 metadataRepositoryControl.verify();
532 }
533
534 @Test
535 public void testGetEventsRangeNotInside()
536 throws Exception
537 {
538 Date current = new Date();
539
540 String name1 = createEvent( new Date( current.getTime() - 12345 ) ).getName();
541 Date expectedTimestamp = new Date( current.getTime() - 3000 );
542 String name2 = createEvent( expectedTimestamp ).getName();
543 String name3 = createEvent( new Date( current.getTime() - 1000 ) ).getName();
544
545 EasyMock.expect( metadataRepository.getMetadataFacets( TEST_REPO_ID, AuditEvent.FACET_ID ) )
546 .andReturn( Arrays.asList( name1, name2, name3 ) );
547
548 metadataRepositoryControl.replay();
549
550 List<AuditEvent> events =
551 auditManager.getAuditEventsInRange( metadataRepository, Collections.singletonList( TEST_REPO_ID ),
552 new Date( current.getTime() - 20000 ),
553 new Date( current.getTime() - 16000 ) );
554
555 assertEquals( 0, events.size() );
556
557 metadataRepositoryControl.verify();
558 }
559
560 private static String getDefaultTestResourceName( String num )
561 {
562 return TEST_RESOURCE_BASE + "/" + num + ".xml";
563 }
564
565 private static AuditEvent createEvent( Date timestamp )
566 throws ParseException
567 {
568 return createEvent( TIMESTAMP_FORMAT.format( timestamp ) );
569 }
570
571 private static AuditEvent createEvent( String ts )
572 throws ParseException
573 {
574 return createEvent( TEST_REPO_ID, ts, getDefaultTestResourceName(
575 ts.substring( AUDIT_EVENT_BASE.length(), AUDIT_EVENT_BASE.length() + 3 ) ) );
576 }
577
578 private static AuditEvent createEvent( String repositoryId, String timestamp, String resource )
579 throws ParseException
580 {
581 AuditEvent event = new AuditEvent();
582 event.setTimestamp( TIMESTAMP_FORMAT.parse( timestamp ) );
583 event.setAction( AuditEvent.UPLOAD_FILE );
584 event.setRemoteIP( TEST_IP_ADDRESS );
585 event.setRepositoryId( repositoryId );
586 event.setUserId( TEST_USER );
587 event.setResource( resource );
588 return event;
589 }
590
591 private static void assertTestEvent( AuditEvent event, String timestamp, String resource )
592 {
593 assertTestEvent( event, TEST_REPO_ID, timestamp, resource );
594 }
595
596 private static void assertTestEvent( AuditEvent event, String repositoryId, String timestamp, String resource )
597 {
598 assertEquals( timestamp, TIMESTAMP_FORMAT.format( event.getTimestamp() ) );
599 assertEquals( AuditEvent.UPLOAD_FILE, event.getAction() );
600 assertEquals( TEST_IP_ADDRESS, event.getRemoteIP() );
601 assertEquals( repositoryId, event.getRepositoryId() );
602 assertEquals( TEST_USER, event.getUserId() );
603 assertEquals( resource, event.getResource() );
604 }
605
606 private List<String> getEventNames( List<AuditEvent> events )
607 {
608 List<String> names = new ArrayList<>( events.size() );
609 for ( AuditEvent event : events )
610 {
611 names.add( event.getName() );
612 }
613 return names;
614 }
615 }