diff options
author | Belen Pruvost <belen.pruvost@sonarsource.com> | 2021-10-19 13:37:13 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2021-10-22 20:03:28 +0000 |
commit | 0ee35ea91483d3e7122ffe8f97a4543b1895dadd (patch) | |
tree | f88f4cd66170ddb0710a86e21c38b7beeffa5475 /server/sonar-db-dao | |
parent | 5247c232418659f77570a6aac0fbb47f3f67aa20 (diff) | |
download | sonarqube-0ee35ea91483d3e7122ffe8f97a4543b1895dadd.tar.gz sonarqube-0ee35ea91483d3e7122ffe8f97a4543b1895dadd.zip |
SONAR-15539 - Removing a QG removes QG permissions
Diffstat (limited to 'server/sonar-db-dao')
8 files changed, 67 insertions, 6 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDao.java index d042feb2f6b..11969f911a2 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDao.java @@ -57,10 +57,6 @@ public class QualityGateGroupPermissionsDao implements Dao { mapper(dbSession).insert(dto, system2.now()); } - private static QualityGateGroupPermissionsMapper mapper(DbSession dbSession) { - return dbSession.getMapper(QualityGateGroupPermissionsMapper.class); - } - public List<SearchGroupMembershipDto> selectByQuery(DbSession dbSession, SearchPermissionQuery query, Pagination pagination) { return mapper(dbSession).selectByQuery(query, pagination); } @@ -76,4 +72,12 @@ public class QualityGateGroupPermissionsDao implements Dao { public void deleteByQualityGateAndGroup(DbSession dbSession, QualityGateDto qualityGate, GroupDto group) { mapper(dbSession).delete(qualityGate.getUuid(), group.getUuid()); } + + public void deleteByQualityGate(DbSession dbSession, QualityGateDto qualityGate) { + mapper(dbSession).deleteByQualityGate(qualityGate.getUuid()); + } + + private static QualityGateGroupPermissionsMapper mapper(DbSession dbSession) { + return dbSession.getMapper(QualityGateGroupPermissionsMapper.class); + } } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.java index 198070f41c7..609928a9579 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.java @@ -41,4 +41,6 @@ public interface QualityGateGroupPermissionsMapper { void delete(@Param("qualityGateUuid") String qualityGateUuid, @Param("groupUuid") String groupUuid); + void deleteByQualityGate(@Param("qualityGateUuid") String qualityGateUuid); + } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDao.java index 6bc72474a47..407893ff023 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDao.java @@ -64,6 +64,10 @@ public class QualityGateUserPermissionsDao implements Dao { return mapper(dbSession).countByQuery(query); } + public void deleteByQualityGate(DbSession dbSession, QualityGateDto qualityGate) { + mapper(dbSession).deleteByQualityGate(qualityGate.getUuid()); + } + private static QualityGateUserPermissionsMapper mapper(DbSession dbSession) { return dbSession.getMapper(QualityGateUserPermissionsMapper.class); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.java index 3f28de143eb..93fbcf889f3 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.java @@ -34,4 +34,7 @@ public interface QualityGateUserPermissionsMapper { List<SearchUserMembershipDto> selectByQuery(@Param("query") SearchPermissionQuery query, @Param("pagination") Pagination pagination); int countByQuery(@Param("query") SearchPermissionQuery query); + + void deleteByQualityGate(@Param("qualityGateUuid") String qualityGateUuid); + } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.xml index 7402fb0e174..33cd3600741 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.xml @@ -103,9 +103,14 @@ and group_uuid = #{groupUuid, jdbcType=VARCHAR} </delete> - <delete id="deleteByGroup" parameterType="map"> + <delete id="deleteByGroup"> delete from qgate_group_permissions where group_uuid = #{groupUuid, jdbcType=VARCHAR} </delete> + <delete id="deleteByQualityGate"> + delete from qgate_group_permissions + where quality_gate_uuid = #{qualityGateUuid, jdbcType=VARCHAR} + </delete> + </mapper> diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.xml index f4ce29b422c..28445e07760 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.xml @@ -92,5 +92,10 @@ </where> </sql> + <delete id="deleteByQualityGate"> + delete from qgate_user_permissions + where quality_gate_uuid = #{qualityGateUuid, jdbcType=VARCHAR} + </delete> + </mapper> diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDaoTest.java index 6af356fa265..4c8027a7232 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDaoTest.java @@ -234,6 +234,24 @@ public class QualityGateGroupPermissionsDaoTest { assertThat(underTest.exists(dbSession, qualityGateDto, group)).isFalse(); } + @Test + public void deleteByQualityGate() { + QualityGateDto qualityGateDto1 = insertQualityGate(); + QualityGateDto qualityGateDto2 = insertQualityGate(); + QualityGateDto qualityGateDto3 = insertQualityGate(); + GroupDto group1 = dbTester.users().insertGroup(); + GroupDto group2 = dbTester.users().insertGroup(); + dbTester.qualityGates().addGroupPermission(qualityGateDto1, group1); + dbTester.qualityGates().addGroupPermission(qualityGateDto2, group2); + dbTester.qualityGates().addGroupPermission(qualityGateDto3, group1); + + underTest.deleteByQualityGate(dbSession, qualityGateDto1); + + assertThat(underTest.exists(dbSession, qualityGateDto1, group1)).isFalse(); + assertThat(underTest.exists(dbSession, qualityGateDto2, group2)).isTrue(); + assertThat(underTest.exists(dbSession, qualityGateDto3, group1)).isTrue(); + } + private QualityGateDto insertQualityGate() { QualityGateDto qg = new QualityGateDto() .setUuid(randomAlphabetic(5)) diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDaoTest.java index 406db12f17b..bcf971e30b3 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDaoTest.java @@ -207,4 +207,24 @@ public class QualityGateUserPermissionsDaoTest { .containsExactly(user1.getUuid(), user2.getUuid(), user3.getUuid()); } -}
\ No newline at end of file + @Test + public void deleteByQualityGate() { + QualityGateDto qualityGateDto1 = qualityGateDbTester.insertQualityGate(); + QualityGateDto qualityGateDto2 = qualityGateDbTester.insertQualityGate(); + QualityGateDto qualityGateDto3 = qualityGateDbTester.insertQualityGate(); + UserDto user1 = userDbTester.insertUser(); + UserDto user2 = userDbTester.insertUser(); + UserDto user3 = userDbTester.insertUser(); + + db.qualityGates().addUserPermission(qualityGateDto1, user1); + db.qualityGates().addUserPermission(qualityGateDto2, user2); + db.qualityGates().addUserPermission(qualityGateDto3, user3); + + underTest.deleteByQualityGate(dbSession, qualityGateDto1); + + assertThat(underTest.exists(dbSession, qualityGateDto1, user1)).isFalse(); + assertThat(underTest.exists(dbSession, qualityGateDto2, user2)).isTrue(); + assertThat(underTest.exists(dbSession, qualityGateDto3, user3)).isTrue(); + } + +} |