use of org.apache.syncope.core.logic.ResourceLogic in project syncope by apache.
the class LoggerITCase method customAuditAppender.
@Test
public void customAuditAppender() throws IOException, InterruptedException {
try (InputStream propStream = getClass().getResourceAsStream("/core-test.properties")) {
Properties props = new Properties();
props.load(propStream);
String auditFilePath = props.getProperty("test.log.dir") + File.separator + "audit_for_Master_file.log";
String auditNoRewriteFilePath = props.getProperty("test.log.dir") + File.separator + "audit_for_Master_norewrite_file.log";
// 1. Enable audit for resource update -> catched by FileRewriteAuditAppender
AuditLoggerName auditLoggerResUpd = new AuditLoggerName(EventCategoryType.LOGIC, ResourceLogic.class.getSimpleName(), null, "update", AuditElements.Result.SUCCESS);
LoggerTO loggerTOUpd = new LoggerTO();
loggerTOUpd.setKey(auditLoggerResUpd.toLoggerName());
loggerTOUpd.setLevel(LoggerLevel.DEBUG);
loggerService.update(LoggerType.AUDIT, loggerTOUpd);
// 2. Enable audit for connector update -> NOT catched by FileRewriteAuditAppender
AuditLoggerName auditLoggerConnUpd = new AuditLoggerName(EventCategoryType.LOGIC, ConnectorLogic.class.getSimpleName(), null, "update", AuditElements.Result.SUCCESS);
LoggerTO loggerTOConnUpd = new LoggerTO();
loggerTOConnUpd.setKey(auditLoggerConnUpd.toLoggerName());
loggerTOConnUpd.setLevel(LoggerLevel.DEBUG);
loggerService.update(LoggerType.AUDIT, loggerTOConnUpd);
// 3. check that resource update is transformed and logged onto an audit file.
ResourceTO resource = resourceService.read(RESOURCE_NAME_CSV);
assertNotNull(resource);
resource.setPropagationPriority(100);
resourceService.update(resource);
ConnInstanceTO connector = connectorService.readByResource(RESOURCE_NAME_CSV, null);
assertNotNull(connector);
connector.setPoolConf(new ConnPoolConfTO());
connectorService.update(connector);
File auditTempFile = new File(auditFilePath);
// check audit_for_Master_file.log, it should contain only a static message
String auditLog = FileUtils.readFileToString(auditTempFile, Charset.defaultCharset());
assertTrue(StringUtils.contains(auditLog, "DEBUG Master.syncope.audit.[LOGIC]:[ResourceLogic]:[]:[update]:[SUCCESS]" + " - This is a static test message"));
File auditNoRewriteTempFile = new File(auditNoRewriteFilePath);
// check audit_for_Master_file.log, it should contain only a static message
String auditLogNoRewrite = FileUtils.readFileToString(auditNoRewriteTempFile, Charset.defaultCharset());
assertFalse(StringUtils.contains(auditLogNoRewrite, "DEBUG Master.syncope.audit.[LOGIC]:[ResourceLogic]:[]:[update]:[SUCCESS]" + " - This is a static test message"));
// clean audit_for_Master_file.log
FileUtils.writeStringToFile(auditTempFile, StringUtils.EMPTY, Charset.defaultCharset());
loggerService.delete(LoggerType.AUDIT, "syncope.audit.[LOGIC]:[ResourceLogic]:[]:[update]:[SUCCESS]");
resource = resourceService.read(RESOURCE_NAME_CSV);
assertNotNull(resource);
resource.setPropagationPriority(200);
resourceService.update(resource);
// check that nothing has been written to audit_for_Master_file.log
assertTrue(StringUtils.isEmpty(FileUtils.readFileToString(auditTempFile, Charset.defaultCharset())));
} catch (IOException e) {
fail("Unable to read/write log files" + e.getMessage());
}
}
Aggregations