From 4c20d02a36d8da972e2983e4c02372285c76b153 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Vilain Date: Thu, 11 Jul 2013 17:19:51 +0200 Subject: SONAR-4453 Added tests to cover permission template application --- .../core/permission/ComponentPermissionFacade.java | 4 +- .../sonar/core/user/PermissionTemplateMapper.xml | 2 + .../resources/org/sonar/core/user/UserMapper.xml | 46 +++++++++++----------- .../permission/ComponentPermissionFacadeTest.java | 32 ++++++++++++++- .../org/sonar/core/user/PermissionDaoTest.java | 34 ++++++++-------- .../should_apply_permission_template-result.xml | 34 ++++++++++++++++ .../should_apply_permission_template.xml | 25 ++++++++++++ .../removeGroupPermissionFromTemplate-result.xml | 3 +- .../removeGroupPermissionFromTemplate.xml | 5 ++- ...emoveNullGroupPermissionFromTemplate-result.xml | 3 +- .../removeNullGroupPermissionFromTemplate.xml | 5 ++- .../removeUserPermissionFromTemplate-result.xml | 3 +- .../removeUserPermissionFromTemplate.xml | 5 ++- 13 files changed, 150 insertions(+), 51 deletions(-) create mode 100644 sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template-result.xml create mode 100644 sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template.xml (limited to 'sonar-core') diff --git a/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java b/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java index 177a5c69f5f..e1dcb52b8d8 100644 --- a/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java +++ b/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java @@ -135,6 +135,7 @@ public class ComponentPermissionFacade implements TaskComponent, ServerComponent public void applyPermissionTemplate(Long templateId, Long resourceId) { SqlSession session = myBatis.openSession(); try { + removeAllPermissions(resourceId, session); PermissionTemplateDto permissionTemplate = getPermissionTemplate(templateId); List usersPermissions = permissionTemplate.getUsersPermissions(); if(usersPermissions != null) { @@ -146,7 +147,8 @@ public class ComponentPermissionFacade implements TaskComponent, ServerComponent List groupsPermissions = permissionTemplate.getGroupsPermissions(); if(groupsPermissions != null) { for (PermissionTemplateGroupDto groupPermission : groupsPermissions) { - addGroupPermission(resourceId, groupPermission.getGroupName(), groupPermission.getPermission(), session); + String groupName = groupPermission.getGroupName() == null ? DefaultGroups.ANYONE : groupPermission.getGroupName(); + addGroupPermission(resourceId, groupName, groupPermission.getPermission(), session); } } session.commit(); diff --git a/sonar-core/src/main/resources/org/sonar/core/user/PermissionTemplateMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/PermissionTemplateMapper.xml index de84f3485bd..4e9dc2d47f0 100644 --- a/sonar-core/src/main/resources/org/sonar/core/user/PermissionTemplateMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/user/PermissionTemplateMapper.xml @@ -38,6 +38,7 @@ DELETE FROM perm_templates_users WHERE template_id = #{templateId} AND user_id = #{userId} + AND permission_reference = #{permission} @@ -48,6 +49,7 @@ DELETE FROM perm_templates_groups WHERE template_id = #{templateId} + AND permission_reference = #{permission} AND diff --git a/sonar-core/src/main/resources/org/sonar/core/user/UserMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/UserMapper.xml index 3b5f9003cb6..4b3a0ad0599 100644 --- a/sonar-core/src/main/resources/org/sonar/core/user/UserMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/user/UserMapper.xml @@ -14,89 +14,89 @@ - delete from groups_users where user_id=#{id} + DELETE FROM groups_users WHERE user_id=#{id} - delete from user_roles where user_id=#{id} + DELETE FROM user_roles WHERE user_id=#{id} - delete from properties where user_id=#{id} + DELETE FROM properties WHERE user_id=#{id} - delete from dashboards where user_id=#{id} + DELETE FROM dashboards WHERE user_id=#{id} - delete from active_dashboards where user_id=#{id} + DELETE FROM active_dashboards WHERE user_id=#{id} - delete from user_roles where user_id=#{id} + DELETE FROM user_roles WHERE user_id=#{id} - delete from measure_filters where user_id=#{id} + DELETE FROM measure_filters WHERE user_id=#{id} - delete from measure_filter_favourites where user_id=#{id} + DELETE FROM measure_filter_favourites WHERE user_id=#{id} - delete from issue_filters where user_login=#{id} + DELETE FROM issue_filters WHERE user_login=#{id} - delete from issue_filter_favourites where user_login=#{id} + DELETE FROM issue_filter_favourites WHERE user_login=#{id} - update users set active=${_false} where id=#{id} + UPDATE users SET active=${_false} WHERE id=#{id} diff --git a/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java b/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java index 88fca000c36..6760a01ee15 100644 --- a/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java +++ b/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java @@ -20,5 +20,35 @@ package org.sonar.core.permission; -public class ComponentPermissionFacadeTest { +import org.junit.Before; +import org.junit.Test; +import org.sonar.core.persistence.AbstractDaoTestCase; +import org.sonar.core.user.PermissionDao; +import org.sonar.core.user.RoleDao; +import org.sonar.core.user.UserDao; + +public class ComponentPermissionFacadeTest extends AbstractDaoTestCase { + + private ComponentPermissionFacade permissionFacade; + private RoleDao roleDao; + private UserDao userDao; + private PermissionDao permissionDao; + + @Before + public void setUp() { + roleDao = new RoleDao(getMyBatis()); + userDao = new UserDao(getMyBatis()); + permissionDao = new PermissionDao(getMyBatis()); + permissionFacade = new ComponentPermissionFacade(getMyBatis(), roleDao, userDao, permissionDao); + } + + @Test + public void should_apply_permission_template() throws Exception { + setupData("should_apply_permission_template"); + + permissionFacade.applyPermissionTemplate(1L, 123L); + + checkTable("should_apply_permission_template", "group_roles", "group_id", "resource_id", "role"); + checkTable("should_apply_permission_template", "user_roles", "group_id", "resource_id", "role"); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/user/PermissionDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/PermissionDaoTest.java index 6f99afabffc..bfce78a6942 100644 --- a/sonar-core/src/test/java/org/sonar/core/user/PermissionDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/user/PermissionDaoTest.java @@ -129,8 +129,8 @@ public class PermissionDaoTest extends AbstractDaoTestCase { permissionDao.deletePermissionTemplate(1L); checkTable("deletePermissionTemplate", "permission_templates", "id", "name", "description"); - checkTable("deletePermissionTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("deletePermissionTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("deletePermissionTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("deletePermissionTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test @@ -139,18 +139,18 @@ public class PermissionDaoTest extends AbstractDaoTestCase { permissionDao.addUserPermission(1L, 1L, "new_permission"); checkTable("addUserPermissionToTemplate", "permission_templates", "id", "name", "description"); - checkTable("addUserPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("addUserPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("addUserPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("addUserPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test public void should_remove_user_permission_from_template() throws Exception { setupData("removeUserPermissionFromTemplate"); - permissionDao.removeUserPermission(1L, 2L, "existing_permission"); + permissionDao.removeUserPermission(1L, 2L, "permission_to_remove"); checkTable("removeUserPermissionFromTemplate", "permission_templates", "id", "name", "description"); - checkTable("removeUserPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("removeUserPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("removeUserPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("removeUserPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test @@ -159,18 +159,18 @@ public class PermissionDaoTest extends AbstractDaoTestCase { permissionDao.addGroupPermission(1L, 1L, "new_permission"); checkTable("addGroupPermissionToTemplate", "permission_templates", "id", "name", "description"); - checkTable("addGroupPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("addGroupPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("addGroupPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("addGroupPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test public void should_remove_group_permission_from_template() throws Exception { setupData("removeGroupPermissionFromTemplate"); - permissionDao.removeGroupPermission(1L, 2L, "existing_permission"); + permissionDao.removeGroupPermission(1L, 2L, "permission_to_remove"); checkTable("removeGroupPermissionFromTemplate", "permission_templates", "id", "name", "description"); - checkTable("removeGroupPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("removeGroupPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("removeGroupPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("removeGroupPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test @@ -179,17 +179,17 @@ public class PermissionDaoTest extends AbstractDaoTestCase { permissionDao.addGroupPermission(1L, null, "new_permission"); checkTable("addNullGroupPermissionToTemplate", "permission_templates", "id", "name", "description"); - checkTable("addNullGroupPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("addNullGroupPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("addNullGroupPermissionToTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("addNullGroupPermissionToTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } @Test public void should_remove_group_permission_with_null_name() throws Exception { setupData("removeNullGroupPermissionFromTemplate"); - permissionDao.removeGroupPermission(1L, null, "existing_permission"); + permissionDao.removeGroupPermission(1L, null, "permission_to_remove"); checkTable("removeNullGroupPermissionFromTemplate", "permission_templates", "id", "name", "description"); - checkTable("removeNullGroupPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission"); - checkTable("removeNullGroupPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission"); + checkTable("removeNullGroupPermissionFromTemplate", "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); + checkTable("removeNullGroupPermissionFromTemplate", "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); } } diff --git a/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template-result.xml b/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template-result.xml new file mode 100644 index 00000000000..ab25beb9f07 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template-result.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template.xml b/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template.xml new file mode 100644 index 00000000000..f962b008ca8 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/permission/ComponentPermissionFacadeTest/should_apply_permission_template.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate-result.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate-result.xml index d2b04dcce89..33773a8d4e0 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate-result.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate-result.xml @@ -1,5 +1,6 @@ - + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate.xml index 2cb0ab460fd..9df53ee7d2b 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeGroupPermissionFromTemplate.xml @@ -1,6 +1,7 @@ - - + + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate-result.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate-result.xml index d2b04dcce89..52fd267873b 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate-result.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate-result.xml @@ -1,5 +1,6 @@ - + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate.xml index 23bd158f3a1..3e3f93359a2 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeNullGroupPermissionFromTemplate.xml @@ -1,6 +1,7 @@ - - + + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate-result.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate-result.xml index f4c500ba1ff..925a1b25692 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate-result.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate-result.xml @@ -1,7 +1,8 @@ - + + \ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate.xml b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate.xml index 219c1f07286..c160e4edf30 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/PermissionDaoTest/removeUserPermissionFromTemplate.xml @@ -1,8 +1,9 @@ - - + + + \ No newline at end of file -- cgit v1.2.3