This is an automated email from the ASF dual-hosted git repository.

mehul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 7c52a79  RANGER-2373 : User creation POST and PUT response not showing 
groupIdList and groupNameList with expected data
7c52a79 is described below

commit 7c52a79a5d0b41bfc94caca9d531e0fefba2bfe7
Author: Nikhil P <[email protected]>
AuthorDate: Fri Mar 22 12:43:39 2019 +0530

    RANGER-2373 : User creation POST and PUT response not showing groupIdList 
and groupNameList with expected data
    
    Signed-off-by: Mehul Parikh <[email protected]>
---
 .../main/java/org/apache/ranger/biz/XUserMgr.java  | 47 +++++++++++++---------
 .../java/org/apache/ranger/biz/TestXUserMgr.java   |  7 ++++
 2 files changed, 34 insertions(+), 20 deletions(-)

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 fc40917..6edfabb 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
@@ -222,7 +222,7 @@ public class XUserMgr extends XUserMgrBase {
 
                String hiddenPassword = 
PropertiesUtil.getProperty("ranger.password.hidden", "*****");
                createdXUser.setPassword(hiddenPassword);
-
+               Collection<String> groupNamesList = new ArrayList<String>();
                Collection<Long> groupIdList = vXUser.getGroupIdList();
                List<VXGroupUser> vXGroupUsers = new ArrayList<VXGroupUser>();
                if (groupIdList != null) {
@@ -232,8 +232,11 @@ public class XUserMgr extends XUserMgrBase {
                                // 
trxLogList.addAll(xGroupUserService.getTransactionLog(
                                // vXGroupUser, "create"));
                                vXGroupUsers.add(vXGroupUser);
+                               groupNamesList.add(vXGroupUser.getName());
                        }
                }
+               createdXUser.setGroupIdList(groupIdList);
+               createdXUser.setGroupNameList(groupNamesList);
                for (VXGroupUser vXGroupUser : vXGroupUsers) {
                        
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser,
                                        "create"));
@@ -474,13 +477,22 @@ public class XUserMgr extends XUserMgrBase {
 
                Long userId = vXUser.getId();
                List<Long> groupUsersToRemove = new ArrayList<Long>();
+               trxLogList.addAll(createOrDelGrpUserWithUpdatedGrpId(vXUser, 
groupIdList,userId, groupUsersToRemove));
+               xaBizUtil.createTrxLog(trxLogList);
 
+               return vXUser;
+       }
+       private List<XXTrxLog> createOrDelGrpUserWithUpdatedGrpId(VXUser 
vXUser, Collection<Long> groupIdList,Long userId, List<Long> 
groupUsersToRemove) {
+               Collection<String> groupNamesSet = new HashSet<String>();
+               List<XXTrxLog> trxLogList = new ArrayList<>();
                if (groupIdList != null) {
                        SearchCriteria searchCriteria = new SearchCriteria();
                        searchCriteria.addParam("xUserId", userId);
-                       VXGroupUserList vXGroupUserList = xGroupUserService
-                                       .searchXGroupUsers(searchCriteria);
+                       VXGroupUserList vXGroupUserList = 
xGroupUserService.searchXGroupUsers(searchCriteria);
                        List<VXGroupUser> vXGroupUsers = 
vXGroupUserList.getList();
+                       for(VXGroupUser eachVXGrpUser : vXGroupUsers) {
+                               groupNamesSet.add(eachVXGrpUser.getName());
+                       }
 
                        if (vXGroupUsers != null) {
 
@@ -494,10 +506,9 @@ public class XUserMgr extends XUserMgrBase {
                                                }
                                        }
                                        if (!found) {
-                                               VXGroupUser vXGroupUser = 
createXGroupUser(userId,
-                                                               groupId);
-                                               
trxLogList.addAll(xGroupUserService.getTransactionLog(
-                                                               vXGroupUser, 
"create"));
+                                               VXGroupUser vXGroupUser = 
createXGroupUser(userId, groupId);
+                                               
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, "create"));
+                                               
groupNamesSet.add(vXGroupUser.getName());
                                        }
                                }
 
@@ -506,41 +517,37 @@ public class XUserMgr extends XUserMgrBase {
                                        boolean found = false;
                                        for (Long groupId : groupIdList) {
                                                if 
(groupId.equals(vXGroupUser.getParentGroupId())) {
-                                                       
trxLogList.addAll(xGroupUserService
-                                                                       
.getTransactionLog(vXGroupUser, "update"));
+                                                       
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, "update"));
                                                        found = true;
                                                        break;
                                                }
                                        }
                                        if (!found) {
                                                // TODO I've to get the 
transaction log from here.
-                                               
trxLogList.addAll(xGroupUserService.getTransactionLog(
-                                                               vXGroupUser, 
"delete"));
+                                               
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, "delete"));
                                                
groupUsersToRemove.add(vXGroupUser.getId());
                                                // 
xGroupUserService.deleteResource(vXGroupUser.getId());
+                                               
groupNamesSet.remove(vXGroupUser.getName());
                                        }
                                }
 
                        } else {
                                for (Long groupId : groupIdList) {
                                        VXGroupUser vXGroupUser = 
createXGroupUser(userId, groupId);
-                                       
trxLogList.addAll(xGroupUserService.getTransactionLog(
-                                                       vXGroupUser, "create"));
+                                       
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, "create"));
+                                       
groupNamesSet.add(vXGroupUser.getName());
                                }
                        }
                        vXUser.setGroupIdList(groupIdList);
+                       vXUser.setGroupNameList(new ArrayList<>(groupNamesSet));
                } else {
-                       logger.debug("Group id list can't be null for user. 
Group user "
-                                       + "mapping not updated for user : " + 
userId);
+                       logger.debug(
+                                       "Group id list can't be null for user. 
Group user " + "mapping not updated for user : " + userId);
                }
-
-               xaBizUtil.createTrxLog(trxLogList);
-
                for (Long groupUserId : groupUsersToRemove) {
                        xGroupUserService.deleteResource(groupUserId);
                }
-
-               return vXUser;
+               return trxLogList;
        }
 
         public VXUserGroupInfo createXUserGroupFromMap(VXUserGroupInfo 
vXUserGroupInfo) {
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 49c57a6..23d3568 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
@@ -571,7 +571,13 @@ public class TestXUserMgr {
                groupIdList.add(userId);
                vxUser.setGroupIdList(groupIdList);
                VXGroup vxGroup = vxGroup();
+               vxGroup.setName("user12Grp");
+               VXGroupUser vXGroupUser = new VXGroupUser();
+               vXGroupUser.setParentGroupId(userId);
+               vXGroupUser.setUserId(userId);
+               vXGroupUser.setName(vxGroup.getName());
                
Mockito.when(xGroupService.readResource(userId)).thenReturn(vxGroup);
+               Mockito.when(xGroupUserService.createResource((VXGroupUser) 
Mockito.any())).thenReturn(vXGroupUser);
                ArrayList<String> userRoleListVXPortaUser = getRoleList();
                VXPortalUser vXPortalUser = new VXPortalUser();
                vXPortalUser.setUserRoleList(userRoleListVXPortaUser);
@@ -607,6 +613,7 @@ public class TestXUserMgr {
                Assert.assertEquals(dbvxUser.getDescription(), 
vxUser.getDescription());
                Assert.assertEquals(dbvxUser.getName(), vxUser.getName());
                
Assert.assertEquals(dbvxUser.getUserRoleList(),vxUser.getUserRoleList());
+               
Assert.assertEquals(dbvxUser.getGroupIdList(),vxUser.getGroupIdList());
                
Assert.assertEquals(dbvxUser.getGroupNameList(),vxUser.getGroupNameList());
                Mockito.verify(xUserService).readResourceWithOutLogin(userId);
        }

Reply via email to