@CheckForNull private String extractScannerContext(DbSession dbSession, CeActivityDto activityDto, Set<AdditionalField> additionalFields) { if (additionalFields.contains(AdditionalField.SCANNER_CONTEXT)) { return dbClient.ceScannerContextDao().selectScannerContext(dbSession, activityDto.getUuid()) .orElse(null); } return null; }
private List<String> extractWarnings(DbSession dbSession, CeActivityDto activityDto, Set<AdditionalField> additionalFields) { if (additionalFields.contains(AdditionalField.WARNINGS)) { List<CeTaskMessageDto> dtos = dbClient.ceTaskMessageDao().selectByTask(dbSession, activityDto.getUuid()); return dtos.stream() .map(CeTaskMessageDto::getMessage) .collect(MoreCollectors.toList(dtos.size())); } return Collections.emptyList(); }
@Override public String apply(@Nonnull CeActivityDto input) { return input.getUuid(); } }
private CeTaskCharacteristicDto insertCharacteristic(CeActivityDto activityDto, String key, String value) { return insertCharacteristic(activityDto.getUuid(), key, value); }
private CeTaskCharacteristicDto insertCharacteristic(CeActivityDto activityDto, String key, String value) { return insertCharacteristic(activityDto.getUuid(), key, value); }
private CeTaskCharacteristicDto insertCharacteristic(CeActivityDto activityDto, String key, String value) { return insertCharacteristic(activityDto.getUuid(), key, value); }
private void getWarningsImpl(CeActivityDto task) { String[] warnings = IntStream.range(0, 1 + new Random().nextInt(10)) .mapToObj(i -> insertWarning(task, i)) .map(CeTaskMessageDto::getMessage) .toArray(String[]::new); Ce.Task taskWithWarnings = callWithWarnings(task.getUuid()); assertThat(taskWithWarnings.getWarningCount()).isEqualTo(warnings.length); assertThat(taskWithWarnings.getWarningsList()).containsExactly(warnings); }
@Test public void selectByUuid_populates_warning_count() { CeActivityDto[] tasks = { insert("TASK_1", REPORT, "PROJECT_1", SUCCESS), insert("TASK_2", REPORT, "PROJECT_1", SUCCESS), insert("TASK_3", REPORT, "PROJECT_1", SUCCESS) }; int moreThan1 = 2 + new Random().nextInt(5); insertWarnings(tasks[0], moreThan1); insertWarnings(tasks[1], 0); insertWarnings(tasks[2], 1); assertThat(underTest.selectByUuid(dbSession, tasks[0].getUuid()).get().getWarningCount()).isEqualTo(moreThan1); assertThat(underTest.selectByUuid(dbSession, tasks[1].getUuid()).get().getWarningCount()).isEqualTo(0); assertThat(underTest.selectByUuid(dbSession, tasks[2].getUuid()).get().getWarningCount()).isEqualTo(1); }
private void insertWarnings(CeActivityDto task, int warningCount) { IntStream.range(0, warningCount).forEach(i -> db.getDbClient().ceTaskMessageDao().insert(dbSession, new CeTaskMessageDto() .setUuid(UuidFactoryFast.getInstance().create()) .setTaskUuid(task.getUuid()) .setMessage("message_" + task.getUuid() + "_" + i) .setCreatedAt(task.getUuid().hashCode() + i))); db.commit(); }
private ReportAnalysisFailureNotification buildNotification(CeActivityDto ceActivityDto, ComponentDto projectDto, @Nullable Throwable error) { Long executedAt = ceActivityDto.getExecutedAt(); return new ReportAnalysisFailureNotification( new ReportAnalysisFailureNotification.Project( projectDto.uuid(), projectDto.getKey(), projectDto.name(), projectDto.getBranch()), new ReportAnalysisFailureNotification.Task( ceActivityDto.getUuid(), ceActivityDto.getSubmittedAt(), executedAt == null ? system2.now() : executedAt), error == null ? null : error.getMessage()); } }
private CeTaskMessageDto insertWarning(CeActivityDto task, int i) { CeTaskMessageDto res = new CeTaskMessageDto() .setUuid(UuidFactoryFast.getInstance().create()) .setTaskUuid(task.getUuid()) .setMessage("msg_" + task.getUuid() + "_" + i) .setCreatedAt(task.getUuid().hashCode() + i); db.getDbClient().ceTaskMessageDao().insert(db.getSession(), res); db.getSession().commit(); return res; }
@Test public void getting_global_archived_task_requires_to_be_system_administrator() { logInAsSystemAdministrator(); CeActivityDto task = createAndPersistArchivedTask(null); call(task.getUuid()); }
@Test public void selectByQuery_populates_hasScannerContext_flag() { insert("TASK_1", REPORT, MAINCOMPONENT_1, SUCCESS); CeActivityDto dto2 = insert("TASK_2", REPORT, MAINCOMPONENT_2, SUCCESS); insertScannerContext(dto2.getUuid()); CeActivityDto dto = underTest.selectByQuery(db.getSession(), new CeTaskQuery().setMainComponentUuid(MAINCOMPONENT_1), forPage(1).andSize(100)).iterator().next(); assertThat(dto.isHasScannerContext()).isFalse(); dto = underTest.selectByQuery(db.getSession(), new CeTaskQuery().setMainComponentUuid(MAINCOMPONENT_2), forPage(1).andSize(100)).iterator().next(); assertThat(dto.isHasScannerContext()).isTrue(); }
@Test public void get_project_archived_task_with_scan_permission_on_project() { userSession.logIn().addProjectPermission(GlobalPermissions.SCAN_EXECUTION, privateProject); CeActivityDto task = createAndPersistArchivedTask(privateProject); call(task.getUuid()); }
@Test public void getting_project_archived_task_throws_ForbiddenException_if_no_admin_nor_scan_permissions() { userSession.logIn(); CeActivityDto task = createAndPersistArchivedTask(privateProject); expectedException.expect(ForbiddenException.class); call(task.getUuid()); }
@Test public void getting_archived_task_of_public_project_fails_with_ForbiddenException() { userSession.logIn().registerComponents(publicProject); CeActivityDto task = createAndPersistArchivedTask(publicProject); expectedException.expect(ForbiddenException.class); call(task.getUuid()); }
@Test public void getting_global_archived_throws_ForbiddenException_if_not_system_administrator() { userSession.logIn().setNonSystemAdministrator(); CeActivityDto task = createAndPersistArchivedTask(null); expectedException.expect(ForbiddenException.class); call(task.getUuid()); }
@Test public void get_project_archived_task_with_scan_permission_on_organization_but_not_on_project() { userSession.logIn().addPermission(SCAN, privateProject.getOrganizationUuid()); CeActivityDto task = createAndPersistArchivedTask(privateProject); call(task.getUuid()); }
@Test public void delete_row_in_ce_activity_when_deleting_project() { ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()); ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization()); dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject); // Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project CeActivityDto toBeDeletedActivity = insertCeActivity(projectToBeDeleted); CeActivityDto notDeletedActivity = insertCeActivity(anotherLivingProject); dbSession.commit(); underTest.deleteProject(dbSession, projectToBeDeleted.uuid()); dbSession.commit(); assertThat(uuidsOfTable("ce_activity")) .containsOnly(notDeletedActivity.getUuid()) .hasSize(1); }
private void createTaskMessage(CeActivityDto activity, String warning) { db.getDbClient().ceTaskMessageDao().insert(db.getSession(), new CeTaskMessageDto() .setUuid("m-uuid-" + counter++) .setTaskUuid(activity.getUuid()) .setMessage(warning) .setCreatedAt(counter)); db.commit(); }