use of com.blackducksoftware.integration.hub.notification.NotificationEvent in project hub-alert by blackducksoftware.
the class PolicyViolationProcessor method process.
@Override
public void process(final NotificationContentItem notification) throws HubIntegrationException {
if (notification instanceof PolicyViolationContentItem) {
final PolicyViolationContentItem policyViolationContentItem = (PolicyViolationContentItem) notification;
final Map<String, Object> dataMap = new HashMap<>();
for (final PolicyRuleView rule : policyViolationContentItem.getPolicyRuleList()) {
dataMap.put(POLICY_CONTENT_ITEM, policyViolationContentItem);
dataMap.put(POLICY_RULE, rule);
final String eventKey = generateEventKey(dataMap);
final Map<String, Object> dataSet = generateDataSet(dataMap);
final NotificationEvent event = new NotificationEvent(eventKey, NotificationCategoryEnum.POLICY_VIOLATION, dataSet);
getCache().addEvent(event);
}
}
}
use of com.blackducksoftware.integration.hub.notification.NotificationEvent in project hub-alert by blackducksoftware.
the class VulnerabilityCache method removeEvent.
// The dataset contains string keys and object values. Therefore we need to type cast because the contents are various types.
@SuppressWarnings("unchecked")
@Override
public void removeEvent(final NotificationEvent event) {
final String key = event.getEventKey();
if (hasEvent(key)) {
final NotificationEvent storedEvent = getEventMap().get(key);
final Map<String, Object> storedEventDataMap = storedEvent.getDataSet();
final Map<String, Object> eventDataMap = event.getDataSet();
final Set<String> eventVulnIdSet = (Set<String>) eventDataMap.get(VULNERABILITY_ID_SET);
final Set<String> storedVulnIdSet = (Set<String>) storedEventDataMap.get(VULNERABILITY_ID_SET);
if (!eventVulnIdSet.isEmpty()) {
storedVulnIdSet.addAll(eventVulnIdSet);
}
if (!storedVulnIdSet.isEmpty() && !eventVulnIdSet.isEmpty()) {
storedVulnIdSet.removeAll(eventVulnIdSet);
}
if (storedVulnIdSet.isEmpty()) {
removeEvent(key);
}
} else {
addEvent(event);
}
}
use of com.blackducksoftware.integration.hub.notification.NotificationEvent in project hub-alert by blackducksoftware.
the class AccumulatorProcessorTestIT method testProcess.
@Test
public void testProcess() throws Exception {
final Long timestamp = (new Date()).getTime();
final String testProjectName = "hub-Alert-NotificationAccumulatorTest-" + timestamp;
final String testProjectVersionName = "1.0.0";
final ProjectRequest projectRequest = new ProjectRequest();
projectRequest.name = testProjectName;
final String projectUrl = projectService.createHubProject(projectRequest);
final ProjectView projectItem = hubService.getResponse(projectUrl, ProjectView.class);
System.out.println("projectUrl: " + projectUrl);
final ProjectVersionRequest projectVersionRequest = new ProjectVersionRequest();
projectVersionRequest.distribution = ProjectVersionDistributionType.INTERNAL;
projectVersionRequest.phase = ProjectVersionPhaseType.DEVELOPMENT;
projectVersionRequest.versionName = testProjectVersionName;
projectService.createHubVersion(projectItem, projectVersionRequest);
uploadBdio("bdio/component-bdio.jsonld");
TimeUnit.SECONDS.sleep(60);
final NotificationResults notificationData = notificationDataService.getAllNotificationResults(new Date(System.currentTimeMillis() - 100000), new Date());
final AccumulatorProcessor accumulatorProcessor = new AccumulatorProcessor(globalProperties);
final DBStoreEvent storeEvent = accumulatorProcessor.process(notificationData);
assertNotNull(storeEvent);
final List<NotificationEvent> notificationEvents = storeEvent.getNotificationList();
assertFalse(notificationEvents.isEmpty());
assertEquals(storeEvent.getEventId().length(), 36);
NotificationEvent apacheEvent = null;
for (final NotificationEvent event : notificationEvents) {
System.out.println(event);
if ("Apache Commons FileUpload".equals(event.getDataSet().get("COMPONENT"))) {
apacheEvent = event;
}
}
assertNotNull(apacheEvent);
final AccumulatorProcessor accumulatorProcessorNull = new AccumulatorProcessor(null);
final DBStoreEvent storeEventNull = accumulatorProcessorNull.process(notificationData);
assertNull(storeEventNull);
}
use of com.blackducksoftware.integration.hub.notification.NotificationEvent in project hub-alert by blackducksoftware.
the class VulnerabilityCacheTest method testRemoveEvent.
@Test
public void testRemoveEvent() {
final ProjectService mockedProjectService = Mockito.mock(ProjectService.class);
final HubService mockedHubService = Mockito.mock(HubService.class);
final ComponentService mockedComponentService = Mockito.mock(ComponentService.class);
final HubServicesFactory hubServicesFactory = Mockito.mock(HubServicesFactory.class);
final VulnerabilityCache vulnerabilityCache = new VulnerabilityCache(mockedProjectService, hubServicesFactory);
Mockito.when(hubServicesFactory.createProjectService()).thenReturn(mockedProjectService);
Mockito.when(hubServicesFactory.createHubService()).thenReturn(mockedHubService);
Mockito.when(hubServicesFactory.createComponentService()).thenReturn(mockedComponentService);
final Date createdAt = new Date();
final ProjectVersionModel projectVersionModel = new ProjectVersionModel();
projectVersionModel.setProjectLink("New project link");
final String componentName = "notification test";
final ComponentVersionView componentVersionView = new ComponentVersionView();
final String componentVersionUrl = "sss";
final String componentIssueUrl = "ddd";
final Map<String, Object> dataSet = new HashMap<>();
dataSet.put(NotificationEvent.DATA_SET_KEY_NOTIFICATION_CONTENT, new NotificationContentItem(createdAt, projectVersionModel, componentName, componentVersionView, componentVersionUrl, componentIssueUrl));
dataSet.put(VulnerabilityCache.VULNERABILITY_ID_SET, new HashSet<String>());
final NotificationEvent notificationEvent = new NotificationEvent("key", NotificationCategoryEnum.HIGH_VULNERABILITY, dataSet);
assumeTrue(vulnerabilityCache.getEventMap().size() == 0);
vulnerabilityCache.removeEvent(notificationEvent);
assumeTrue(vulnerabilityCache.getEventMap().size() == 1);
vulnerabilityCache.removeEvent(notificationEvent);
assumeTrue(vulnerabilityCache.getEventMap().size() == 0);
}
use of com.blackducksoftware.integration.hub.notification.NotificationEvent in project hub-alert by blackducksoftware.
the class VulnerabilityCacheTest method testGetEvents.
@Test
public void testGetEvents() throws IntegrationException, URISyntaxException {
final ProjectService mockedProjectService = Mockito.mock(ProjectService.class);
final HubService mockedHubService = Mockito.mock(HubService.class);
final HubServicesFactory hubServicesFactory = Mockito.mock(HubServicesFactory.class);
final ComponentService mockedComponentService = Mockito.mock(ComponentService.class);
final VulnerabilityCache vulnerabilityCache = new VulnerabilityCache(mockedProjectService, hubServicesFactory);
Mockito.when(hubServicesFactory.createProjectService()).thenReturn(mockedProjectService);
Mockito.when(hubServicesFactory.createHubService()).thenReturn(mockedHubService);
Mockito.when(hubServicesFactory.createComponentService()).thenReturn(mockedComponentService);
final AssignedUserView assignedUser = new AssignedUserView();
assignedUser.name = "test name";
final List<AssignedUserView> assignedUsersList = Arrays.asList(assignedUser);
Mockito.when(mockedProjectService.getAssignedUsersToProject(Mockito.anyString())).thenReturn(assignedUsersList);
final VulnerabilityV2View vulnView = new VulnerabilityV2View();
vulnView.severity = "HIGH";
vulnView.name = "vulnerable";
Mockito.when(mockedComponentService.getVulnerabilitiesFromComponentVersion(Mockito.any())).thenReturn(Arrays.asList(vulnView));
final Date createdAt = new Date();
final ProjectVersionModel projectVersionModel = new ProjectVersionModel();
projectVersionModel.setProjectLink("New project link");
final String componentName = "notification test";
final ComponentVersionView componentVersionView = new ComponentVersionView();
final String componentVersionUrl = "sss";
final String componentIssueUrl = "ddd";
Mockito.when(mockedHubService.getAllResponses(componentVersionView, ComponentVersionView.VULNERABILITIES_LINK_RESPONSE)).thenReturn(Arrays.asList(vulnView));
final Map<String, Object> dataSet = new HashMap<>();
dataSet.put(NotificationEvent.DATA_SET_KEY_NOTIFICATION_CONTENT, new VulnerabilityContentItem(createdAt, projectVersionModel, componentName, componentVersionView, componentVersionUrl, Arrays.asList(), Arrays.asList(), Arrays.asList(), componentIssueUrl));
dataSet.put(VulnerabilityCache.VULNERABILITY_ID_SET, Collections.singleton("vulnerable"));
final NotificationEvent notificationEvent = new NotificationEvent("key", NotificationCategoryEnum.HIGH_VULNERABILITY, dataSet);
final Collection<NotificationEvent> emptyNotifications = vulnerabilityCache.getEvents();
assertTrue(emptyNotifications.size() == 0);
vulnerabilityCache.addEvent(notificationEvent);
final Collection<NotificationEvent> notEmptyNotifications = vulnerabilityCache.getEvents();
assertTrue(notEmptyNotifications.size() == 1);
}
Aggregations