use of org.apache.syncope.common.lib.log.EventCategoryTO in project syncope by apache.
the class LoggerITCase method listAuditEvents.
@Test
public void listAuditEvents() {
final List<EventCategoryTO> events = loggerService.events();
boolean found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (UserLogic.class.getSimpleName().equals(eventCategoryTO.getCategory())) {
assertEquals(EventCategoryType.LOGIC, eventCategoryTO.getType());
assertTrue(eventCategoryTO.getEvents().contains("create"));
assertTrue(eventCategoryTO.getEvents().contains("search"));
assertFalse(eventCategoryTO.getEvents().contains("doCreate"));
assertFalse(eventCategoryTO.getEvents().contains("setStatusOnWfAdapter"));
assertFalse(eventCategoryTO.getEvents().contains("resolveReference"));
found = true;
}
}
assertTrue(found);
found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (GroupLogic.class.getSimpleName().equals(eventCategoryTO.getCategory())) {
assertEquals(EventCategoryType.LOGIC, eventCategoryTO.getType());
assertTrue(eventCategoryTO.getEvents().contains("create"));
assertTrue(eventCategoryTO.getEvents().contains("search"));
assertFalse(eventCategoryTO.getEvents().contains("resolveReference"));
found = true;
}
}
assertTrue(found);
found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (ResourceLogic.class.getSimpleName().equals(eventCategoryTO.getCategory())) {
assertEquals(EventCategoryType.LOGIC, eventCategoryTO.getType());
assertTrue(eventCategoryTO.getEvents().contains("create"));
assertTrue(eventCategoryTO.getEvents().contains("read"));
assertTrue(eventCategoryTO.getEvents().contains("delete"));
assertFalse(eventCategoryTO.getEvents().contains("resolveReference"));
found = true;
}
}
assertTrue(found);
found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (AnyTypeKind.USER.name().toLowerCase().equals(eventCategoryTO.getCategory())) {
if (RESOURCE_NAME_LDAP.equals(eventCategoryTO.getSubcategory()) && EventCategoryType.PULL == eventCategoryTO.getType()) {
assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.DELETE.name().toLowerCase()));
found = true;
}
}
}
assertTrue(found);
found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (AnyTypeKind.USER.name().toLowerCase().equals(eventCategoryTO.getCategory())) {
if (RESOURCE_NAME_CSV.equals(eventCategoryTO.getSubcategory()) && EventCategoryType.PROPAGATION == eventCategoryTO.getType()) {
assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.CREATE.name().toLowerCase()));
assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.UPDATE.name().toLowerCase()));
assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.DELETE.name().toLowerCase()));
found = true;
}
}
}
assertTrue(found);
found = false;
for (EventCategoryTO eventCategoryTO : events) {
if (EventCategoryType.TASK == eventCategoryTO.getType() && "PullJobDelegate".equals(eventCategoryTO.getCategory())) {
found = true;
}
}
assertTrue(found);
}
use of org.apache.syncope.common.lib.log.EventCategoryTO in project syncope by apache.
the class AuditLoggerName method parseEventCategory.
public static Pair<EventCategoryTO, Result> parseEventCategory(final String event) {
EventCategoryTO eventCategoryTO = new EventCategoryTO();
Result condition = null;
if (StringUtils.isNotEmpty(event)) {
final String[] elements = event.substring(1, event.length() - 1).split("\\]:\\[");
if (elements.length == 1) {
eventCategoryTO.setType(EventCategoryType.CUSTOM);
condition = Result.SUCCESS;
eventCategoryTO.getEvents().add(event);
} else {
EventCategoryType type;
if (EventCategoryType.PROPAGATION.toString().equals(elements[0])) {
type = EventCategoryType.PROPAGATION;
} else if (EventCategoryType.PULL.toString().equals(elements[0])) {
type = EventCategoryType.PULL;
} else if (EventCategoryType.PUSH.toString().equals(elements[0])) {
type = EventCategoryType.PUSH;
} else {
try {
type = EventCategoryType.valueOf(elements[0]);
} catch (Exception e) {
type = EventCategoryType.CUSTOM;
}
}
eventCategoryTO.setType(type);
eventCategoryTO.setCategory(StringUtils.isNotEmpty(elements[1]) ? elements[1] : null);
eventCategoryTO.setSubcategory(StringUtils.isNotEmpty(elements[2]) ? elements[2] : null);
if (elements.length > 3 && StringUtils.isNotEmpty(elements[3])) {
eventCategoryTO.getEvents().add(elements[3]);
}
if (elements.length > 4) {
condition = Result.valueOf(elements[4].toUpperCase());
}
}
}
return Pair.of(eventCategoryTO, condition);
}
use of org.apache.syncope.common.lib.log.EventCategoryTO in project syncope by apache.
the class LoggerLogic method listAuditEvents.
@PreAuthorize("hasRole('" + StandardEntitlement.AUDIT_LIST + "') or hasRole('" + StandardEntitlement.NOTIFICATION_LIST + "')")
public List<EventCategoryTO> listAuditEvents() {
// use set to avoid duplications or null elements
Set<EventCategoryTO> events = new HashSet<>();
try {
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);
String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName())) + "/**/*.class";
Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
for (Resource resource : resources) {
if (resource.isReadable()) {
final MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
final Class<?> clazz = Class.forName(metadataReader.getClassMetadata().getClassName());
if (clazz.isAnnotationPresent(Component.class) && AbstractLogic.class.isAssignableFrom(clazz)) {
EventCategoryTO eventCategoryTO = new EventCategoryTO();
eventCategoryTO.setCategory(clazz.getSimpleName());
for (Method method : clazz.getDeclaredMethods()) {
if (Modifier.isPublic(method.getModifiers()) && !eventCategoryTO.getEvents().contains(method.getName())) {
eventCategoryTO.getEvents().add(method.getName());
}
}
events.add(eventCategoryTO);
}
}
}
// SYNCOPE-608
EventCategoryTO authenticationControllerEvents = new EventCategoryTO();
authenticationControllerEvents.setCategory(AuditElements.AUTHENTICATION_CATEGORY);
authenticationControllerEvents.getEvents().add(AuditElements.LOGIN_EVENT);
events.add(authenticationControllerEvents);
events.add(new EventCategoryTO(EventCategoryType.PROPAGATION));
events.add(new EventCategoryTO(EventCategoryType.PULL));
events.add(new EventCategoryTO(EventCategoryType.PUSH));
for (AnyTypeKind anyTypeKind : AnyTypeKind.values()) {
resourceDAO.findAll().forEach(resource -> {
EventCategoryTO propEventCategoryTO = new EventCategoryTO(EventCategoryType.PROPAGATION);
EventCategoryTO pullEventCategoryTO = new EventCategoryTO(EventCategoryType.PULL);
EventCategoryTO pushEventCategoryTO = new EventCategoryTO(EventCategoryType.PUSH);
propEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase());
propEventCategoryTO.setSubcategory(resource.getKey());
pullEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase());
pushEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase());
pullEventCategoryTO.setSubcategory(resource.getKey());
pushEventCategoryTO.setSubcategory(resource.getKey());
for (ResourceOperation resourceOperation : ResourceOperation.values()) {
propEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase());
}
pullEventCategoryTO.getEvents().add(ResourceOperation.DELETE.name().toLowerCase());
for (UnmatchingRule unmatching : UnmatchingRule.values()) {
String event = UnmatchingRule.toEventName(unmatching);
pullEventCategoryTO.getEvents().add(event);
pushEventCategoryTO.getEvents().add(event);
}
for (MatchingRule matching : MatchingRule.values()) {
String event = MatchingRule.toEventName(matching);
pullEventCategoryTO.getEvents().add(event);
pushEventCategoryTO.getEvents().add(event);
}
events.add(propEventCategoryTO);
events.add(pullEventCategoryTO);
events.add(pushEventCategoryTO);
});
}
EventCategoryTO eventCategoryTO = new EventCategoryTO(EventCategoryType.TASK);
eventCategoryTO.setCategory(PullJobDelegate.class.getSimpleName());
events.add(eventCategoryTO);
eventCategoryTO = new EventCategoryTO(EventCategoryType.TASK);
eventCategoryTO.setCategory(PushJobDelegate.class.getSimpleName());
events.add(eventCategoryTO);
} catch (Exception e) {
LOG.error("Failure retrieving audit/notification events", e);
}
return new ArrayList<>(events);
}
use of org.apache.syncope.common.lib.log.EventCategoryTO in project syncope by apache.
the class LoggerITCase method issueSYNCOPE976.
@Test
public void issueSYNCOPE976() {
List<EventCategoryTO> events = loggerService.events();
assertNotNull(events);
EventCategoryTO userLogic = events.stream().filter(object -> "UserLogic".equals(object.getCategory())).findAny().get();
assertNotNull(userLogic);
assertEquals(1, userLogic.getEvents().stream().filter(event -> "create".equals(event)).count());
}
Aggregations