Browse Source

SONAR-11923 resolve issue as fixed now requires "administer issue"

tags/8.0
Sébastien Lesaint 5 years ago
parent
commit
bc1e2754d1

+ 13
- 5
server/sonar-server-common/src/main/java/org/sonar/server/issue/workflow/IssueWorkflow.java View File



private static void buildManualTransitions(StateMachine.Builder builder) { private static void buildManualTransitions(StateMachine.Builder builder) {
builder builder
// confirm
.transition(Transition.builder(DefaultTransitions.CONFIRM) .transition(Transition.builder(DefaultTransitions.CONFIRM)
.from(STATUS_OPEN).to(STATUS_CONFIRMED) .from(STATUS_OPEN).to(STATUS_CONFIRMED)
.conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.functions(new SetResolution(null)) .functions(new SetResolution(null))
.build()) .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) .transition(Transition.builder(DefaultTransitions.RESOLVE)
.from(STATUS_OPEN).to(STATUS_RESOLVED) .from(STATUS_OPEN).to(STATUS_RESOLVED)
.conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.functions(new SetResolution(RESOLUTION_FIXED)) .functions(new SetResolution(RESOLUTION_FIXED))
.requiredProjectPermission(UserRole.ISSUE_ADMIN)
.build()) .build())
.transition(Transition.builder(DefaultTransitions.RESOLVE) .transition(Transition.builder(DefaultTransitions.RESOLVE)
.from(STATUS_REOPENED).to(STATUS_RESOLVED) .from(STATUS_REOPENED).to(STATUS_RESOLVED)
.conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.functions(new SetResolution(RESOLUTION_FIXED)) .functions(new SetResolution(RESOLUTION_FIXED))
.requiredProjectPermission(UserRole.ISSUE_ADMIN)
.build()) .build())
.transition(Transition.builder(DefaultTransitions.RESOLVE) .transition(Transition.builder(DefaultTransitions.RESOLVE)
.from(STATUS_CONFIRMED).to(STATUS_RESOLVED) .from(STATUS_CONFIRMED).to(STATUS_RESOLVED)
.conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.functions(new SetResolution(RESOLUTION_FIXED)) .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()) .build())
.transition(Transition.builder(DefaultTransitions.REOPEN) .transition(Transition.builder(DefaultTransitions.REOPEN)
.from(STATUS_RESOLVED).to(STATUS_REOPENED) .from(STATUS_RESOLVED).to(STATUS_REOPENED)

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java View File



List<Transition> result = underTest.listTransitions(issue.toDefaultIssue()); List<Transition> result = underTest.listTransitions(issue.toDefaultIssue());


assertThat(result).extracting(Transition::key).containsOnly("confirm", "resolve");
assertThat(result).extracting(Transition::key).containsOnly("confirm");
} }


@Test @Test

+ 1
- 2
server/sonar-server/src/test/resources/org/sonar/server/issue/ws/SearchActionTest/load_additional_fields.json View File

"set_tags" "set_tags"
], ],
"transitions": [ "transitions": [
"confirm",
"resolve"
"confirm"
] ]
} }
], ],

+ 2
- 2
sonar-core/src/main/resources/org/sonar/l10n/core.properties View File

projects_role.admin=Administer projects_role.admin=Administer
projects_role.admin.desc=Access project settings and perform administration tasks. (Users will also need "Browse" permission) 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=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=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.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=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=See Source Code
projects_role.codeviewer.desc=View the project's source code. (Users will also need "Browse" permission) projects_role.codeviewer.desc=View the project's source code. (Users will also need "Browse" permission)
projects_role.scan=Execute Analysis projects_role.scan=Execute Analysis

Loading…
Cancel
Save