RANGER-999: Delete Module REST API is failing as it is not removing assigned users and groups
Signed-off-by: Gautam Borad <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/69f546a6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/69f546a6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/69f546a6 Branch: refs/heads/master Commit: 69f546a6d15ed08062512e8efdd20410ed3720ea Parents: 4d3ce6c Author: pradeep agrawal <[email protected]> Authored: Mon May 30 11:15:13 2016 +0530 Committer: Gautam Borad <[email protected]> Committed: Tue May 31 11:34:05 2016 +0530 ---------------------------------------------------------------------- .../main/java/org/apache/ranger/biz/XUserMgr.java | 2 ++ .../org/apache/ranger/db/XXGroupPermissionDao.java | 14 ++++++++++++++ .../org/apache/ranger/db/XXUserPermissionDao.java | 15 +++++++++++++++ .../main/resources/META-INF/jpa_named_queries.xml | 10 +++++++++- .../java/org/apache/ranger/biz/TestXUserMgr.java | 12 +++++++----- 5 files changed, 47 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/69f546a6/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java index 96f2ee3..5760e9d 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java @@ -895,6 +895,8 @@ public class XUserMgr extends XUserMgrBase { } public void deleteXModuleDefPermission(Long id, boolean force) { + daoManager.getXXUserPermission().deleteByModuleId(id); + daoManager.getXXGroupPermission().deleteByModuleId(id); xModuleDefService.deleteResource(id); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/69f546a6/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java index f6444f8..fed83a1 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXGroupPermissionDao.java @@ -113,5 +113,19 @@ public class XXGroupPermissionDao extends BaseDao<XXGroupPermission> { } return null; } + public void deleteByModuleId(Long moduleId) { + if (moduleId != null) { + try { + getEntityManager() + .createNamedQuery("XXGroupPermission.deleteByModuleId", XXGroupPermission.class) + .setParameter("moduleId", moduleId) + .executeUpdate(); + } catch (Exception e) { + logger.debug(e.getMessage()); + } + } else { + logger.debug("ModuleId not provided."); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/69f546a6/security-admin/src/main/java/org/apache/ranger/db/XXUserPermissionDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXUserPermissionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXUserPermissionDao.java index 2db6fd6..4e18e47 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXUserPermissionDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXUserPermissionDao.java @@ -114,4 +114,19 @@ public class XXUserPermissionDao extends BaseDao<XXUserPermission>{ } return null; } + + public void deleteByModuleId(Long moduleId) { + if (moduleId != null) { + try { + getEntityManager() + .createNamedQuery("XXUserPermission.deleteByModuleId", XXUserPermission.class) + .setParameter("moduleId", moduleId) + .executeUpdate(); + } catch (Exception e) { + logger.debug(e.getMessage()); + } + } else { + logger.debug("ModuleId not provided."); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/69f546a6/security-admin/src/main/resources/META-INF/jpa_named_queries.xml ---------------------------------------------------------------------- diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index 76d3f21..4fcf0ea 100644 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -670,7 +670,11 @@ </query> </named-query> - <!-- XXUserPermission --> + <named-query name="XXUserPermission.deleteByModuleId"> + <query>DELETE FROM XXUserPermission obj WHERE obj.moduleId=:moduleId</query> + </named-query> + + <!-- XXGroupPermission --> <named-query name="XXGroupPermission.findByGroupId"> <query>SELECT obj FROM XXGroupPermission obj WHERE obj.groupId=:groupId @@ -706,6 +710,10 @@ <query>SELECT obj FROM XXGroupPermission obj WHERE obj.moduleId = :moduleId AND obj.groupId =:groupId </query> </named-query> + + <named-query name="XXGroupPermission.deleteByModuleId"> + <query>DELETE FROM XXGroupPermission obj WHERE obj.moduleId=:moduleId</query> + </named-query> <named-query name="XXPortalUser.findByUserName"> <query>SELECT Obj FROM XXPortalUser obj http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/69f546a6/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java index 37dddee..3323f11 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java @@ -52,7 +52,6 @@ import org.apache.ranger.entity.XXModuleDef; import org.apache.ranger.entity.XXPolicy; import org.apache.ranger.entity.XXPortalUser; import org.apache.ranger.entity.XXPortalUserRole; -import org.apache.ranger.entity.XXTrxLog; import org.apache.ranger.entity.XXUser; import org.apache.ranger.entity.XXUserPermission; import org.apache.ranger.plugin.model.RangerPolicy; @@ -72,7 +71,6 @@ import org.apache.ranger.service.XPermMapService; import org.apache.ranger.service.XPortalUserService; import org.apache.ranger.service.XUserPermissionService; import org.apache.ranger.service.XUserService; -import org.apache.ranger.view.VXAuditMap; import org.apache.ranger.view.VXAuditMapList; import org.apache.ranger.view.VXGroup; import org.apache.ranger.view.VXGroupList; @@ -80,7 +78,6 @@ import org.apache.ranger.view.VXGroupPermission; import org.apache.ranger.view.VXGroupUser; import org.apache.ranger.view.VXGroupUserList; import org.apache.ranger.view.VXModuleDef; -import org.apache.ranger.view.VXPermMap; import org.apache.ranger.view.VXPermMapList; import org.apache.ranger.view.VXPortalUser; import org.apache.ranger.view.VXStringList; @@ -93,7 +90,6 @@ import org.junit.Assert; import org.junit.FixMethodOrder; import org.junit.Rule; import org.junit.Test; -import org.junit.Ignore; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.junit.runners.MethodSorters; @@ -1036,7 +1032,13 @@ public class TestXUserMgr { @Test public void test34deleteXModuleDefPermission() { - + Long moduleId=Long.valueOf(1); + XXUserPermissionDao xUserPermissionDao = Mockito.mock(XXUserPermissionDao.class); + XXGroupPermissionDao xGroupPermissionDao = Mockito.mock(XXGroupPermissionDao.class); + Mockito.when(daoManager.getXXUserPermission()).thenReturn(xUserPermissionDao); + Mockito.when(daoManager.getXXGroupPermission()).thenReturn(xGroupPermissionDao); + Mockito.doNothing().when(xUserPermissionDao).deleteByModuleId(moduleId); + Mockito.doNothing().when(xGroupPermissionDao).deleteByModuleId(moduleId); Mockito.when(xModuleDefService.deleteResource(1L)).thenReturn(true); xUserMgr.deleteXModuleDefPermission(1L, true); Mockito.verify(xModuleDefService).deleteResource(1L);
