Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.0/Cloud)

85620: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud)
      85550: Merged V4.1-BUG-FIX (4.1.10) to V4.2-BUG-FIX (4.2.4)
         85485: Merged DEV to V4.1-BUG-FIX
          85473 : MNT-10070 : Provide audit filter capabilities for audit applications.
           Added unit test. 


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94508 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-01-31 09:32:33 +00:00
parent e408fcb1bb
commit 16b6069313
2 changed files with 106 additions and 2 deletions

View File

@@ -86,6 +86,10 @@ public class AuditComponentTest extends TestCase
private static final String APPLICATION_ALF12638_TEST = "Test ALF-12638"; private static final String APPLICATION_ALF12638_TEST = "Test ALF-12638";
private static final String APPLICATION_MNT10767_TEST = "Test MNT-10767"; private static final String APPLICATION_MNT10767_TEST = "Test MNT-10767";
private static final String APPLICATION_ONE = "app1";
private static final String APPLICATION_TWO = "app2";
private static final String APPLICATION_THREE = "app3";
private static final Log logger = LogFactory.getLog(AuditComponentTest.class); private static final Log logger = LogFactory.getLog(AuditComponentTest.class);
private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(); private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
@@ -811,6 +815,66 @@ public class AuditComponentTest extends TestCase
assertTrue("There should be exactly one audit entry for the API test", success); assertTrue("There should be exactly one audit entry for the API test", success);
} }
public void testApplication() throws Exception
{
// Register the test model
URL testModelUrl = ResourceUtils.getURL("classpath:alfresco/testaudit/alfresco-audit-test-mnt-10070.xml");
auditModelRegistry.registerModel(testModelUrl);
auditModelRegistry.loadAuditModels();
auditModelRegistry.setProperty("audit.enabled", "true");
auditModelRegistry.setProperty("audit.app1.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app1.default.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app1.login.user", "~System;~null;.*");
auditModelRegistry.setProperty("audit.app2.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app2.default.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app2.login.user", "~System;~null;~admin;.*");
auditModelRegistry.setProperty("audit.app3.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app3.default.enabled", "true");
auditModelRegistry.setProperty("audit.filter.app3.login.user", "~System;~null;.*");
auditModelRegistry.afterPropertiesSet();
AuthenticationUtil.setRunAsUserSystem();
AuditApplication applicationOne = auditModelRegistry.getAuditApplicationByName(APPLICATION_ONE);
assertNotNull("Application 'app1' dosn't exist", applicationOne);
AuditApplication applicationTwo = auditModelRegistry.getAuditApplicationByName(APPLICATION_TWO);
assertNotNull("Application 'app2' dosn't exist", applicationTwo);
AuditApplication applicationThree = auditModelRegistry.getAuditApplicationByName(APPLICATION_THREE);
assertNotNull("Application 'app3' dosn't exist", applicationThree);
// auditComponent
AuthenticationUtil.setAdminUserAsFullyAuthenticatedUser();
UserAuditFilter userAuditFilter = new UserAuditFilter();
userAuditFilter.setUserFilterPattern("~System;~null;.*");
userAuditFilter.afterPropertiesSet();
auditComponent.setUserAuditFilter(userAuditFilter);
Map<String, Serializable> auditMap = new HashMap<String, Serializable>();
auditMap.put("/transaction/user", AuthenticationUtil.getFullyAuthenticatedUser());
auditMap.put("/transaction/action", "CREATE");
auditMap.put("/transaction/type", "cm:content");
Map<String, Serializable> recordedAuditMap = auditComponent.recordAuditValues("/alfresco-access", auditMap);
assertFalse("Audit values is empty.", recordedAuditMap.isEmpty());
Map<String, Serializable> expected = new HashMap<String, Serializable>();
expected.put("/" + APPLICATION_TWO + "/transaction/user", AuthenticationUtil.getFullyAuthenticatedUser());
expected.put("/" + APPLICATION_ONE + "/transaction/action", "CREATE");
expected.put("/" + APPLICATION_THREE + "/transaction/type", "cm:content");
String failure = EqualsHelper.getMapDifferenceReport(recordedAuditMap, expected);
if (failure != null)
{
fail(failure);
}
}
/** /**
* See <a href="https://issues.alfresco.com/jira/browse/MNT-10767">MNT-10767</a> * See <a href="https://issues.alfresco.com/jira/browse/MNT-10767">MNT-10767</a>
*/ */
@@ -826,7 +890,6 @@ public class AuditComponentTest extends TestCase
URL testModelUrl = ResourceUtils.getURL("classpath:alfresco/testaudit/alfresco-audit-test-mnt-10767.xml"); URL testModelUrl = ResourceUtils.getURL("classpath:alfresco/testaudit/alfresco-audit-test-mnt-10767.xml");
auditModelRegistry.registerModel(testModelUrl); auditModelRegistry.registerModel(testModelUrl);
auditModelRegistry.loadAuditModels(); auditModelRegistry.loadAuditModels();
// There should be a log entry for the application // There should be a log entry for the application
final List<Long> results = new ArrayList<Long>(5); final List<Long> results = new ArrayList<Long>(5);
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
@@ -909,7 +972,6 @@ public class AuditComponentTest extends TestCase
fileFolderService.create(newFolderRef, "testcontent-" + System.currentTimeMillis(), ContentModel.TYPE_CONTENT); fileFolderService.create(newFolderRef, "testcontent-" + System.currentTimeMillis(), ContentModel.TYPE_CONTENT);
} }
public void testAuditOverlimitProperties() throws Exception public void testAuditOverlimitProperties() throws Exception
{ {
final int OVERLIMIT_SIZE = 1500; final int OVERLIMIT_SIZE = 1500;

View File

@@ -0,0 +1,42 @@
<?xml version='1.0' encoding='UTF-8'?>
<Audit
xmlns="http://www.alfresco.org/repo/audit/model/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.alfresco.org/repo/audit/model/3.2 alfresco-audit-3.2.xsd"
>
<DataExtractors>
<DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
</DataExtractors>
<DataGenerators>
<DataGenerator name="currentUser" registeredName="auditModel.generator.user"/>
</DataGenerators>
<PathMappings>
<PathMap source="/alfresco-access" target="/app1" />
<PathMap source="/alfresco-access" target="/app2" />
<PathMap source="/alfresco-access" target="/app3" />
</PathMappings>
<Application name="app1" key="app1">
<AuditPath key="transaction">
<RecordValue key="action" dataExtractor="simpleValue" dataSource="/app1/transaction/action" dataTrigger="/app1/transaction/action" />
</AuditPath>
</Application>
<Application name="app2" key="app2">
<AuditPath key="transaction">
<RecordValue key="user" dataExtractor="simpleValue" dataSource="/app2/transaction/user" dataTrigger="/app2/transaction/user" />
</AuditPath>
</Application>
<Application name="app3" key="app3">
<AuditPath key="transaction">
<RecordValue key="type" dataExtractor="simpleValue" dataSource="/app3/transaction/type" dataTrigger="/app3/transaction/type" />
</AuditPath>
</Application>
</Audit>