]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-12719 add resolution to response of api/hotspots/show
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 5 Dec 2019 14:12:52 +0000 (15:12 +0100)
committerSonarTech <sonartech@sonarsource.com>
Mon, 13 Jan 2020 19:46:27 +0000 (20:46 +0100)
server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/ShowAction.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/ShowActionTest.java
sonar-ws/src/main/protobuf/ws-hotspots.proto

index 862f73f53acca73583ac10dae4ec2c28138e3575..5aa202080aec69755a3c81e3557fb4ae8c7e1094 100644 (file)
@@ -103,8 +103,7 @@ public class ShowAction implements HotspotsWsAction {
   private void formatHotspot(ShowWsResponse.Builder builder, IssueDto hotspot) {
     builder.setKey(hotspot.getKey());
     ofNullable(hotspot.getStatus()).ifPresent(builder::setStatus);
-    // FIXME resolution field will be added later
-    // ofNullable(hotspot.getResolution()).ifPresent(builder::setResolution);
+    ofNullable(hotspot.getResolution()).ifPresent(builder::setResolution);
     ofNullable(hotspot.getLine()).ifPresent(builder::setLine);
     builder.setMessage(nullToEmpty(hotspot.getMessage()));
     ofNullable(hotspot.getAssigneeUuid()).ifPresent(builder::setAssignee);
index 9f394b96e9ec5f717ce2c88ebe14890165f792d7..61bcb3c5bec6ff035ea3b13169f64229034cb13d 100644 (file)
@@ -30,9 +30,11 @@ import java.util.Set;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import javax.annotation.Nullable;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.sonar.api.issue.Issue;
 import org.sonar.api.rules.RuleType;
 import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
@@ -174,6 +176,37 @@ public class ShowActionTest {
     assertThat(response.getKey()).isEqualTo(hotspot.getKey());
   }
 
+  @Test
+  @UseDataProvider("statusAndResolutionCombinations")
+  public void returns_status_and_resolution(String status, @Nullable String resolution) {
+    ComponentDto project = dbTester.components().insertPrivateProject();
+    userSessionRule.registerComponents(project);
+    userSessionRule.logIn().addProjectPermission(UserRole.USER, project);
+    ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
+    RuleDefinitionDto rule = newRule(SECURITY_HOTSPOT);
+    IssueDto hotspot = dbTester.issues().insertIssue(newHotspot(project, file, rule).setStatus(status).setResolution(resolution));
+
+    Hotspots.ShowWsResponse response = newRequest(hotspot)
+      .executeProtobuf(Hotspots.ShowWsResponse.class);
+
+    assertThat(response.getStatus()).isEqualTo(status);
+    if (resolution == null) {
+      assertThat(response.hasResolution()).isFalse();
+    } else {
+      assertThat(response.getResolution()).isEqualTo(resolution);
+    }
+  }
+
+  @DataProvider
+  public static Object[][] statusAndResolutionCombinations() {
+    return new Object[][] {
+      {Issue.STATUS_TO_REVIEW, null},
+      {Issue.STATUS_REVIEWED, Issue.RESOLUTION_FIXED},
+      {Issue.STATUS_REVIEWED, Issue.RESOLUTION_SAFE},
+      {Issue.STATUS_CLOSED, Issue.RESOLUTION_REMOVED}
+    };
+  }
+
   @Test
   public void returns_hotspot_component_and_rule() {
     ComponentDto project = dbTester.components().insertPublicProject();
@@ -193,7 +226,7 @@ public class ShowActionTest {
   }
 
   @Test
-  public void returns_no_textrange_when_locations_have_none() {
+  public void returns_no_textRange_when_locations_have_none() {
     ComponentDto project = dbTester.components().insertPublicProject();
     userSessionRule.registerComponents(project);
     ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
index cef59629a8ec35cbcd076db4f0a23b8cade82470..e851afb7adbf6e47f046dbf4dc0cf8a59e091edd 100644 (file)
@@ -57,8 +57,7 @@ message ShowWsResponse {
   optional Component project = 3;
   optional Rule rule = 4;
   optional string status = 5;
-//  FIXME resolution field will be added later
-//  optional string resolution = 6;
+  optional string resolution = 6;
   optional int32 line = 7;
   optional string message = 8;
   optional string assignee = 9;