use of com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery in project hub-alert by blackducksoftware.
the class BlackDuckDataSyncTask method runProviderTask.
@Override
public void runProviderTask() {
try {
BlackDuckProperties providerProperties = getProviderProperties();
Optional<BlackDuckHttpClient> optionalBlackDuckHttpClient = providerProperties.createBlackDuckHttpClientAndLogErrors(logger);
if (optionalBlackDuckHttpClient.isPresent()) {
BlackDuckHttpClient blackDuckHttpClient = optionalBlackDuckHttpClient.get();
BlackDuckServicesFactory blackDuckServicesFactory = providerProperties.createBlackDuckServicesFactory(blackDuckHttpClient, new Slf4jIntLogger(logger));
ProjectUsersService projectUsersService = blackDuckServicesFactory.createProjectUsersService();
BlackDuckApiClient blackDuckApiClient = blackDuckServicesFactory.getBlackDuckApiClient();
ApiDiscovery apiDiscovery = blackDuckServicesFactory.getApiDiscovery();
List<ProjectView> projectViews = blackDuckApiClient.getAllResponses(apiDiscovery.metaProjectsLink());
Map<ProjectView, ProviderProject> blackDuckToAlertProjects = mapBlackDuckProjectsToAlertProjects(projectViews, blackDuckApiClient);
Map<ProviderProject, Set<String>> projectToEmailAddresses = getEmailsPerProject(blackDuckToAlertProjects, projectUsersService);
Set<String> allRelevantBlackDuckUsers = getAllActiveBlackDuckUserEmailAddresses(blackDuckApiClient, apiDiscovery);
blackDuckDataAccessor.updateProjectAndUserData(providerProperties.getConfigId(), projectToEmailAddresses, allRelevantBlackDuckUsers);
} else {
logger.error("Missing BlackDuck global configuration.");
}
} catch (IntegrationException | AlertRuntimeException e) {
logger.error(String.format("Could not retrieve the current data from the BlackDuck server: %s", e.getMessage()), e);
}
}
use of com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery in project hub-alert by blackducksoftware.
the class PolicyNotificationFilterCustomFunctionAction method retrievePolicyRules.
private BlackDuckPageResponse<PolicyRuleView> retrievePolicyRules(BlackDuckServicesFactory blackDuckServicesFactory, int pageNumber, int pageSize, String searchTerm) throws IntegrationException {
ApiDiscovery apiDiscovery = blackDuckServicesFactory.getApiDiscovery();
BlackDuckApiClient blackDuckApiClient = blackDuckServicesFactory.getBlackDuckApiClient();
BlackDuckMultipleRequest<PolicyRuleView> spec = new BlackDuckRequestBuilder().commonGet().setLimitAndOffset(pageSize, pageNumber * pageSize).addBlackDuckQuery(new BlackDuckQuery("name", searchTerm)).addBlackDuckFilter(BlackDuckRequestFilter.createFilterWithSingleValue("policyRuleEnabled", "true")).buildBlackDuckRequest(apiDiscovery.metaPolicyRulesLink());
return blackDuckApiClient.getPageResponse(spec);
}
use of com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery in project hub-alert by blackducksoftware.
the class BlackDuckProjectSyncTaskTest method testRun.
@Test
public void testRun() throws Exception {
MockProviderDataAccessor providerDataAccessor = new MockProviderDataAccessor();
ApiDiscovery apiDiscovery = new ApiDiscovery(new HttpUrl("https://someblackduckserver"));
BlackDuckApiClient blackDuckApiClient = Mockito.mock(BlackDuckApiClient.class);
ProjectUsersService projectUsersService = Mockito.mock(ProjectUsersService.class);
BlackDuckServicesFactory blackDuckServicesFactory = Mockito.mock(BlackDuckServicesFactory.class);
Mockito.when(blackDuckServicesFactory.getBlackDuckApiClient()).thenReturn(blackDuckApiClient);
Mockito.when(blackDuckServicesFactory.createProjectUsersService()).thenReturn(projectUsersService);
Mockito.when(blackDuckServicesFactory.getApiDiscovery()).thenReturn(apiDiscovery);
Long providerConfigId = 1000L;
BlackDuckProperties blackDuckProperties = Mockito.mock(BlackDuckProperties.class);
Mockito.when(blackDuckProperties.getConfigId()).thenReturn(providerConfigId);
Mockito.when(blackDuckProperties.createBlackDuckHttpClientAndLogErrors(Mockito.any())).thenReturn(Optional.of(Mockito.mock(BlackDuckHttpClient.class)));
Mockito.when(blackDuckProperties.createBlackDuckServicesFactory(Mockito.any(), Mockito.any())).thenReturn(blackDuckServicesFactory);
ProjectView projectView = createProjectView("project", "description1", "https://projectUrl1");
ProjectView projectView2 = createProjectView("project2", "description2", "https://projectUrl2");
ProjectView projectView3 = createProjectView("project3", "description3", "https://projectUrl3");
Mockito.when(blackDuckApiClient.getAllResponses(Mockito.eq(apiDiscovery.metaProjectsLink()))).thenReturn(List.of(projectView, projectView2, projectView3));
Mockito.doReturn(null).when(blackDuckApiClient).getResponse(Mockito.any(BlackDuckRequest.class));
String email1 = "user1@email.com";
String email2 = "user2@email.com";
String email3 = "user3@email.com";
String email4 = "user4@email.com";
UserView user1 = createUserView(email1, true);
UserView user2 = createUserView(email2, true);
UserView user3 = createUserView(email3, true);
UserView user4 = createUserView(email4, true);
Mockito.when(blackDuckApiClient.getAllResponses(Mockito.eq(apiDiscovery.metaUsersLink()))).thenReturn(List.of(user1, user2, user3, user4));
Mockito.when(projectUsersService.getAllActiveUsersForProject(ArgumentMatchers.same(projectView))).thenReturn(new HashSet<>(List.of(user2, user4)));
Mockito.when(projectUsersService.getAllActiveUsersForProject(ArgumentMatchers.same(projectView2))).thenReturn(new HashSet<>(List.of(user3)));
Mockito.when(projectUsersService.getAllActiveUsersForProject(ArgumentMatchers.same(projectView3))).thenReturn(new HashSet<>(List.of(user1, user2, user3)));
Mockito.doNothing().when(projectUsersService).addUserToProject(Mockito.any(), Mockito.any(UserView.class));
BlackDuckDataSyncTask projectSyncTask = new BlackDuckDataSyncTask(new BlackDuckProviderKey(), null, providerDataAccessor, blackDuckProperties);
projectSyncTask.run();
assertEquals(3, providerDataAccessor.getProjectsByProviderConfigId(providerConfigId).size());
Mockito.when(blackDuckApiClient.getAllResponses(Mockito.eq(apiDiscovery.metaProjectsLink()))).thenReturn(List.of(projectView, projectView2));
Mockito.when(projectUsersService.getAllActiveUsersForProject(ArgumentMatchers.same(projectView))).thenReturn(new HashSet<>(List.of(user2, user4)));
Mockito.when(projectUsersService.getAllActiveUsersForProject(ArgumentMatchers.same(projectView2))).thenReturn(new HashSet<>(List.of(user3)));
Mockito.when(blackDuckApiClient.getAllResponses(ArgumentMatchers.same(projectView2.metaUsersLink()))).thenReturn(List.of());
projectSyncTask = new BlackDuckDataSyncTask(new BlackDuckProviderKey(), null, providerDataAccessor, blackDuckProperties);
projectSyncTask.run();
assertEquals(2, providerDataAccessor.getProjectsByProviderConfigId(providerConfigId).size());
}
use of com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery in project hub-alert by blackducksoftware.
the class BlackDuckApiTokenValidator method hasPermittedRole.
private boolean hasPermittedRole(BlackDuckServicesFactory blackDuckServicesFactory) {
BlackDuckApiClient blackDuckApiClient = blackDuckServicesFactory.getBlackDuckApiClient();
ApiDiscovery apiDiscovery = blackDuckServicesFactory.getApiDiscovery();
UserView currentUser;
try {
currentUser = blackDuckApiClient.getResponse(apiDiscovery.metaCurrentUserLink());
} catch (IntegrationException integrationException) {
logger.error("Failed to GET the currently authenticated Black Duck user", integrationException);
return false;
}
try {
List<RoleAssignmentView> allRolesForCurrentUser = blackDuckApiClient.getAllResponses(currentUser.metaRolesLink());
return allRolesForCurrentUser.stream().anyMatch(this::isPermittedRole);
} catch (IntegrationException integrationException) {
logger.error("Failed to GET the currently authenticated Black Duck user's roles", integrationException);
}
return false;
}
use of com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery in project hub-alert by blackducksoftware.
the class BlackDuckSSOConfigRetrieverTest method retrieveExceptionTest.
@Test
public void retrieveExceptionTest() throws IntegrationException {
HttpUrl baseUrl = new HttpUrl("https://a-blackduck-server");
ApiDiscovery apiDiscovery = new ApiDiscovery(baseUrl);
BlackDuckApiClient blackDuckApiClient = Mockito.mock(BlackDuckApiClient.class);
Mockito.when(blackDuckApiClient.getResponse(Mockito.any(BlackDuckRequest.class))).thenThrow(new AlertException());
BlackDuckSSOConfigRetriever ssoConfigRetriever = new BlackDuckSSOConfigRetriever(apiDiscovery, blackDuckApiClient);
try {
ssoConfigRetriever.retrieve();
fail(String.format("Expected an %s to be thrown", AlertException.class.getSimpleName()));
} catch (AlertException e) {
// Pass
}
}
Aggregations