Search in sources :

Example 1 with NotificationEvent

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);
        }
    }
}
Also used : PolicyViolationContentItem(com.blackducksoftware.integration.hub.notification.PolicyViolationContentItem) HashMap(java.util.HashMap) PolicyRuleView(com.blackducksoftware.integration.hub.api.generated.view.PolicyRuleView) NotificationEvent(com.blackducksoftware.integration.hub.notification.NotificationEvent)

Example 2 with NotificationEvent

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);
    }
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) NotificationEvent(com.blackducksoftware.integration.hub.notification.NotificationEvent)

Example 3 with NotificationEvent

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);
}
Also used : NotificationResults(com.blackducksoftware.integration.hub.notification.NotificationResults) ProjectRequest(com.blackducksoftware.integration.hub.api.generated.component.ProjectRequest) DBStoreEvent(com.blackducksoftware.integration.hub.alert.event.DBStoreEvent) NotificationEvent(com.blackducksoftware.integration.hub.notification.NotificationEvent) ProjectView(com.blackducksoftware.integration.hub.api.generated.view.ProjectView) Date(java.util.Date) ProjectVersionRequest(com.blackducksoftware.integration.hub.api.generated.component.ProjectVersionRequest) Test(org.junit.Test) HubConnectionTest(com.blackducksoftware.integration.test.annotation.HubConnectionTest)

Example 4 with NotificationEvent

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);
}
Also used : HashMap(java.util.HashMap) ProjectService(com.blackducksoftware.integration.hub.service.ProjectService) HubServicesFactory(com.blackducksoftware.integration.hub.service.HubServicesFactory) NotificationEvent(com.blackducksoftware.integration.hub.notification.NotificationEvent) ProjectVersionModel(com.blackducksoftware.integration.hub.notification.ProjectVersionModel) Date(java.util.Date) NotificationContentItem(com.blackducksoftware.integration.hub.notification.NotificationContentItem) ComponentVersionView(com.blackducksoftware.integration.hub.api.generated.view.ComponentVersionView) ComponentService(com.blackducksoftware.integration.hub.service.ComponentService) HubService(com.blackducksoftware.integration.hub.service.HubService) Test(org.junit.Test)

Example 5 with NotificationEvent

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);
}
Also used : HashMap(java.util.HashMap) VulnerabilityV2View(com.blackducksoftware.integration.hub.api.generated.view.VulnerabilityV2View) ProjectService(com.blackducksoftware.integration.hub.service.ProjectService) HubServicesFactory(com.blackducksoftware.integration.hub.service.HubServicesFactory) NotificationEvent(com.blackducksoftware.integration.hub.notification.NotificationEvent) ProjectVersionModel(com.blackducksoftware.integration.hub.notification.ProjectVersionModel) Date(java.util.Date) VulnerabilityContentItem(com.blackducksoftware.integration.hub.notification.VulnerabilityContentItem) ComponentVersionView(com.blackducksoftware.integration.hub.api.generated.view.ComponentVersionView) ComponentService(com.blackducksoftware.integration.hub.service.ComponentService) AssignedUserView(com.blackducksoftware.integration.hub.api.generated.view.AssignedUserView) HubService(com.blackducksoftware.integration.hub.service.HubService) Test(org.junit.Test)

Aggregations

NotificationEvent (com.blackducksoftware.integration.hub.notification.NotificationEvent)18 HashMap (java.util.HashMap)9 Test (org.junit.Test)7 Date (java.util.Date)6 NotificationContentItem (com.blackducksoftware.integration.hub.notification.NotificationContentItem)5 ComponentVersionView (com.blackducksoftware.integration.hub.api.generated.view.ComponentVersionView)4 NotificationCategoryEnum (com.blackducksoftware.integration.hub.notification.NotificationCategoryEnum)4 ProjectVersionModel (com.blackducksoftware.integration.hub.notification.ProjectVersionModel)4 ProjectService (com.blackducksoftware.integration.hub.service.ProjectService)4 HashSet (java.util.HashSet)4 Set (java.util.Set)4 DBStoreEvent (com.blackducksoftware.integration.hub.alert.event.DBStoreEvent)3 PolicyRuleView (com.blackducksoftware.integration.hub.api.generated.view.PolicyRuleView)3 VulnerabilityV2View (com.blackducksoftware.integration.hub.api.generated.view.VulnerabilityV2View)3 IntegrationException (com.blackducksoftware.integration.exception.IntegrationException)2 AssignedUserView (com.blackducksoftware.integration.hub.api.generated.view.AssignedUserView)2 VulnerabilityContentItem (com.blackducksoftware.integration.hub.notification.VulnerabilityContentItem)2 ComponentService (com.blackducksoftware.integration.hub.service.ComponentService)2 HubService (com.blackducksoftware.integration.hub.service.HubService)2 HubServicesFactory (com.blackducksoftware.integration.hub.service.HubServicesFactory)2