]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11923 resolve issue as fixed now requires "administer issue"
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 24 Jun 2019 08:28:06 +0000 (10:28 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 28 Jun 2019 06:45:52 +0000 (08:45 +0200)
server/sonar-server-common/src/main/java/org/sonar/server/issue/workflow/IssueWorkflow.java
server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java
server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionTest/load_additional_fields.json
sonar-core/src/main/resources/org/sonar/l10n/core.properties

index eca4e74b473b574e8df95a48ebb102e8eaabc761..daf58dbbaa5502a506e6c6cc54cc1b1617f6174c 100644 (file)
@@ -73,6 +73,7 @@ public class IssueWorkflow implements Startable {
 
   private static void buildManualTransitions(StateMachine.Builder builder) {
     builder
+      // confirm
       .transition(Transition.builder(DefaultTransitions.CONFIRM)
         .from(STATUS_OPEN).to(STATUS_CONFIRMED)
         .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
@@ -83,25 +84,32 @@ public class IssueWorkflow implements Startable {
         .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
         .functions(new SetResolution(null))
         .build())
-      .transition(Transition.builder(DefaultTransitions.UNCONFIRM)
-        .from(STATUS_CONFIRMED).to(STATUS_REOPENED)
-        .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
-        .functions(new SetResolution(null))
-        .build())
+
+      // resolve as fixed
       .transition(Transition.builder(DefaultTransitions.RESOLVE)
         .from(STATUS_OPEN).to(STATUS_RESOLVED)
         .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
         .functions(new SetResolution(RESOLUTION_FIXED))
+        .requiredProjectPermission(UserRole.ISSUE_ADMIN)
         .build())
       .transition(Transition.builder(DefaultTransitions.RESOLVE)
         .from(STATUS_REOPENED).to(STATUS_RESOLVED)
         .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
         .functions(new SetResolution(RESOLUTION_FIXED))
+        .requiredProjectPermission(UserRole.ISSUE_ADMIN)
         .build())
       .transition(Transition.builder(DefaultTransitions.RESOLVE)
         .from(STATUS_CONFIRMED).to(STATUS_RESOLVED)
         .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
         .functions(new SetResolution(RESOLUTION_FIXED))
+        .requiredProjectPermission(UserRole.ISSUE_ADMIN)
+        .build())
+
+      // reopen
+      .transition(Transition.builder(DefaultTransitions.UNCONFIRM)
+        .from(STATUS_CONFIRMED).to(STATUS_REOPENED)
+        .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
+        .functions(new SetResolution(null))
         .build())
       .transition(Transition.builder(DefaultTransitions.REOPEN)
         .from(STATUS_RESOLVED).to(STATUS_REOPENED)
index 682e07eaac1da71c26fe1d4aa252d7d4d0fd5a25..6972923548039e6beff5672235155f739b093c2a 100644 (file)
@@ -98,7 +98,7 @@ public class TransitionServiceTest {
 
     List<Transition> result = underTest.listTransitions(issue.toDefaultIssue());
 
-    assertThat(result).extracting(Transition::key).containsOnly("confirm", "resolve");
+    assertThat(result).extracting(Transition::key).containsOnly("confirm");
   }
 
   @Test
index 8f8c7fd0eb36eb3420c1d3a9d8c8c705b99dc9dc..1011cf465d705d3d390e65661da102d1ba98ded5 100644 (file)
@@ -8,8 +8,7 @@
         "set_tags"
       ],
       "transitions": [
-        "confirm",
-        "resolve"
+        "confirm"
       ]
     }
   ],
index 2d49a5c84f3c0e7b5ceb7d3174aa9e3f3ed7ca3a..52d8534b76807df4e0ad77c34564d0c216a0e1c9 100644 (file)
@@ -2109,11 +2109,11 @@ projects_role.groups=Groups
 projects_role.admin=Administer
 projects_role.admin.desc=Access project settings and perform administration tasks. (Users will also need "Browse" permission)
 projects_role.issueadmin=Administer Issues
-projects_role.issueadmin.desc=Change the type and severity of issues, resolve issues as being "won't fix" or "false-positive" (users also need "Browse" permission).
+projects_role.issueadmin.desc=Change the type and severity of issues, resolve issues as being "fixed", "won't fix" or "false-positive" (users also need "Browse" permission).
 projects_role.securityhotspotadmin=Administer Security Hotspots
 projects_role.securityhotspotadmin.desc=Open a Vulnerability from a Security Hotspot. Resolved a Security Hotspot as reviewed, set it as in review or reset it as to review (users also need Browse permission).
 projects_role.user=Browse
-projects_role.user.desc=Access a project, browse its measures and issues, confirm or resolve issues as "fixed", change the assignee, comment on issues and change tags.
+projects_role.user.desc=Access a project, browse its measures and issues, confirm issues, change the assignee, comment on issues and change tags.
 projects_role.codeviewer=See Source Code
 projects_role.codeviewer.desc=View the project's source code. (Users will also need "Browse" permission)
 projects_role.scan=Execute Analysis