diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-06-15 10:57:58 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-06-16 10:58:10 +0200 |
commit | 7e5f6db6be68c6451ea728ca60f07527776eeebf (patch) | |
tree | 3e9a09989ea2cd9841ac9c24425927035c2a8863 /sonar-db | |
parent | d30b7dc59af98c4dbd30703ee12458db51a5b9f8 (diff) | |
download | sonarqube-7e5f6db6be68c6451ea728ca60f07527776eeebf.tar.gz sonarqube-7e5f6db6be68c6451ea728ca60f07527776eeebf.zip |
SONAR-7746 Delete permission template characteristics when deleting a permission template
Diffstat (limited to 'sonar-db')
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> |