private List<DefaultIssue> getAuthorizedIssues(List<IssueDto> allIssues) { Set<String> projectUuids = projectsByUuid.values().stream().map(ComponentDto::uuid).collect(MoreCollectors.toSet()); return allIssues.stream() .filter(issue -> projectUuids.contains(issue.getProjectUuid())) .map(IssueDto::toDefaultIssue) .collect(MoreCollectors.toList()); }
void collect(List<IssueDto> issues) { for (IssueDto issue : issues) { componentUuids.add(issue.getComponentUuid()); projectUuids.add(issue.getProjectUuid()); ruleIds.add(issue.getRuleId()); String issueAssigneeUuid = issue.getAssigneeUuid(); if (issueAssigneeUuid != null) { userUuids.add(issueAssigneeUuid); } collectComponentsFromIssueLocations(issue); } }
public IssueDto getByKey(DbSession session, String issueKey) { IssueDto issue = dbClient.issueDao().selectByKey(session, issueKey).orElseThrow(() -> new NotFoundException(format("Issue with key '%s' does not exist", issueKey))); userSession.checkComponentUuidPermission(UserRole.USER, requireNonNull(issue.getProjectUuid())); return issue; }
private boolean isMember(DbSession dbSession, IssueDto issue) { Optional<ComponentDto> project = dbClient.componentDao().selectByUuid(dbSession, issue.getProjectUuid()); checkState(project.isPresent(), "Cannot find the project with uuid %s from issue.id %s", issue.getProjectUuid(), issue.getId()); Optional<OrganizationDto> organization = dbClient.organizationDao().selectByUuid(dbSession, project.get().getOrganizationUuid()); checkState(organization.isPresent(), "Cannot find the organization with uuid %s from issue.id %s", project.get().getOrganizationUuid(), issue.getId()); return userSession.hasMembership(organization.get()); }
private void checkMembership(DbSession dbSession, IssueDto issueDto, UserDto user) { String projectUuid = requireNonNull(issueDto.getProjectUuid()); ComponentDto project = Optional.ofNullable(dbClient.componentDao().selectByUuid(dbSession, projectUuid).orElse(null)) .orElseThrow(() -> new IllegalStateException(format("Unknown project %s", projectUuid))); OrganizationDto organizationDto = dbClient.organizationDao().selectByUuid(dbSession, project.getOrganizationUuid()) .orElseThrow(() -> new IllegalStateException(format("Unknown organizationMember %s", project.getOrganizationUuid()))); checkArgument(dbClient.organizationMemberDao().select(dbSession, organizationDto.getUuid(), user.getId()).isPresent(), "User '%s' is not member of organization '%s'", user.getLogin(), organizationDto.getKey()); } }
@Test public void index_is_not_updated_when_updating_project_key() { // issue is inserted to verify that indexing of project is not triggered IssueDto issue = db.issues().insertIssue(organization); IndexingResult result = indexProject(issue.getProjectUuid(), ProjectIndexer.Cause.PROJECT_KEY_UPDATE); assertThat(result.getTotal()).isEqualTo(0L); assertThatIndexHasSize(0); }
@Test public void index_is_not_updated_when_updating_tags() { // issue is inserted to verify that indexing of project is not triggered IssueDto issue = db.issues().insertIssue(organization); IndexingResult result = indexProject(issue.getProjectUuid(), ProjectIndexer.Cause.PROJECT_TAGS_UPDATE); assertThat(result.getTotal()).isEqualTo(0L); assertThatIndexHasSize(0); }
@Test public void index_is_not_updated_when_creating_project() { // it's impossible to already have an issue on a project // that is being created, but it's just to verify that // indexing is disabled IssueDto issue = db.issues().insertIssue(organization); IndexingResult result = indexProject(issue.getProjectUuid(), ProjectIndexer.Cause.PROJECT_CREATION); assertThat(result.getTotal()).isEqualTo(0L); assertThatIndexHasSize(0); }
private void addProjectPermission(IssueDto issueDto, String permission) { userSession.addProjectPermission(permission, db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get()); } }
private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) { ComponentDto project = dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(); userSession.logIn("john") .addProjectPermission(ISSUE_ADMIN, project) .addProjectPermission(USER, project); }
private void verifyContentOfPreloadedSearchResponseData(IssueDto issue) { SearchResponseData preloadedSearchResponseData = preloadedSearchResponseDataCaptor.getValue(); assertThat(preloadedSearchResponseData.getIssues()) .extracting(IssueDto::getKey) .containsOnly(issue.getKey()); assertThat(preloadedSearchResponseData.getRules()) .extracting(RuleDefinitionDto::getKey) .containsOnly(issue.getRuleKey()); assertThat(preloadedSearchResponseData.getComponents()) .extracting(ComponentDto::uuid) .containsOnly(issue.getComponentUuid(), issue.getProjectUuid()); }
private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) { ComponentDto project = dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(); userSession.logIn("john") .addProjectPermission(ISSUE_ADMIN, project) .addProjectPermission(USER, project); }
private void loginWithBrowsePermission(UserDto user, String permission, IssueDto issueDto) { userSession.logIn(user).addProjectPermission(permission, dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(), dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get()); }
private void verifyContentOfPreloadedSearchResponseData(IssueDto issue) { SearchResponseData preloadedSearchResponseData = preloadedSearchResponseDataCaptor.getValue(); assertThat(preloadedSearchResponseData.getIssues()) .extracting(IssueDto::getKey) .containsOnly(issue.getKey()); assertThat(preloadedSearchResponseData.getRules()) .extracting(RuleDefinitionDto::getKey) .containsOnly(issue.getRuleKey()); assertThat(preloadedSearchResponseData.getComponents()) .extracting(ComponentDto::uuid) .containsOnly(issue.getComponentUuid(), issue.getProjectUuid()); } }
private void loginWithBrowsePermission(IssueDto issueDto, String permission) { userSession.logIn("john").addProjectPermission(permission, dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(), dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get()); }
private void logIn(IssueDto issueDto) { userSession.logIn("john").registerComponents( dbClient.componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get(), dbClient.componentDao().selectByUuid(db.getSession(), issueDto.getComponentUuid()).get()); }
private void setUserWithPermission(IssueDto issue, String permission) { insertUser(CURRENT_USER_LOGIN); userSession.logIn(CURRENT_USER_LOGIN) .addProjectPermission(permission, dbClient.componentDao().selectByUuid(db.getSession(), issue.getProjectUuid()).get(), dbClient.componentDao().selectByUuid(db.getSession(), issue.getComponentUuid()).get()); }
private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issue) { ComponentDto project = db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getProjectUuid()).get(); ComponentDto component = db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getComponentUuid()).get(); userSession.logIn(USER_LOGIN) .addProjectPermission(ISSUE_ADMIN, project, component) .addProjectPermission(USER, project, component); }
private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) { ComponentDto project = db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get(); ComponentDto component = db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getComponentUuid()).get(); userSession.logIn(USER_LOGIN) .addProjectPermission(ISSUE_ADMIN, project, component) .addProjectPermission(USER, project, component); }
@Test public void commitAndIndexIssues_removes_issue_from_index_if_it_does_not_exist_in_db() { IssueDto issue1 = new IssueDto().setKee("I1").setProjectUuid("P1"); addIssueToIndex(issue1.getProjectUuid(), issue1.getKey()); IssueDto issue2 = db.issues().insertIssue(organization); underTest.commitAndIndexIssues(db.getSession(), asList(issue1, issue2)); // issue1 is removed from index, issue2 is persisted and indexed assertThatIndexHasOnly(issue2); assertThatDbHasOnly(issue2); assertThatEsQueueTableHasSize(0); }