+++ /dev/null
-{
- "permissions": [
- {
- "key": "admin",
- "name": "Administer System",
- "description": "Ability to perform all administration functions for the instance: global configuration and personalization of default dashboards.",
- "usersCount": 0,
- "groupsCount": 1
- },
- {
- "key": "profileadmin",
- "name": "Administer Quality Profiles and Gates",
- "description": "Ability to perform any action on the quality profiles and gates.",
- "usersCount": 2,
- "groupsCount": 0
- },
- {
- "key": "shareDashboard",
- "name": "Share Dashboards And Filters",
- "description": "Ability to share dashboards, issue filters and measure filters.",
- "usersCount": 0,
- "groupsCount": 1
- },
- {
- "key": "scan",
- "name": "Execute Analysis",
- "description": "Ability to execute analyses, and to get all settings required to perform the analysis, even the secured ones like the scm account password, the jira account password, and so on.",
- "usersCount": 0,
- "groupsCount": 2
- },
- {
- "key": "dryRunScan",
- "name": "Execute Preview Analysis",
- "description": "Ability to execute preview analysis (results are not pushed to the server). This permission does not include the ability to access secured settings such as the scm account password, the jira account password, and so on. This permission is required to execute preview analysis in Eclipse or via the Issues Report plugin.",
- "usersCount": 2,
- "groupsCount": 0
- },
- {
- "key": "provisioning",
- "name": "Provision Projects",
- "description": "Ability to initialize project structure before first analysis.",
- "usersCount": 1,
- "groupsCount": 1
- }
- ]
-}
-
-
-
+++ /dev/null
-{
- "paging": {
- "pageIndex": 1,
- "pageSize": 25,
- "total": 4
- },
- "projects": [
- {
- "id": "0bd7b1e7-91d6-439e-a607-4a3a9aad3c6a",
- "key": "net.java.openjdk:jdk7",
- "name": "JDK 7",
- "qualifier": "TRK",
- "permissions": [
- {
- "key": "admin",
- "usersCount": 3,
- "groupsCount": 4
- },
- {
- "key": "issueadmin",
- "usersCount": 1,
- "groupsCount": 0
- }
- ]
- },
- {
- "id": "ce4c03d6-430f-40a9-b777-ad877c00aa4d",
- "key": "clang",
- "name": "Clang",
- "qualifier": "TRK",
- "permissions": [
- {
- "key": "issueadmin",
- "usersCount": 1,
- "groupsCount": 0
- }
- ]
- },
- {
- "id": "4e607bf9-7ed0-484a-946d-d58ba7dab2fb",
- "key": "simon-brandhof",
- "name": "Simon Brandhof",
- "qualifier": "DEV",
- "permissions": [
- {
- "key": "admin",
- "usersCount": 0,
- "groupsCount": 1
- },
- {
- "key": "issueadmin",
- "usersCount": 1,
- "groupsCount": 0
- }
- ]
- },
- {
- "id": "752d8bfd-420c-4a83-a4e5-8ab19b13c8fc",
- "key": "Java",
- "name": "Java",
- "qualifier": "VW",
- "permissions": [
- {
- "key": "admin",
- "usersCount": 0,
- "groupsCount": 1
- },
- {
- "key": "issueadmin",
- "usersCount": 1,
- "groupsCount": 0
- }
- ]
- }
- ],
- "permissions": [
- {
- "key": "user",
- "name": "Browse",
- "description": "Ability to access a project, browse its measures, and create/edit issues for it."
- },
- {
- "key": "admin",
- "name": "Administer",
- "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "issueadmin",
- "name": "Administer Issues",
- "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won\u0027t Fix or changing an Issue\u0027s severity. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "codeviewer",
- "name": "See Source Code",
- "description": "Ability to view the project\u0027s source code. (Users will also need \"Browse\" permission)"
- }
- ]
-}
+++ /dev/null
-{
- "permissionTemplates": [
- {
- "id": "AU-TpxcA-iU5OvuD2FL0",
- "name": "Default template for Developers",
- "projectKeyPattern": ".*sonar.developer.*",
- "createdAt": "2004-11-15T07:26:40+0100",
- "updatedAt": "2004-11-19T22:33:20+0100",
- "permissions": [
- {
- "key": "user",
- "usersCount": 0,
- "groupsCount": 1
- }
- ]
- },
- {
- "id": "AU-Tpxb--iU5OvuD2FLy",
- "name": "Default template for Projects",
- "description": "Template for new projects",
- "createdAt": "2001-09-09T03:46:40+0200",
- "updatedAt": "2001-09-09T03:46:40+0200",
- "permissions": [
- {
- "key": "admin",
- "usersCount": 0,
- "groupsCount": 1
- },
- {
- "key": "codeviewer",
- "usersCount": 1,
- "groupsCount": 0
- },
- {
- "key": "issueadmin",
- "usersCount": 3,
- "groupsCount": 0
- }
- ]
- },
- {
- "id": "AU-TpxcA-iU5OvuD2FLz",
- "name": "Default template for Views",
- "description": "Template for new views",
- "projectKeyPattern": ".*sonar.views.*",
- "createdAt": "2001-09-09T03:46:40+0200",
- "updatedAt": "2004-11-09T12:33:20+0100",
- "permissions": [
- {
- "key": "issueadmin",
- "usersCount": 0,
- "groupsCount": 3
- },
- {
- "key": "user",
- "usersCount": 2,
- "groupsCount": 0
- }
- ]
- }
- ],
- "defaultTemplates": [
- {
- "templateId": "AU-Tpxb--iU5OvuD2FLy",
- "qualifier": "TRK"
- },
- {
- "templateId": "AU-TpxcA-iU5OvuD2FLz",
- "qualifier": "VW"
- },
- {
- "templateId": "AU-TpxcA-iU5OvuD2FL0",
- "qualifier": "DEV"
- }
- ],
- "permissions": [
- {
- "key": "user",
- "name": "Browse",
- "description": "Ability to access a project, browse its measures, and create/edit issues for it."
- },
- {
- "key": "admin",
- "name": "Administer",
- "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "issueadmin",
- "name": "Administer Issues",
- "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won\u0027t Fix or changing an Issue\u0027s severity. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "codeviewer",
- "name": "See Source Code",
- "description": "Ability to view the project\u0027s source code. (Users will also need \"Browse\" permission)"
- }
- ]
-}
put("projects_role.user.desc", "Ability to access a project, browse its measures, and create/edit issues for it.");
put("projects_role.codeviewer", "See Source Code");
put("projects_role.codeviewer.desc", "Ability to view the project's source code. (Users will also need \"Browse\" permission)");
+ put("projects_role.scan", "Execute Analysis");
+ put("projects_role.scan.desc",
+ "Ability to execute analyses, and to get all settings required to perform the analysis, even the secured ones like the scm account password, the jira account password, and so on.");
}
@Override
--- /dev/null
+/*
+ * SonarQube :: Server
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+@ParametersAreNonnullByDefault
+package org.sonar.server.i18n;
+
+import javax.annotation.ParametersAreNonnullByDefault;
package org.sonar.server.permission;
import com.google.common.collect.Maps;
+import java.util.Map;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.server.exceptions.BadRequestException;
-import java.util.Map;
-
import static org.assertj.core.api.Assertions.assertThat;
public class PermissionChangeTest {
PermissionChange query = PermissionChange.buildFromParams(inconsistentParams);
thrown.expect(BadRequestException.class);
- thrown.expectMessage("Invalid component permission key invalid. Valid values are [user, admin, issueadmin, codeviewer]");
+ thrown.expectMessage("Invalid component permission key invalid. Valid values are [user, admin, issueadmin, codeviewer, scan]");
query.validate();
}
}
String result = ws.newRequest().execute().getInput();
- assertJson(result).isSimilarTo(getClass().getResource("search_global_permissions-example.json"));
+ assertJson(result).isSimilarTo(getClass().getResource("SearchGlobalPermissionsActionTest/search_global_permissions-example.json"));
}
@Test
String result = ws.newRequest().execute().getInput();
- assertJson(result).isSimilarTo(getClass().getResource("search_project_permissions-example.json"));
+ assertJson(result)
+ .ignoreFields("permissions")
+ .isSimilarTo(getClass().getResource("SearchProjectPermissionsActionTest/search_project_permissions-example.json"));
}
@Test
public void empty_result() {
String result = ws.newRequest().execute().getInput();
- assertJson(result).isSimilarTo(getClass().getResource("SearchProjectPermissionsActionTest/empty.json"));
+ assertJson(result)
+ .ignoreFields("permissions")
+ .isSimilarTo(getClass().getResource("SearchProjectPermissionsActionTest/empty.json"));
}
@Test
ws.newRequest().execute();
}
+ @Test
+ public void display_all_project_permissions() {
+ String result = ws.newRequest().execute().getInput();
+
+ assertJson(result)
+ .ignoreFields("permissions")
+ .isSimilarTo(getClass().getResource("SearchProjectPermissionsActionTest/display_all_project_permissions.json"));
+ }
+
private ComponentDto insertView() {
return insertComponent(newView()
.setUuid("752d8bfd-420c-4a83-a4e5-8ab19b13c8fc")
assertJson(result)
.withStrictArrayOrder()
- .isSimilarTo(getClass().getResource("search_templates-example.json"));
+ .ignoreFields("permissions")
+ .isSimilarTo(getClass().getResource("SearchTemplatesActionTest/search_templates-example.json"));
}
@Test
assertJson(result)
.withStrictArrayOrder()
+ .ignoreFields("permissions")
.isSimilarTo(getClass().getResource("SearchTemplatesActionTest/empty.json"));
}
ws.newRequest().execute();
}
+ @Test
+ public void display_all_project_permissions() {
+ String result = newRequest();
+
+ assertJson(result)
+ .withStrictArrayOrder()
+ .ignoreFields("defaultTemplates", "permissionTemplates")
+ .isSimilarTo(getClass().getResource("SearchTemplatesActionTest/display_all_project_permissions.json"));
+ }
+
private String newRequest() {
return ws.newRequest().execute().getInput();
}
--- /dev/null
+{
+ "permissions": [
+ {
+ "key": "admin",
+ "name": "Administer System",
+ "description": "Ability to perform all administration functions for the instance: global configuration and personalization of default dashboards.",
+ "usersCount": 0,
+ "groupsCount": 1
+ },
+ {
+ "key": "profileadmin",
+ "name": "Administer Quality Profiles and Gates",
+ "description": "Ability to perform any action on the quality profiles and gates.",
+ "usersCount": 2,
+ "groupsCount": 0
+ },
+ {
+ "key": "shareDashboard",
+ "name": "Share Dashboards And Filters",
+ "description": "Ability to share dashboards, issue filters and measure filters.",
+ "usersCount": 0,
+ "groupsCount": 1
+ },
+ {
+ "key": "scan",
+ "name": "Execute Analysis",
+ "description": "Ability to execute analyses, and to get all settings required to perform the analysis, even the secured ones like the scm account password, the jira account password, and so on.",
+ "usersCount": 0,
+ "groupsCount": 2
+ },
+ {
+ "key": "dryRunScan",
+ "name": "Execute Preview Analysis",
+ "description": "Ability to execute preview analysis (results are not pushed to the server). This permission does not include the ability to access secured settings such as the scm account password, the jira account password, and so on. This permission is required to execute preview analysis in Eclipse or via the Issues Report plugin.",
+ "usersCount": 2,
+ "groupsCount": 0
+ },
+ {
+ "key": "provisioning",
+ "name": "Provision Projects",
+ "description": "Ability to initialize project structure before first analysis.",
+ "usersCount": 1,
+ "groupsCount": 1
+ }
+ ]
+}
+
+
+
--- /dev/null
+{
+ "projects": [],
+ "permissions": [
+ {
+ "key": "user",
+ "name": "Browse",
+ "description": "Ability to access a project, browse its measures, and create/edit issues for it."
+ },
+ {
+ "key": "admin",
+ "name": "Administer",
+ "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "issueadmin",
+ "name": "Administer Issues",
+ "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won't Fix or changing an Issue's severity. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "codeviewer",
+ "name": "See Source Code",
+ "description": "Ability to view the project's source code. (Users will also need \"Browse\" permission)"
+ }
+ ],
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 25,
+ "total": 0
+ }
+}
{
"projects": [],
- "permissions": [
- {
- "key": "user",
- "name": "Browse",
- "description": "Ability to access a project, browse its measures, and create/edit issues for it."
- },
- {
- "key": "admin",
- "name": "Administer",
- "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "issueadmin",
- "name": "Administer Issues",
- "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won't Fix or changing an Issue's severity. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "codeviewer",
- "name": "See Source Code",
- "description": "Ability to view the project's source code. (Users will also need \"Browse\" permission)"
- }
- ],
"paging": {
"pageIndex": 1,
"pageSize": 25,
--- /dev/null
+{
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 25,
+ "total": 4
+ },
+ "projects": [
+ {
+ "id": "0bd7b1e7-91d6-439e-a607-4a3a9aad3c6a",
+ "key": "net.java.openjdk:jdk7",
+ "name": "JDK 7",
+ "qualifier": "TRK",
+ "permissions": [
+ {
+ "key": "admin",
+ "usersCount": 3,
+ "groupsCount": 4
+ },
+ {
+ "key": "issueadmin",
+ "usersCount": 1,
+ "groupsCount": 0
+ }
+ ]
+ },
+ {
+ "id": "ce4c03d6-430f-40a9-b777-ad877c00aa4d",
+ "key": "clang",
+ "name": "Clang",
+ "qualifier": "TRK",
+ "permissions": [
+ {
+ "key": "issueadmin",
+ "usersCount": 1,
+ "groupsCount": 0
+ }
+ ]
+ },
+ {
+ "id": "4e607bf9-7ed0-484a-946d-d58ba7dab2fb",
+ "key": "simon-brandhof",
+ "name": "Simon Brandhof",
+ "qualifier": "DEV",
+ "permissions": [
+ {
+ "key": "admin",
+ "usersCount": 0,
+ "groupsCount": 1
+ },
+ {
+ "key": "issueadmin",
+ "usersCount": 1,
+ "groupsCount": 0
+ }
+ ]
+ },
+ {
+ "id": "752d8bfd-420c-4a83-a4e5-8ab19b13c8fc",
+ "key": "Java",
+ "name": "Java",
+ "qualifier": "VW",
+ "permissions": [
+ {
+ "key": "admin",
+ "usersCount": 0,
+ "groupsCount": 1
+ },
+ {
+ "key": "issueadmin",
+ "usersCount": 1,
+ "groupsCount": 0
+ }
+ ]
+ }
+ ],
+ "permissions": [
+ {
+ "key": "user",
+ "name": "Browse",
+ "description": "Ability to access a project, browse its measures, and create/edit issues for it."
+ },
+ {
+ "key": "admin",
+ "name": "Administer",
+ "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "issueadmin",
+ "name": "Administer Issues",
+ "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won\u0027t Fix or changing an Issue\u0027s severity. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "codeviewer",
+ "name": "See Source Code",
+ "description": "Ability to view the project\u0027s source code. (Users will also need \"Browse\" permission)"
+ }
+ ]
+}
--- /dev/null
+{
+ "permissions": [
+ {
+ "key": "user",
+ "name": "Browse",
+ "description": "Ability to access a project, browse its measures, and create/edit issues for it."
+ },
+ {
+ "key": "admin",
+ "name": "Administer",
+ "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "issueadmin",
+ "name": "Administer Issues",
+ "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won't Fix or changing an Issue's severity. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "codeviewer",
+ "name": "See Source Code",
+ "description": "Ability to view the project's source code. (Users will also need \"Browse\" permission)"
+ },
+ {
+ "key": "scan",
+ "name": "Execute Analysis",
+ "description": "Ability to execute analyses, and to get all settings required to perform the analysis, even the secured ones like the scm account password, the jira account password, and so on."
+ }
+ ]
+}
"templateId": "AU-TpxcA-iU5OvuD2FL0",
"qualifier": "DEV"
}
- ],
- "permissions": [
- {
- "key": "user",
- "name": "Browse",
- "description": "Ability to access a project, browse its measures, and create/edit issues for it."
- },
- {
- "key": "admin",
- "name": "Administer",
- "description": "Ability to access project settings and perform administration tasks. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "issueadmin",
- "name": "Administer Issues",
- "description": "Grants the permission to perform advanced editing on issues: marking an issue False Positive / Won't Fix or changing an Issue's severity. (Users will also need \"Browse\" permission)"
- },
- {
- "key": "codeviewer",
- "name": "See Source Code",
- "description": "Ability to view the project's source code. (Users will also need \"Browse\" permission)"
- }
]
}
--- /dev/null
+{
+ "permissionTemplates": [
+ {
+ "id": "AU-TpxcA-iU5OvuD2FL0",
+ "name": "Default template for Developers",
+ "projectKeyPattern": ".*sonar.developer.*",
+ "createdAt": "2004-11-15T07:26:40+0100",
+ "updatedAt": "2004-11-19T22:33:20+0100",
+ "permissions": [
+ {
+ "key": "user",
+ "usersCount": 0,
+ "groupsCount": 1
+ }
+ ]
+ },
+ {
+ "id": "AU-Tpxb--iU5OvuD2FLy",
+ "name": "Default template for Projects",
+ "description": "Template for new projects",
+ "createdAt": "2001-09-09T03:46:40+0200",
+ "updatedAt": "2001-09-09T03:46:40+0200",
+ "permissions": [
+ {
+ "key": "admin",
+ "usersCount": 0,
+ "groupsCount": 1
+ },
+ {
+ "key": "codeviewer",
+ "usersCount": 1,
+ "groupsCount": 0
+ },
+ {
+ "key": "issueadmin",
+ "usersCount": 3,
+ "groupsCount": 0
+ }
+ ]
+ },
+ {
+ "id": "AU-TpxcA-iU5OvuD2FLz",
+ "name": "Default template for Views",
+ "description": "Template for new views",
+ "projectKeyPattern": ".*sonar.views.*",
+ "createdAt": "2001-09-09T03:46:40+0200",
+ "updatedAt": "2004-11-09T12:33:20+0100",
+ "permissions": [
+ {
+ "key": "issueadmin",
+ "usersCount": 0,
+ "groupsCount": 3
+ },
+ {
+ "key": "user",
+ "usersCount": 2,
+ "groupsCount": 0
+ }
+ ]
+ }
+ ],
+ "defaultTemplates": [
+ {
+ "templateId": "AU-Tpxb--iU5OvuD2FLy",
+ "qualifier": "TRK"
+ },
+ {
+ "templateId": "AU-TpxcA-iU5OvuD2FLz",
+ "qualifier": "VW"
+ },
+ {
+ "templateId": "AU-TpxcA-iU5OvuD2FL0",
+ "qualifier": "DEV"
+ }
+ ]
+}
import PermissionTemplates from './permission-templates';
import { getPermissionTemplates } from '../../api/permissions';
-const PERMISSIONS_ORDER = ['user', 'codeviewer', 'issueadmin', 'admin'];
+const PERMISSIONS_ORDER = ['user', 'codeviewer', 'issueadmin', 'admin', 'scan'];
export default React.createClass({
propTypes: {
import { translate } from '../../helpers/l10n';
-const PERMISSIONS_ORDER = ['user', 'codeviewer', 'issueadmin', 'admin'];
+const PERMISSIONS_ORDER = ['user', 'codeviewer', 'issueadmin', 'admin', 'scan'];
export default React.createClass({
projects_role.user.desc=Access a project, browse its measures, and create/edit issues for it.
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
+projects_role.scan.desc=Ability to execute analyses, and to get all settings required to perform the analysis, even the secured ones like the scm account password, the jira account password, and so on.
projects_role.bulk_change=Bulk Change
projects_role.apply_template=Apply Permission Template
projects_role.apply_template_to_xxx=Apply Permission Template To "{0}"
*/
public final class ProjectPermissions {
- private ProjectPermissions() {
- // static constants only
- }
-
/**
- * All the component permissions values, ordered from {@link UserRole#USER} to {@link UserRole#CODEVIEWER}.
+ * All the component permissions values, ordered from {@link UserRole#USER} to {@link GlobalPermissions#SCAN_EXECUTION}.
*/
- public static final List<String> ALL = ImmutableList.of(UserRole.USER, UserRole.ADMIN, UserRole.ISSUE_ADMIN, UserRole.CODEVIEWER);
+ public static final List<String> ALL = ImmutableList.of(UserRole.USER, UserRole.ADMIN, UserRole.ISSUE_ADMIN, UserRole.CODEVIEWER, GlobalPermissions.SCAN_EXECUTION);
+
public static final String ALL_ON_ONE_LINE = Joiner.on(", ").join(ProjectPermissions.ALL);
+
+ private ProjectPermissions() {
+ // static constants only
+ }
}
--- /dev/null
+/*
+ * SonarQube :: Database
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.permission;
+
+import org.junit.Test;
+import org.sonar.api.web.UserRole;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ProjectPermissionsTest {
+
+ @Test
+ public void all_permissions() throws Exception {
+ assertThat(ProjectPermissions.ALL).containsOnly(UserRole.USER, UserRole.ADMIN, UserRole.ISSUE_ADMIN, UserRole.CODEVIEWER, GlobalPermissions.SCAN_EXECUTION);
+ }
+
+ @Test
+ public void all_permissions_as_string() throws Exception {
+ assertThat(ProjectPermissions.ALL_ON_ONE_LINE).isEqualTo("user, admin, issueadmin, codeviewer, scan");
+ }
+}