aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-06-15 10:57:58 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-06-16 10:58:10 +0200
commit7e5f6db6be68c6451ea728ca60f07527776eeebf (patch)
tree3e9a09989ea2cd9841ac9c24425927035c2a8863 /sonar-db
parentd30b7dc59af98c4dbd30703ee12458db51a5b9f8 (diff)
downloadsonarqube-7e5f6db6be68c6451ea728ca60f07527776eeebf.tar.gz
sonarqube-7e5f6db6be68c6451ea728ca60f07527776eeebf.zip
SONAR-7746 Delete permission template characteristics when deleting a permission template
Diffstat (limited to 'sonar-db')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java14
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java8
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml5
-rw-r--r--sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java23
-rw-r--r--sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java33
-rw-r--r--sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate-result.xml6
-rw-r--r--sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate.xml6
8 files changed, 68 insertions, 29 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
index c802286ee81..61869c93115 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
@@ -19,6 +19,10 @@
*/
package org.sonar.db.permission;
+import static com.google.common.collect.Maps.newHashMap;
+import static java.lang.String.format;
+import static org.sonar.db.DatabaseUtils.executeLargeInputsWithoutOutput;
+
import com.google.common.annotations.VisibleForTesting;
import java.util.Date;
import java.util.HashMap;
@@ -36,10 +40,7 @@ import org.sonar.api.web.UserRole;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
import org.sonar.db.MyBatis;
-
-import static com.google.common.collect.Maps.newHashMap;
-import static java.lang.String.format;
-import static org.sonar.db.DatabaseUtils.executeLargeInputsWithoutOutput;
+import org.sonar.db.permission.template.PermissionTemplateCharacteristicMapper;
public class PermissionTemplateDao implements Dao {
@@ -202,10 +203,6 @@ public class PermissionTemplateDao implements Dao {
return mapper(dbSession).countAll(upperCasedNameQuery);
}
- public int countAll(DbSession session) {
- return mapper(session).countAll(null);
- }
-
private static String toUppercaseSqlQuery(String nameMatch) {
String wildcard = "%";
return format("%s%s%s", wildcard, nameMatch.toUpperCase(Locale.ENGLISH), wildcard);
@@ -254,6 +251,7 @@ public class PermissionTemplateDao implements Dao {
PermissionTemplateMapper mapper = mapper(session);
mapper.deleteUserPermissions(templateId);
mapper.deleteGroupPermissions(templateId);
+ session.getMapper(PermissionTemplateCharacteristicMapper.class).deleteByTemplateId(templateId);
mapper.delete(templateId);
}
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java
index 05e9ff0360f..51204200c87 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java
@@ -20,15 +20,15 @@
package org.sonar.db.permission.template;
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Collections.emptyList;
+import static java.util.Objects.requireNonNull;
+
import java.util.List;
import java.util.Optional;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
-import static com.google.common.base.Preconditions.checkArgument;
-import static java.util.Collections.emptyList;
-import static java.util.Objects.requireNonNull;
-
public class PermissionTemplateCharacteristicDao implements Dao {
public List<PermissionTemplateCharacteristicDto> selectByTemplateIds(DbSession dbSession, List<Long> templateIds) {
return templateIds.isEmpty() ? emptyList() : mapper(dbSession).selectByTemplateIds(templateIds);
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java
index 666a7d19fdb..4cd80559984 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java
@@ -33,4 +33,6 @@ public interface PermissionTemplateCharacteristicMapper {
void insert(PermissionTemplateCharacteristicDto templatePermissionDto);
void update(PermissionTemplateCharacteristicDto templatePermissionDto);
+
+ void deleteByTemplateId(long id);
}
diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml
index ae90a6cd456..59834cca7ad 100644
--- a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml
@@ -49,4 +49,9 @@
updated_at=#{updatedAt, jdbcType=BIGINT}
where id=#{id}
</update>
+
+ <delete id="deleteByTemplateId" parameterType="long">
+ DELETE FROM perm_tpl_characteristics
+ WHERE template_id = #{permissionTemplateId}
+ </delete>
</mapper>
diff --git a/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
index ca3dbee1f0a..b99319fa790 100644
--- a/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
@@ -19,6 +19,17 @@
*/
package org.sonar.db.permission;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.sonar.api.web.UserRole.ADMIN;
+import static org.sonar.api.web.UserRole.CODEVIEWER;
+import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
+import static org.sonar.api.web.UserRole.USER;
+import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTemplateDto;
+import static org.sonar.db.user.GroupTesting.newGroupDto;
+import static org.sonar.db.user.UserTesting.newUserDto;
+
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -38,17 +49,6 @@ import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDto;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.sonar.api.web.UserRole.ADMIN;
-import static org.sonar.api.web.UserRole.CODEVIEWER;
-import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
-import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTemplateDto;
-import static org.sonar.db.user.GroupTesting.newGroupDto;
-import static org.sonar.db.user.UserTesting.newUserDto;
-
public class PermissionTemplateDaoTest {
@@ -159,6 +159,7 @@ public class PermissionTemplateDaoTest {
session.commit();
checkTemplateTables("deletePermissionTemplate-result.xml");
+ db.assertDbUnitTable(getClass(), "deletePermissionTemplate-result.xml", "perm_tpl_characteristics");
}
@Test
diff --git a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java
index 9d5f97bcedd..ba2f29918ff 100644
--- a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java
@@ -20,6 +20,11 @@
package org.sonar.db.permission.template;
+import static com.google.common.collect.Lists.newArrayList;
+import static com.google.common.primitives.Longs.asList;
+import static java.util.Collections.emptyList;
+import static org.assertj.core.api.Assertions.assertThat;
+
import java.util.List;
import java.util.Optional;
import org.junit.Rule;
@@ -30,10 +35,6 @@ import org.sonar.api.web.UserRole;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
-import static com.google.common.collect.Lists.newArrayList;
-import static java.util.Collections.emptyList;
-import static org.assertj.core.api.Assertions.assertThat;
-
public class PermissionTemplateCharacteristicDaoTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -179,4 +180,28 @@ public class PermissionTemplateCharacteristicDaoTest {
.setCreatedAt(123_456_789L)
.setUpdatedAt(2_000_000_000L));
}
+
+ @Test
+ public void delete_by_permission_template_id() throws Exception {
+ underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+ .setPermission(UserRole.USER)
+ .setTemplateId(1L)
+ .setWithProjectCreator(true)
+ .setCreatedAt(123_456_789L)
+ .setUpdatedAt(2_000_000_000L));
+ underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+ .setPermission(UserRole.USER)
+ .setTemplateId(2L)
+ .setWithProjectCreator(true)
+ .setCreatedAt(123_456_789L)
+ .setUpdatedAt(2_000_000_000L));
+
+ assertThat(underTest.selectByTemplateIds(dbSession, asList(1L))).hasSize(1);
+ assertThat(underTest.selectByTemplateIds(dbSession, asList(1L, 2L))).hasSize(2);
+
+ dbSession.getMapper(PermissionTemplateCharacteristicMapper.class).deleteByTemplateId(1L);
+
+ assertThat(underTest.selectByTemplateIds(dbSession, asList(1L))).hasSize(0);
+ assertThat(underTest.selectByTemplateIds(dbSession, asList(1L, 2L))).hasSize(1);
+ }
}
diff --git a/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate-result.xml b/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate-result.xml
index 115b732cb64..29e39f9d91b 100644
--- a/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate-result.xml
+++ b/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate-result.xml
@@ -2,7 +2,9 @@
<permission_templates id="2" name="other template" kee="my_template_20130102_030405" description="other description"
created_at="[null]" updated_at="[null]"/>
- <perm_templates_users/>
+ <perm_templates_users id="4" template_id="2" user_id="2" permission_reference="user_permission2"/>
- <perm_templates_groups/>
+ <perm_templates_groups id="4" template_id="2" group_id="[null]" permission_reference="group_permission2"/>
+
+ <perm_tpl_characteristics id="2" template_id="2" permission_key="user" with_project_creator="[true]" created_at="1000000" updated_at="1000000"/>
</dataset>
diff --git a/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate.xml b/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate.xml
index 0520355af31..ad3dea1aabf 100644
--- a/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate.xml
+++ b/sonar-db/src/test/resources/org/sonar/db/permission/PermissionTemplateDaoTest/deletePermissionTemplate.xml
@@ -7,8 +7,14 @@
<perm_templates_users id="1" template_id="1" user_id="1" permission_reference="user_permission1"/>
<perm_templates_users id="2" template_id="1" user_id="2" permission_reference="user_permission1"/>
<perm_templates_users id="3" template_id="1" user_id="2" permission_reference="user_permission2"/>
+ <perm_templates_users id="4" template_id="2" user_id="2" permission_reference="user_permission2"/>
<perm_templates_groups id="1" template_id="1" group_id="1" permission_reference="group_permission1"/>
<perm_templates_groups id="2" template_id="1" group_id="2" permission_reference="group_permission1"/>
<perm_templates_groups id="3" template_id="1" group_id="[null]" permission_reference="group_permission2"/>
+ <perm_templates_groups id="4" template_id="2" group_id="[null]" permission_reference="group_permission2"/>
+
+ <perm_tpl_characteristics id="1" template_id="1" permission_key="user" with_project_creator="[true]" created_at="1000000" updated_at="1000000"/>
+ <perm_tpl_characteristics id="2" template_id="2" permission_key="user" with_project_creator="[true]" created_at="1000000" updated_at="1000000"/>
+
</dataset>