aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao
diff options
context:
space:
mode:
authorBelen Pruvost <belen.pruvost@sonarsource.com>2021-10-19 13:37:13 +0200
committersonartech <sonartech@sonarsource.com>2021-10-22 20:03:28 +0000
commit0ee35ea91483d3e7122ffe8f97a4543b1895dadd (patch)
treef88f4cd66170ddb0710a86e21c38b7beeffa5475 /server/sonar-db-dao
parent5247c232418659f77570a6aac0fbb47f3f67aa20 (diff)
downloadsonarqube-0ee35ea91483d3e7122ffe8f97a4543b1895dadd.tar.gz
sonarqube-0ee35ea91483d3e7122ffe8f97a4543b1895dadd.zip
SONAR-15539 - Removing a QG removes QG permissions
Diffstat (limited to 'server/sonar-db-dao')
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDao.java12
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.java2
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDao.java4
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.java3
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateGroupPermissionsMapper.xml7
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateUserPermissionsMapper.xml5
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateGroupPermissionsDaoTest.java18
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateUserPermissionsDaoTest.java22
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();
+ }
+
+}