public void checkTransitionPermission(String transitionKey, DefaultIssue defaultIssue) { String projectUuid = requireNonNull(defaultIssue.projectUuid()); workflow.outTransitions(defaultIssue) .stream() .filter(transition -> transition.key().equals(transitionKey) && isNotBlank(transition.requiredProjectPermission())) .forEach(transition -> userSession.checkComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)); }
public List<Transition> listTransitions(DefaultIssue issue) { if (issue.isFromExternalRuleEngine()){ return Collections.emptyList(); } String projectUuid = requireNonNull(issue.projectUuid()); return workflow.outTransitions(issue) .stream() .filter(transition -> (userSession.isLoggedIn() && isBlank(transition.requiredProjectPermission())) || userSession.hasComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)) .collect(MoreCollectors.toList()); }
@Test public void fail_if_unknown_status_when_listing_transitions() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus("xxx"); try { workflow.outTransitions(issue); fail(); } catch (IllegalArgumentException e) { assertThat(e).hasMessage("Unknown status: xxx"); } }
@Test public void list_no_out_transition_from_status_closed() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus(STATUS_CLOSED).setRuleKey(RuleKey.of("java", "R1 ")); List<Transition> transitions = workflow.outTransitions(issue); assertThat(transitions).isEmpty(); }
@Test public void list_out_transitions_from_status_reopen() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus(STATUS_REOPENED); List<Transition> transitions = workflow.outTransitions(issue); assertThat(keys(transitions)).containsOnly("confirm", "resolve", "falsepositive", "wontfix"); }
@Test public void list_out_transitions_from_status_resolved() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus(STATUS_RESOLVED); List<Transition> transitions = workflow.outTransitions(issue); assertThat(keys(transitions)).containsOnly("reopen"); }
@Test public void list_out_transitions_from_status_open() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus(STATUS_OPEN); List<Transition> transitions = workflow.outTransitions(issue); assertThat(keys(transitions)).containsOnly("confirm", "falsepositive", "resolve", "wontfix"); }
@Test public void list_out_transitions_from_status_confirmed() { workflow.start(); DefaultIssue issue = new DefaultIssue().setStatus(STATUS_CONFIRMED); List<Transition> transitions = workflow.outTransitions(issue); assertThat(keys(transitions)).containsOnly("unconfirm", "falsepositive", "resolve", "wontfix"); }
public void checkTransitionPermission(String transitionKey, DefaultIssue defaultIssue) { String projectUuid = requireNonNull(defaultIssue.projectUuid()); workflow.outTransitions(defaultIssue) .stream() .filter(transition -> transition.key().equals(transitionKey) && isNotBlank(transition.requiredProjectPermission())) .forEach(transition -> userSession.checkComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)); }
public List<Transition> listTransitions(DefaultIssue issue) { String projectUuid = requireNonNull(issue.projectUuid()); return workflow.outTransitions(issue) .stream() .filter(transition -> (userSession.isLoggedIn() && isBlank(transition.requiredProjectPermission())) || userSession.hasComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)) .collect(MoreCollectors.toList()); }