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; }
/** * Uuids of all the components that have open issues on this project. */ public Set<String> loadUuidsOfComponentsWithOpenIssues() { try (DbSession dbSession = dbClient.openSession(false)) { return dbClient.issueDao().selectComponentUuidsOfOpenIssuesForProjectUuid(dbSession, treeRootHolder.getRoot().getUuid()); } } }
private void assertThatDbHasOnly(IssueDto... expectedIssues) { try (DbSession otherSession = db.getDbClient().openSession(false)) { List<String> keys = Arrays.stream(expectedIssues).map(IssueDto::getKey).collect(Collectors.toList()); assertThat(db.getDbClient().issueDao().selectByKeys(otherSession, keys)).hasSize(expectedIssues.length); } }
private void checkIssueAssignee(String issueKey, @Nullable String expectedAssignee) { IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueKey).get(); assertThat(issueReloaded.getAssigneeUuid()).isEqualTo(expectedAssignee); assertThat(issueReloaded.getIssueUpdateTime()).isEqualTo(NOW); assertThat(issueReloaded.getUpdatedAt()).isEqualTo(NOW); } }
private IssueDto doInsert(DbSession session, long now, DefaultIssue issue) { ComponentDto component = component(session, issue); ComponentDto project = project(session, issue); int ruleId = requireNonNull(getRuleId(issue), "Rule not found: " + issue.ruleKey()); IssueDto dto = IssueDto.toDtoForServerInsert(issue, component, project, ruleId, now); getDbClient().issueDao().insert(session, dto); return dto; }
private IssueDto doUpdate(DbSession session, long now, DefaultIssue issue) { IssueDto dto = IssueDto.toDtoForUpdate(issue, now); getDbClient().issueDao().update(session, dto); // Rule id does not exist in DefaultIssue Integer ruleId = getRuleId(issue); return dto.setRuleId(ruleId); }
private void assertDataInDb(DbData data, boolean exists) { assertThat(dbClient.componentDao().selectByUuid(dbSession, data.project.uuid()).isPresent()).isEqualTo(exists); assertThat(dbClient.snapshotDao().selectByUuid(dbSession, data.snapshot.getUuid()).isPresent()).isEqualTo(exists); assertThat(dbClient.issueDao().selectByKey(dbSession, data.issue.getKey()).isPresent()).isEqualTo(exists); }
@Test public void set_tags() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "bug", "todo"); verify(responseWriter).write(eq(issueDto.getKey()), preloadedSearchResponseDataCaptor.capture(), any(Request.class), any(Response.class)); verifyContentOfPreloadedSearchResponseData(issueDto); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug", "todo"); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
public IssueDto insertIssue(IssueDto issueDto) { db.getDbClient().issueDao().insert(db.getSession(), issueDto); db.commit(); return issueDto; }
@Test public void remove_existing_tags_when_value_is_not_set() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey()); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).isEmpty(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void unassign() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .execute(); checkIssueAssignee(issue.getKey(), null); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isNull(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void update_issue() { DefaultIssue issue = db.issues().insertIssue(i -> i.setSeverity(MAJOR)).toDefaultIssue(); IssueChangeContext context = IssueChangeContext.createUser(new Date(), "user_uuid"); issueFieldsSetter.setSeverity(issue, BLOCKER, context); underTest.saveIssue(db.getSession(), issue, context, null); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issue.key()).get(); assertThat(issueReloaded.getSeverity()).isEqualTo(BLOCKER); }
@Test public void unassign_with_empty_assignee_param() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", "") .execute(); checkIssueAssignee(issue.getKey(), null); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isNull(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void assign_to_me_using_deprecated_me_param() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("me", "true") .execute(); checkIssueAssignee(issue.getKey(), CURRENT_USER_UUID); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(CURRENT_USER_UUID); }
@Test public void assign_to_someone() { IssueDto issue = newIssueWithBrowsePermission(); UserDto arthur = insertUser("arthur"); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", "arthur") .execute(); checkIssueAssignee(issue.getKey(), arthur.getUuid()); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(arthur.getUuid()); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void tags_are_stored_as_lowercase() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "bug", "Convention"); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug", "convention"); }
@Test public void empty_tags_are_ignored() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "security", "", "convention"); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("security", "convention"); }
@Test public void remove_existing_tags_when_value_is_empty_string() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), ""); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).isEmpty(); }
@Test public void set_tags_using_deprecated_key_param() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); ws.newRequest().setParam("key", issueDto.getKey()).setParam("tags", "bug").execute(); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug"); }
private void addBaseIssue(RuleKey ruleKey) { ComponentDto project = ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert(), PROJECT_UUID).setDbKey(PROJECT_KEY); ComponentDto file = ComponentTesting.newFileDto(project, null, FILE_UUID).setDbKey(FILE_KEY); dbTester.getDbClient().componentDao().insert(dbTester.getSession(), project, file); RuleDto ruleDto = RuleTesting.newDto(ruleKey); dbTester.rules().insertRule(ruleDto); ruleRepositoryRule.add(ruleKey); IssueDto issue = IssueTesting.newDto(ruleDto, file, project) .setKee("ISSUE") .setStatus(Issue.STATUS_OPEN) .setSeverity(Severity.MAJOR); dbTester.getDbClient().issueDao().insert(dbTester.getSession(), issue); dbTester.getSession().commit(); }