You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2019/03/22 09:10:56 UTC

[ranger] branch master updated: RANGER-2373 : User creation POST and PUT response not showing groupIdList and groupNameList with expected data

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 <ni...@gmail.com>
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 <me...@apache.org>
---
 .../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);
 	}