aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-04-20 09:56:28 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-04-27 14:25:54 +0200
commit4f973d867847fe80f7c9eb03833f5d9fe1558ba7 (patch)
tree392189c769c444de67d30b2f160a8998912f3625 /server
parente8c50d90ea83a7dbec73e9b2bed7158478e61bc6 (diff)
downloadsonarqube-4f973d867847fe80f7c9eb03833f5d9fe1558ba7.tar.gz
sonarqube-4f973d867847fe80f7c9eb03833f5d9fe1558ba7.zip
SONAR-9140 support public/private projects in GroupPermissionMapper
no change required, this mapper provides SQL request to CRUD table GROUP_ROLES
Diffstat (limited to 'server')
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml37
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java54
2 files changed, 79 insertions, 12 deletions
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml
index a7a6e545d48..b2ab5ef4a9e 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml
@@ -5,23 +5,38 @@
<select id="groupsCountByProjectIdAndPermission" parameterType="map"
resultType="org.sonar.db.permission.CountPerProjectPermission">
- SELECT count(1) as count, permission, componentId
- FROM
- (SELECT g.name as name, group_role.role as permission, group_role.resource_id as componentId
- FROM groups g
- INNER JOIN group_roles group_role ON group_role.group_id=g.id
- UNION
- -- Add Anyone group permission
- SELECT #{anyoneGroup} as name, group_role.role as permission, group_role.resource_id as componentId
- FROM group_roles group_role
- where group_role.group_id IS NULL
+ SELECT
+ count(1) as count,
+ permission,
+ componentId
+ FROM (
+ SELECT
+ g.name as name,
+ group_role.role as permission,
+ group_role.resource_id as componentId
+ FROM
+ groups g
+ INNER JOIN group_roles group_role ON
+ group_role.group_id=g.id
+ UNION
+ -- Add Anyone group permission
+ SELECT
+ #{anyoneGroup} as name,
+ group_role.role as permission,
+ group_role.resource_id as componentId
+ FROM
+ group_roles group_role
+ where
+ group_role.group_id IS NULL
) groups
where
groups.componentId in
<foreach collection="componentIds" open="(" close=")" item="id" separator=",">
#{id,jdbcType=BIGINT}
</foreach>
- GROUP BY groups.permission, groups.componentId
+ GROUP BY
+ groups.permission,
+ groups.componentId
</select>
<select id="selectGroupNamesByQuery" parameterType="map" resultType="string">
diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java
index 9c7dfc4d288..5310bad293d 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java
@@ -39,8 +39,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
-import static org.sonar.db.component.ComponentTesting.newProjectCopy;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
+import static org.sonar.db.component.ComponentTesting.newProjectCopy;
import static org.sonar.db.component.ComponentTesting.newView;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.test.JsonAssert.assertJson;
@@ -68,6 +68,58 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest<Sea
}
@Test
+ public void search_project_permissions_counts_0_users_and_0_groups_on_public_project_without_any_specified_permission_in_DB() {
+ ComponentDto project = db.components().insertPublicProject();
+
+ String result = newRequest().execute().getInput();
+
+ assertJson(result)
+ .ignoreFields("permissions")
+ .isSimilarTo("{" +
+ " \"paging\": {" +
+ " \"pageIndex\": 1," +
+ " \"pageSize\": 25," +
+ " \"total\": 1" +
+ " }," +
+ " \"projects\": [" +
+ " {" +
+ " \"id\": \"" + project.uuid() + "\"," +
+ " \"key\": \"" + project.key() + "\"," +
+ " \"name\": \"" + project.name() + "\"," +
+ " \"qualifier\": \"TRK\"," +
+ " \"permissions\": []" +
+ " }" +
+ " ]" +
+ "}");
+ }
+
+ @Test
+ public void search_project_permissions_counts_0_users_and_0_groups_on_private_project_without_any_specified_permission_in_DB() {
+ ComponentDto project = db.components().insertPrivateProject();
+
+ String result = newRequest().execute().getInput();
+
+ assertJson(result)
+ .ignoreFields("permissions")
+ .isSimilarTo("{" +
+ " \"paging\": {" +
+ " \"pageIndex\": 1," +
+ " \"pageSize\": 25," +
+ " \"total\": 1" +
+ " }," +
+ " \"projects\": [" +
+ " {" +
+ " \"id\": \"" + project.uuid() + "\"," +
+ " \"key\": \"" + project.key() + "\"," +
+ " \"name\": \"" + project.name() + "\"," +
+ " \"qualifier\": \"TRK\"," +
+ " \"permissions\": []" +
+ " }" +
+ " ]" +
+ "}");
+ }
+
+ @Test
public void search_project_permissions() throws Exception {
UserDto user1 = db.users().insertUser();
UserDto user2 = db.users().insertUser();