Audit validation using XSD and related tests

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15875 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2009-08-24 20:10:49 +00:00
parent b8c93f89f3
commit 598ecfb27b
27 changed files with 1112 additions and 224 deletions

View File

@@ -24,11 +24,20 @@
*/
package org.alfresco.repo.audit;
import java.net.URL;
import java.util.Map;
import junit.framework.TestCase;
import org.alfresco.repo.audit.extractor.DataExtractor;
import org.alfresco.repo.audit.generator.DataGenerator;
import org.alfresco.repo.audit.generator.DataGenerator.DataGeneratorScope;
import org.alfresco.repo.audit.model.AuditApplication;
import org.alfresco.repo.audit.model.AuditModelException;
import org.alfresco.repo.audit.model.AuditModelRegistry;
import org.alfresco.util.ApplicationContextHelper;
import org.springframework.context.ApplicationContext;
import org.springframework.util.ResourceUtils;
/**
* Tests that auditing is loaded properly on repository startup.
@@ -40,7 +49,7 @@ import org.springframework.context.ApplicationContext;
*/
public class AuditBootstrapTest extends TestCase
{
private static final String APPLICATION_REPOSITORY = "Alfresco Repository";
private static final String APPLICATION_TEST = "Alfresco Test";
private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
@@ -50,6 +59,11 @@ public class AuditBootstrapTest extends TestCase
public void setUp() throws Exception
{
auditModelRegistry = (AuditModelRegistry) ctx.getBean("auditModel.registry");
// Register a new model
URL testModelUrl = ResourceUtils.getURL("classpath:alfresco/audit/alfresco-audit-test.xml");
auditModelRegistry.registerModel(testModelUrl);
auditModelRegistry.loadAuditModels();
}
public void testSetUp()
@@ -57,9 +71,116 @@ public class AuditBootstrapTest extends TestCase
// Just here to fail if the basic startup fails
}
private void loadBadModel(String url) throws Exception
{
try
{
URL testModelUrl = ResourceUtils.getURL(url);
auditModelRegistry.registerModel(testModelUrl);
auditModelRegistry.loadAuditModels();
fail("Expected model loading to fail.");
}
catch (AuditModelException e)
{
// Expected
}
}
public void testModelLoading_NoDataExtractor() throws Exception
{
loadBadModel("classpath:alfresco/audit/alfresco-audit-test-bad-01.xml");
}
public void testModelLoading_NoDataGenerator() throws Exception
{
loadBadModel("classpath:alfresco/audit/alfresco-audit-test-bad-02.xml");
}
public void testModelLoading_DuplicatePath() throws Exception
{
loadBadModel("classpath:alfresco/audit/alfresco-audit-test-bad-03.xml");
}
public void testModelLoading_UppercasePath() throws Exception
{
loadBadModel("classpath:alfresco/audit/alfresco-audit-test-bad-04.xml");
}
public void testModelLoading_InvalidScope() throws Exception
{
loadBadModel("classpath:alfresco/audit/alfresco-audit-test-bad-05.xml");
}
public void testGetModelId()
{
Long repoId = auditModelRegistry.getAuditModelId(APPLICATION_REPOSITORY);
assertNotNull("No audit model ID for " + APPLICATION_REPOSITORY, repoId);
Long repoId = auditModelRegistry.getAuditModelId(APPLICATION_TEST);
assertNotNull("No audit model ID for " + APPLICATION_TEST, repoId);
}
private void testBadPath(AuditApplication app, String path)
{
try
{
app.checkPath(path);
fail("Expected path check to fail.");
}
catch (AuditModelException e)
{
// Expected
}
}
public void testAuditApplication_Path()
{
AuditApplication app = auditModelRegistry.getAuditApplication(APPLICATION_TEST);
assertNotNull(app);
// Check that path checks are working
testBadPath(app, null);
testBadPath(app, "");
testBadPath(app, "test");
testBadPath(app, "/Test");
testBadPath(app, "/test/");
}
public void testAuditApplication_GetDataExtractors()
{
AuditApplication app = auditModelRegistry.getAuditApplication(APPLICATION_TEST);
assertNotNull(app);
Map<String, DataExtractor> extractors = app.getDataExtractors("/blah");
assertNotNull("Should never get a null map", extractors);
assertTrue("Expected no extractors", extractors.isEmpty());
extractors = app.getDataExtractors("/test/1.1/2.1/3.1/4.1");
assertEquals(2, extractors.size());
assertTrue(extractors.containsKey("/test/1.1/2.1/3.1/value.1"));
assertTrue(extractors.containsKey("/test/1.1/2.1/3.1/4.1/value.1"));
}
public void testAuditApplication_GetDataGenerators_AnyScope()
{
AuditApplication app = auditModelRegistry.getAuditApplication(APPLICATION_TEST);
assertNotNull(app);
Map<String, DataGenerator> generators = app.getDataGenerators("/blah", DataGeneratorScope.ALL);
assertNotNull("Should never get a null map", generators);
assertTrue("Expected no generators", generators.isEmpty());
generators = app.getDataGenerators("/test/1.1/2.1/3.1/4.1", DataGeneratorScope.ALL);
assertEquals(1, generators.size());
assertTrue(generators.containsKey("/test/time"));
generators = app.getDataGenerators("/test/1.1/2.1/3.1/4.1", DataGeneratorScope.SESSION);
assertEquals(1, generators.size());
assertTrue(generators.containsKey("/test/time"));
generators = app.getDataGenerators("/test/1.1/2.1/3.1/4.1", DataGeneratorScope.AUDIT);
assertEquals(0, generators.size());
generators = app.getDataGenerators("/test/1.1/2.2/3.2/4.1", DataGeneratorScope.ALL);
assertEquals(2, generators.size());
assertTrue(generators.containsKey("/test/time"));
assertTrue(generators.containsKey("/test/1.1/2.2/3.2/4.1/time"));
}
}