]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7291 Return no transition when not loggued 1491/head
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 2 Jan 2017 15:08:44 +0000 (16:08 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 2 Jan 2017 16:43:24 +0000 (17:43 +0100)
server/sonar-server/src/main/java/org/sonar/server/issue/TransitionService.java
server/sonar-server/src/test/java/org/sonar/server/issue/TransitionActionTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java

index 9e9496c1f5416ce0fa2de9e744a323b22eaba5a1..9275cc2fd1a15c241795887df1201b21d4a95b82 100644 (file)
@@ -49,7 +49,8 @@ public class TransitionService {
     String projectUuid = requireNonNull(issue.projectUuid());
     return workflow.outTransitions(issue)
       .stream()
-      .filter(transition -> isBlank(transition.requiredProjectPermission()) || userSession.hasComponentUuidPermission(transition.requiredProjectPermission(), projectUuid))
+      .filter(transition -> (userSession.isLoggedIn() && isBlank(transition.requiredProjectPermission()))
+        || userSession.hasComponentUuidPermission(transition.requiredProjectPermission(), projectUuid))
       .collect(Collectors.toList());
   }
 
index d16a76c3e3382dd30293f6bcde510305ca66ee75..de769ea4d7098a52308b11a61d2fffa248d0aafd 100644 (file)
@@ -72,7 +72,7 @@ public class TransitionActionTest {
 
   @Test
   public void execute() {
-    userSession.addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid());
+    userSession.login("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid());
     issue.setStatus(Issue.STATUS_RESOLVED);
     issue.setResolution(Issue.RESOLUTION_FIXED);
 
@@ -84,7 +84,7 @@ public class TransitionActionTest {
 
   @Test
   public void does_not_execute_if_transition_is_not_available() {
-    userSession.addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid());
+    userSession.login("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid());
     issue.setStatus(Issue.STATUS_CLOSED);
 
     action.execute(ImmutableMap.of("transition", "reopen"), context);
index 22c975e84d122ed238991da83dc307ff2bcca6c8..4d601075bd31d69eb471c486e49718a3b0b36f3a 100644 (file)
@@ -25,7 +25,6 @@ import java.util.List;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.sonar.api.web.UserRole;
 import org.sonar.core.issue.DefaultIssue;
 import org.sonar.core.issue.IssueChangeContext;
 import org.sonar.db.component.ComponentDto;
@@ -40,6 +39,7 @@ import org.sonar.server.tester.UserSessionRule;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.api.issue.Issue.STATUS_CONFIRMED;
 import static org.sonar.api.issue.Issue.STATUS_OPEN;
+import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.issue.IssueTesting.newDto;
 import static org.sonar.db.rule.RuleTesting.newRuleDto;
@@ -62,7 +62,7 @@ public class TransitionServiceTest {
   @Test
   public void list_transitions() throws Exception {
     IssueDto issue = newIssue().setStatus(STATUS_OPEN).setResolution(null);
-    userSession.addProjectUuidPermissions(UserRole.ISSUE_ADMIN, issue.getProjectUuid());
+    userSession.login("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.getProjectUuid());
 
     List<Transition> result = underTest.listTransitions(issue.toDefaultIssue());
 
@@ -71,6 +71,7 @@ public class TransitionServiceTest {
 
   @Test
   public void list_transitions_returns_only_transitions_that_do_not_requires_issue_admin_permission() throws Exception {
+    userSession.login("john");
     IssueDto issue = newIssue().setStatus(STATUS_OPEN).setResolution(null);
 
     List<Transition> result = underTest.listTransitions(issue.toDefaultIssue());
@@ -78,6 +79,15 @@ public class TransitionServiceTest {
     assertThat(result).extracting(Transition::key).containsOnly("confirm", "resolve");
   }
 
+  @Test
+  public void list_transitions_returns_nothing_when_not_logged() throws Exception {
+    IssueDto issue = newIssue().setStatus(STATUS_OPEN).setResolution(null);
+
+    List<Transition> result = underTest.listTransitions(issue.toDefaultIssue());
+
+    assertThat(result).isEmpty();
+  }
+
   @Test
   public void do_transition() {
     DefaultIssue issue = newIssue().setStatus(STATUS_OPEN).setResolution(null).toDefaultIssue();