Search in sources :

Example 1 with Issues

use of org.sonarqube.ws.Issues in project sonarqube by SonarSource.

the class LiteTest method call_issues_ws.

@Test
public void call_issues_ws() {
    // all issues
    Issues.SearchWsResponse response = wsClient.issues().search(new SearchWsRequest());
    assertThat(response.getIssuesCount()).isGreaterThan(0);
    // project issues
    response = wsClient.issues().search(new SearchWsRequest().setProjectKeys(singletonList(PROJECT_KEY)));
    assertThat(response.getIssuesCount()).isGreaterThan(0);
}
Also used : Issues(org.sonarqube.ws.Issues) SearchWsRequest(org.sonarqube.ws.client.issue.SearchWsRequest) Test(org.junit.Test)

Example 2 with Issues

use of org.sonarqube.ws.Issues in project sonarqube by SonarSource.

the class TechnicalDebtInIssueChangelogTest method display_debt_in_issue_changelog.

@Test
public void display_debt_in_issue_changelog() throws Exception {
    orchestrator.getServer().restoreProfile(FileLocation.ofClasspath("/qualityModel/one-issue-per-file.xml"));
    orchestrator.getServer().provisionProject("sample", "sample");
    orchestrator.getServer().associateProjectToQualityProfile("sample", "xoo", "one-issue-per-file");
    // Execute a first analysis to have a past snapshot
    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")));
    // Second analysis, existing issues on OneIssuePerFile will have their technical debt updated with the effort to fix
    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")).setProperties("sonar.oneIssuePerFile.effortToFix", "10"));
    IssueClient issueClient = orchestrator.getServer().wsClient().issueClient();
    Issue issue = issueClient.find(IssueQuery.create()).list().get(0);
    List<Issues.ChangelogWsResponse.Changelog> changes = changelog(issue.key()).getChangelogList();
    assertThat(changes).hasSize(1);
    assertThat(changes.get(0).getDiffsList()).extracting(Issues.ChangelogWsResponse.Changelog.Diff::getKey, Issues.ChangelogWsResponse.Changelog.Diff::getOldValue, Issues.ChangelogWsResponse.Changelog.Diff::getNewValue).containsOnly(tuple("effort", "10", "100"));
}
Also used : Issue(org.sonar.wsclient.issue.Issue) Issues(org.sonarqube.ws.Issues) IssueClient(org.sonar.wsclient.issue.IssueClient) Test(org.junit.Test)

Example 3 with Issues

use of org.sonarqube.ws.Issues in project sonarqube by SonarSource.

the class ClusterTest method start_cluster_of_elasticsearch_and_web_nodes.

@Test
public void start_cluster_of_elasticsearch_and_web_nodes() throws IOException {
    Orchestrator elasticsearch = null;
    Orchestrator web = null;
    try {
        ElasticsearchStartupWatcher esWatcher = new ElasticsearchStartupWatcher();
        elasticsearch = Orchestrator.builderEnv().setServerProperty("sonar.cluster.enabled", "true").setServerProperty("sonar.cluster.name", "start_cluster_of_elasticsearch_and_web_nodes").setServerProperty("sonar.cluster.web.disabled", "true").setServerProperty("sonar.cluster.ce.disabled", "true").setStartupLogWatcher(esWatcher).build();
        elasticsearch.start();
        assertThat(esWatcher.port).isGreaterThan(0);
        assertThat(FileUtils.readFileToString(elasticsearch.getServer().getAppLogs())).doesNotContain("Process[web]");
        web = Orchestrator.builderEnv().setServerProperty("sonar.cluster.enabled", "true").setServerProperty("sonar.cluster.name", "start_cluster_of_elasticsearch_and_web_nodes").setServerProperty("sonar.cluster.web.startupLeader", "true").setServerProperty("sonar.cluster.search.disabled", "true").setServerProperty("sonar.cluster.search.hosts", "localhost:" + esWatcher.port).setServerProperty("sonar.cluster.ce.disabled", "true").setStartupLogWatcher(log -> log.contains("SonarQube is up")).build();
        web.start();
        String coreId = getPropertyValue(web, "sonar.core.id");
        String startTime = getPropertyValue(web, "sonar.core.startTime");
        assertThat(FileUtils.readFileToString(web.getServer().getAppLogs())).doesNotContain("Process[es]");
        // call a web service that requires Elasticsearch
        Issues.SearchWsResponse wsResponse = ItUtils.newWsClient(web).issues().search(new org.sonarqube.ws.client.issue.SearchWsRequest());
        assertThat(wsResponse.getIssuesCount()).isEqualTo(0);
        web.restartServer();
        // sonar core id must not change after restart
        assertThat(getPropertyValue(web, "sonar.core.id")).isEqualTo(coreId);
        // startTime must change at each startup
        assertThat(getPropertyValue(web, "sonar.core.startTime")).isNotEqualTo(startTime);
    } finally {
        if (web != null) {
            web.stop();
        }
        if (elasticsearch != null) {
            elasticsearch.stop();
        }
    }
}
Also used : Issues(org.sonarqube.ws.Issues) Orchestrator(com.sonar.orchestrator.Orchestrator) Test(org.junit.Test)

Example 4 with Issues

use of org.sonarqube.ws.Issues in project sonarqube by SonarSource.

the class IssuePermissionTest method need_administer_issue_permission_on_project_to_bulk_change_severity_and_false_positive.

/**
   * SONAR-2447
   */
@Test
public void need_administer_issue_permission_on_project_to_bulk_change_severity_and_false_positive() {
    SonarClient client = orchestrator.getServer().adminWsClient();
    Issue issueOnSample = client.issueClient().find(IssueQuery.create().componentRoots("sample")).list().get(0);
    Issue issueOnSample2 = client.issueClient().find(IssueQuery.create().componentRoots("sample2")).list().get(0);
    String user = "user";
    try {
        client.userClient().create(UserParameters.create().login(user).name(user).password("password").passwordConfirmation("password"));
        addUserPermission(user, "sample", "issueadmin");
        Issues.BulkChangeWsResponse response = newUserWsClient(orchestrator, user, "password").issues().bulkChange(BulkChangeRequest.builder().setIssues(asList(issueOnSample.key(), issueOnSample2.key())).setSetSeverity("BLOCKER").setDoTransition("falsepositive").build());
        assertThat(response.getTotal()).isEqualTo(2);
        assertThat(response.getSuccess()).isEqualTo(1);
        assertThat(response.getIgnored()).isEqualTo(1);
    } finally {
        client.userClient().deactivate(user);
    }
}
Also used : Issue(org.sonar.wsclient.issue.Issue) Issues(org.sonarqube.ws.Issues) SonarClient(org.sonar.wsclient.SonarClient) Test(org.junit.Test)

Example 5 with Issues

use of org.sonarqube.ws.Issues in project sonarqube by SonarSource.

the class BulkChangeAction method sendNotification.

private void sendNotification(Collection<DefaultIssue> issues, BulkChangeData bulkChangeData, Map<String, UserDto> userDtoByUuid, UserDto author) {
    if (!bulkChangeData.sendNotification) {
        return;
    }
    Set<ChangedIssue> changedIssues = issues.stream().filter(issue -> issue.updateDate() != null).map(issue -> toNotification(bulkChangeData, userDtoByUuid, issue)).filter(Objects::nonNull).collect(toSet(issues.size()));
    if (changedIssues.isEmpty()) {
        return;
    }
    IssuesChangesNotificationBuilder builder = new IssuesChangesNotificationBuilder(changedIssues, new UserChange(oldestUpdateDate(issues), new User(author.getUuid(), author.getLogin(), author.getName())));
    notificationService.scheduleForSending(notificationSerializer.serialize(builder));
}
Also used : PARAM_SET_SEVERITY(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_SET_SEVERITY) Date(java.util.Date) ActionContext(org.sonar.server.issue.ActionContext) BUG(org.sonar.api.rules.RuleType.BUG) DbSession(org.sonar.db.DbSession) Request(org.sonar.api.server.ws.Request) Loggers(org.sonar.api.utils.log.Loggers) SET_SEVERITY_KEY(org.sonar.server.issue.SetSeverityAction.SET_SEVERITY_KEY) Preconditions.checkArgument(com.google.common.base.Preconditions.checkArgument) PARAM_ADD_TAGS(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ADD_TAGS) WebService(org.sonar.api.server.ws.WebService) IssueChangePostProcessor(org.sonar.server.issue.IssueChangePostProcessor) Collectors.toMap(java.util.stream.Collectors.toMap) UUID_EXAMPLE_01(org.sonar.core.util.Uuids.UUID_EXAMPLE_01) BLOCKER(org.sonar.api.rule.Severity.BLOCKER) UUID_EXAMPLE_02(org.sonar.core.util.Uuids.UUID_EXAMPLE_02) SET_TYPE_KEY(org.sonar.server.issue.SetTypeAction.SET_TYPE_KEY) TRANSITION_PARAMETER(org.sonar.server.issue.TransitionAction.TRANSITION_PARAMETER) Map(java.util.Map) PARAM_ASSIGN(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ASSIGN) ChangedIssue(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.ChangedIssue) PARAM_REMOVE_TAGS(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_REMOVE_TAGS) PARAM_SET_TYPE(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_SET_TYPE) NotificationManager(org.sonar.server.notification.NotificationManager) PARAM_COMMENT(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMMENT) PARAM_DO_TRANSITION(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_DO_TRANSITION) TAGS_PARAMETER(org.sonar.server.issue.AbstractChangeTagsAction.TAGS_PARAMETER) System2(org.sonar.api.utils.System2) Project(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.Project) OPEN_AS_VULNERABILITY(org.sonar.api.issue.DefaultTransitions.OPEN_AS_VULNERABILITY) Predicate(java.util.function.Predicate) ASSIGNEE_PARAMETER(org.sonar.server.issue.AssignAction.ASSIGNEE_PARAMETER) Collection(java.util.Collection) Set(java.util.Set) Collectors(java.util.stream.Collectors) ImmutableMap.of(com.google.common.collect.ImmutableMap.of) String.format(java.lang.String.format) Preconditions.checkState(com.google.common.base.Preconditions.checkState) Objects(java.util.Objects) DbClient(org.sonar.db.DbClient) AddTagsAction(org.sonar.server.issue.AddTagsAction) PARAM_SEND_NOTIFICATIONS(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_SEND_NOTIFICATIONS) List(java.util.List) ComponentDto(org.sonar.db.component.ComponentDto) ACTION_BULK_CHANGE(org.sonarqube.ws.client.issue.IssuesWsParameters.ACTION_BULK_CHANGE) RuleKey(org.sonar.api.rule.RuleKey) Function.identity(java.util.function.Function.identity) MoreCollectors.uniqueIndex(org.sonar.core.util.stream.MoreCollectors.uniqueIndex) Optional(java.util.Optional) IssuesChangesNotificationSerializer(org.sonar.server.issue.notification.IssuesChangesNotificationSerializer) WsUtils.writeProtobuf(org.sonar.server.ws.WsUtils.writeProtobuf) BranchDto(org.sonar.db.component.BranchDto) IssueDto(org.sonar.db.issue.IssueDto) RuleDefinitionDto(org.sonar.db.rule.RuleDefinitionDto) UserDto(org.sonar.db.user.UserDto) Issues(org.sonarqube.ws.Issues) MAX_PAGE_SIZE(org.sonar.server.es.SearchOptions.MAX_PAGE_SIZE) SET_AS_IN_REVIEW(org.sonar.api.issue.DefaultTransitions.SET_AS_IN_REVIEW) HashMap(java.util.HashMap) PARAM_ISSUES(org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ISSUES) RuleType(org.sonar.api.rules.RuleType) COMMENT_PROPERTY(org.sonar.server.issue.CommentAction.COMMENT_PROPERTY) HashSet(java.util.HashSet) Action(org.sonar.server.issue.Action) WebIssueStorage(org.sonar.server.issue.WebIssueStorage) RemoveTagsAction(org.sonar.server.issue.RemoveTagsAction) MoreCollectors.toSet(org.sonar.core.util.stream.MoreCollectors.toSet) Severity(org.sonar.api.rule.Severity) IssueChangeContext(org.sonar.core.issue.IssueChangeContext) Objects.requireNonNull(java.util.Objects.requireNonNull) Response(org.sonar.api.server.ws.Response) SECURITY_HOTSPOT(org.sonar.api.rules.RuleType.SECURITY_HOTSPOT) MoreCollectors(org.sonar.core.util.stream.MoreCollectors) Nullable(javax.annotation.Nullable) Logger(org.sonar.api.utils.log.Logger) REOPEN(org.sonar.api.issue.DefaultTransitions.REOPEN) COMMENT_KEY(org.sonar.server.issue.CommentAction.COMMENT_KEY) User(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.User) BranchType(org.sonar.db.component.BranchType) DefaultIssue(org.sonar.core.issue.DefaultIssue) UserChange(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.UserChange) Consumer(java.util.function.Consumer) UserRole(org.sonar.api.web.UserRole) DO_TRANSITION_KEY(org.sonar.server.issue.TransitionAction.DO_TRANSITION_KEY) DefaultTransitions(org.sonar.api.issue.DefaultTransitions) RESOLVE_AS_REVIEWED(org.sonar.api.issue.DefaultTransitions.RESOLVE_AS_REVIEWED) Change(org.sonar.api.server.ws.Change) AssignAction(org.sonar.server.issue.AssignAction) UserSession(org.sonar.server.user.UserSession) SEVERITY_PARAMETER(org.sonar.server.issue.SetSeverityAction.SEVERITY_PARAMETER) CheckForNull(javax.annotation.CheckForNull) TYPE_PARAMETER(org.sonar.server.issue.SetTypeAction.TYPE_PARAMETER) IssuesChangesNotificationBuilder(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder) UserChange(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.UserChange) User(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.User) ChangedIssue(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder.ChangedIssue) IssuesChangesNotificationBuilder(org.sonar.server.issue.notification.IssuesChangesNotificationBuilder)

Aggregations

Issues (org.sonarqube.ws.Issues)5 Test (org.junit.Test)4 Issue (org.sonar.wsclient.issue.Issue)2 Preconditions.checkArgument (com.google.common.base.Preconditions.checkArgument)1 Preconditions.checkState (com.google.common.base.Preconditions.checkState)1 ImmutableMap.of (com.google.common.collect.ImmutableMap.of)1 Orchestrator (com.sonar.orchestrator.Orchestrator)1 String.format (java.lang.String.format)1 Collection (java.util.Collection)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Objects (java.util.Objects)1 Objects.requireNonNull (java.util.Objects.requireNonNull)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Consumer (java.util.function.Consumer)1 Function.identity (java.util.function.Function.identity)1