Search in sources :

Example 6 with AuditLoggerName

use of org.apache.syncope.common.lib.types.AuditLoggerName in project syncope by apache.

the class ReportITCase method auditReport.

@Test
public void auditReport() throws IOException {
    AuditLoggerName auditLoggerName = new AuditLoggerName(AuditElements.EventCategoryType.LOGIC, "UserLogic", null, "selfRead", AuditElements.Result.SUCCESS);
    try {
        LoggerTO loggerTO = new LoggerTO();
        loggerTO.setKey(auditLoggerName.toLoggerName());
        loggerTO.setLevel(LoggerLevel.DEBUG);
        loggerService.update(LoggerType.AUDIT, loggerTO);
        ImplementationTO auditReportlet = new ImplementationTO();
        auditReportlet.setKey("UserReportletConf" + getUUIDString());
        auditReportlet.setEngine(ImplementationEngine.JAVA);
        auditReportlet.setType(ImplementationType.REPORTLET);
        auditReportlet.setBody(POJOHelper.serialize(new AuditReportletConf("auditReportlet" + getUUIDString())));
        Response response = implementationService.create(auditReportlet);
        auditReportlet.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
        ReportTO report = new ReportTO();
        report.setName("auditReport" + getUUIDString());
        report.setActive(true);
        report.getReportlets().add(auditReportlet.getKey());
        report.setTemplate("sample");
        report = createReport(report);
        String execKey = execReport(report.getKey());
        checkExport(execKey, ReportExecExportFormat.XML);
        report = reportService.read(report.getKey());
        assertNotNull(report.getLastExec());
    } finally {
        loggerService.delete(LoggerType.AUDIT, auditLoggerName.toLoggerName());
    }
}
Also used : LoggerTO(org.apache.syncope.common.lib.log.LoggerTO) ImplementationTO(org.apache.syncope.common.lib.to.ImplementationTO) Response(javax.ws.rs.core.Response) AuditReportletConf(org.apache.syncope.common.lib.report.AuditReportletConf) ReportTO(org.apache.syncope.common.lib.to.ReportTO) AuditLoggerName(org.apache.syncope.common.lib.types.AuditLoggerName) Test(org.junit.jupiter.api.Test)

Example 7 with AuditLoggerName

use of org.apache.syncope.common.lib.types.AuditLoggerName in project syncope by apache.

the class LoggerITCase method enableDisableAudit.

@Test
public void enableDisableAudit() {
    AuditLoggerName auditLoggerName = new AuditLoggerName(EventCategoryType.LOGIC, ReportLogic.class.getSimpleName(), null, "deleteExecution", AuditElements.Result.FAILURE);
    List<AuditLoggerName> audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT));
    assertNotNull(audits);
    assertFalse(audits.contains(auditLoggerName));
    LoggerTO loggerTO = new LoggerTO();
    loggerTO.setKey(auditLoggerName.toLoggerName());
    loggerTO.setLevel(LoggerLevel.DEBUG);
    loggerService.update(LoggerType.AUDIT, loggerTO);
    audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT));
    assertNotNull(audits);
    assertTrue(audits.contains(auditLoggerName));
    loggerService.delete(LoggerType.AUDIT, auditLoggerName.toLoggerName());
    audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT));
    assertNotNull(audits);
    assertFalse(audits.contains(auditLoggerName));
}
Also used : LoggerTO(org.apache.syncope.common.lib.log.LoggerTO) ReportLogic(org.apache.syncope.core.logic.ReportLogic) AuditLoggerName(org.apache.syncope.common.lib.types.AuditLoggerName) Test(org.junit.jupiter.api.Test)

Example 8 with AuditLoggerName

use of org.apache.syncope.common.lib.types.AuditLoggerName 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());
    }
}
Also used : LoggerTO(org.apache.syncope.common.lib.log.LoggerTO) ResourceLogic(org.apache.syncope.core.logic.ResourceLogic) ResourceTO(org.apache.syncope.common.lib.to.ResourceTO) InputStream(java.io.InputStream) ConnInstanceTO(org.apache.syncope.common.lib.to.ConnInstanceTO) ConnPoolConfTO(org.apache.syncope.common.lib.to.ConnPoolConfTO) IOException(java.io.IOException) Properties(java.util.Properties) ConnectorLogic(org.apache.syncope.core.logic.ConnectorLogic) File(java.io.File) AuditLoggerName(org.apache.syncope.common.lib.types.AuditLoggerName) Test(org.junit.jupiter.api.Test)

Example 9 with AuditLoggerName

use of org.apache.syncope.common.lib.types.AuditLoggerName in project syncope by apache.

the class TestFileRewriteAuditAppender method getEvents.

@Override
public Set<AuditLoggerName> getEvents() {
    Set<AuditLoggerName> events = new HashSet<>();
    events.add(new AuditLoggerName(AuditElements.EventCategoryType.LOGIC, ResourceLogic.class.getSimpleName(), null, "update", AuditElements.Result.SUCCESS));
    return events;
}
Also used : AuditLoggerName(org.apache.syncope.common.lib.types.AuditLoggerName) HashSet(java.util.HashSet)

Example 10 with AuditLoggerName

use of org.apache.syncope.common.lib.types.AuditLoggerName in project syncope by apache.

the class TestFileAuditAppender method getEvents.

@Override
public Set<AuditLoggerName> getEvents() {
    Set<AuditLoggerName> events = new HashSet<>();
    events.add(new AuditLoggerName(AuditElements.EventCategoryType.LOGIC, ResourceLogic.class.getSimpleName(), null, "create", AuditElements.Result.SUCCESS));
    events.add(new AuditLoggerName(AuditElements.EventCategoryType.LOGIC, ConnectorLogic.class.getSimpleName(), null, "update", AuditElements.Result.SUCCESS));
    return events;
}
Also used : AuditLoggerName(org.apache.syncope.common.lib.types.AuditLoggerName) HashSet(java.util.HashSet)

Aggregations

AuditLoggerName (org.apache.syncope.common.lib.types.AuditLoggerName)10 LoggerTO (org.apache.syncope.common.lib.log.LoggerTO)5 HashSet (java.util.HashSet)3 Test (org.junit.jupiter.api.Test)3 File (java.io.File)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ArrayList (java.util.ArrayList)1 Properties (java.util.Properties)1 Response (javax.ws.rs.core.Response)1 AuditReportletConf (org.apache.syncope.common.lib.report.AuditReportletConf)1 ConnInstanceTO (org.apache.syncope.common.lib.to.ConnInstanceTO)1 ConnPoolConfTO (org.apache.syncope.common.lib.to.ConnPoolConfTO)1 ImplementationTO (org.apache.syncope.common.lib.to.ImplementationTO)1 ReportTO (org.apache.syncope.common.lib.to.ReportTO)1 ResourceTO (org.apache.syncope.common.lib.to.ResourceTO)1 ConnectorLogic (org.apache.syncope.core.logic.ConnectorLogic)1 ReportLogic (org.apache.syncope.core.logic.ReportLogic)1 ResourceLogic (org.apache.syncope.core.logic.ResourceLogic)1 NotFoundException (org.apache.syncope.core.persistence.api.dao.NotFoundException)1