diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2017-04-20 09:56:28 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2017-04-27 14:25:54 +0200 |
commit | 4f973d867847fe80f7c9eb03833f5d9fe1558ba7 (patch) | |
tree | 392189c769c444de67d30b2f160a8998912f3625 /server | |
parent | e8c50d90ea83a7dbec73e9b2bed7158478e61bc6 (diff) | |
download | sonarqube-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')
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(); |