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);

Reply via email to