This is an automated email from the ASF dual-hosted git repository.
madhan 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 08c4cf376 RANGER-4055: updated to require user's firstName to be
non-empty
08c4cf376 is described below
commit 08c4cf37639109e44b12b969ae13d36dcd29ff85
Author: Ramachandran Krishnan <[email protected]>
AuthorDate: Fri Feb 3 17:06:28 2023 +0530
RANGER-4055: updated to require user's firstName to be non-empty
Signed-off-by: Madhan Neethiraj <[email protected]>
---
.../main/java/org/apache/ranger/biz/XUserMgr.java | 22 ++++++++
.../java/org/apache/ranger/biz/TestXUserMgr.java | 59 ++++++++++++++++++----
2 files changed, 72 insertions(+), 9 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 0a03da567..bbbf90c52 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
@@ -193,6 +193,7 @@ public class XUserMgr extends XUserMgrBase {
xaBizUtil.blockAuditorRoleUser();
validatePassword(vXUser);
String userName = vXUser.getName();
+ String firstName = vXUser.getFirstName();
if (userName == null || "null".equalsIgnoreCase(userName)
|| userName.trim().isEmpty()) {
throw restErrorUtil.createRESTException(
@@ -200,6 +201,13 @@ public class XUserMgr extends XUserMgrBase {
MessageEnums.INVALID_INPUT_DATA);
}
+ if (firstName == null || "null".equalsIgnoreCase(firstName)
+ || firstName.trim().isEmpty()) {
+ throw restErrorUtil.createRESTException(
+ "Please provide a valid first name.",
+ MessageEnums.INVALID_INPUT_DATA);
+ }
+
if (vXUser.getDescription() == null) {
vXUser.setDescription(vXUser.getName());
}
@@ -386,6 +394,12 @@ public class XUserMgr extends XUserMgrBase {
throw restErrorUtil.createRESTException("Please provide
a valid "
+ "username.",
MessageEnums.INVALID_INPUT_DATA);
}
+ String firstName = vXUser.getFirstName();
+ if (firstName == null || "null".equalsIgnoreCase(firstName)
+ || firstName.trim().isEmpty()) {
+ throw restErrorUtil.createRESTException("Please provide
a valid first name.", MessageEnums.INVALID_INPUT_DATA);
+ }
+
checkAccess(vXUser.getName());
xaBizUtil.blockAuditorRoleUser();
VXPortalUser oldUserProfile =
userMgr.getUserProfileByLoginId(vXUser
@@ -2626,6 +2640,14 @@ public class XUserMgr extends XUserMgrBase {
logger.warn("Ignoring invalid username " +
vXUser==null? null : vXUser.getName());
continue;
}
+
+ String firstName = vXUser.getFirstName();
+ if (firstName == null ||
"null".equalsIgnoreCase(firstName)
+ || firstName.trim().isEmpty()) {
+ logger.warn("Ignoring invalid first name " +
vXUser == null ? null : vXUser.getFirstName());
+ continue;
+ }
+
checkAccess(vXUser.getName());
TransactionTemplate txTemplate = new
TransactionTemplate(txManager);
txTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
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 871857bbf..528f4e511 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
@@ -663,8 +663,7 @@ public class TestXUserMgr {
vxUser.setName(null);
Mockito.when(restErrorUtil.createRESTException("Please provide
a valid username.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
thrown.expect(WebApplicationException.class);
- VXUser vXUser=xUserMgr.createXUser(vxUser);
- Assert.assertNull(vXUser);
+ xUserMgr.createXUser(vxUser);
}
@Test
@@ -681,8 +680,33 @@ public class TestXUserMgr {
xUserMgr.createXUser(vxUser);
}
+ @Test
+ public void testCreateXUser_WithBlankFirstName() {
+ destroySession();
+ setup();
+ VXUser vxUser = vxUser();
+ vxUser.setName("test");
+ vxUser.setFirstName(null);
+ Mockito.when(restErrorUtil.createRESTException("Please provide
a valid first name.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ xUserMgr.createXUser(vxUser);
+ }
+
@Test
public void test04CreateXUser_WithBlankValues() {
+ destroySession();
+ setup();
+ VXUser vxUser = vxUser();
+ vxUser.setDescription(null);
+ vxUser.setFirstName("test");
+ vxUser.setLastName("null");
+ Mockito.when(restErrorUtil.createRESTException("Please provide
valid email address.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ xUserMgr.createXUser(vxUser);
+ }
+
+ @Test
+ public void testUpdateXUser_WithBlankFirstName() {
setup();
VXUser vxUser = vxUser();
ArrayList<String> userRoleListVXPortaUser = getRoleList();
@@ -690,10 +714,23 @@ public class TestXUserMgr {
vXPortalUser.setUserRoleList(userRoleListVXPortaUser);
vxUser.setDescription(null);
vxUser.setFirstName("null");
- vxUser.setLastName("null");
- Mockito.when(restErrorUtil.createRESTException("Please provide
valid email address.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
+ Mockito.when(restErrorUtil.createRESTException("Please provide
a valid first name.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
thrown.expect(WebApplicationException.class);
- xUserMgr.createXUser(vxUser);
+ xUserMgr.updateXUser(vxUser);
+ }
+
+ @Test
+ public void testUpdateXUser_WithBlankUserName() {
+ setup();
+ VXUser vxUser = vxUser();
+ ArrayList<String> userRoleListVXPortaUser = getRoleList();
+ VXPortalUser vXPortalUser = new VXPortalUser();
+ vXPortalUser.setUserRoleList(userRoleListVXPortaUser);
+ vxUser.setDescription(null);
+ vxUser.setName("null");
+ Mockito.when(restErrorUtil.createRESTException("Please provide
a valid username.",MessageEnums.INVALID_INPUT_DATA)).thenThrow(new
WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ xUserMgr.updateXUser(vxUser);
}
@Test
@@ -2582,7 +2619,7 @@ public class TestXUserMgr {
vxUser.setUserRoleList(reqRoleList);
vxUser.setUserSource(RangerCommonEnums.USER_EXTERNAL);
vxUser.setGroupIdList(groupIdList);
- vxUser.setFirstName("null");
+ vxUser.setFirstName("user1");
vxUser.setLastName("null");
vxUser.setPassword("*****");
Mockito.when(xUserService.updateResource(vxUser)).thenReturn(vxUser);
@@ -3759,6 +3796,9 @@ public class TestXUserMgr {
List<VXUser> vXUserList=new ArrayList<VXUser>();
VXUser vXUser = vxUser();
VXUser vXUser1 = vxUser();
+ VXUser vXUser2 = vxUser();
+ vXUser2.setFirstName("user12");
+ vXUser2.setEmailAddress(null);
vXUser.setFirstName("null");
vXUser.setLastName("null");
vXUser.setEmailAddress("");
@@ -3771,8 +3811,10 @@ public class TestXUserMgr {
userRoleList.add(RangerConstants.ROLE_ADMIN_AUDITOR);
vXUser.setUserRoleList(userRoleList);
vXUser1.setUserRoleList(userRoleList);
+ vXUser2.setUserRoleList(userRoleList);
vXUserList.add(vXUser);
vXUserList.add(vXUser1);
+ vXUserList.add(vXUser2);
VXUserList users = new VXUserList(vXUserList);
XXUserDao xxUserDao = Mockito.mock(XXUserDao.class);
XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
@@ -3823,12 +3865,11 @@ public class TestXUserMgr {
Mockito.when(xUserPermissionService.createResource((VXUserPermission)
Mockito.any())).thenReturn(userPermission);
Mockito.when(sessionMgr.getActiveUserSessionsForPortalUserId(userId)).thenReturn(userSessions);
- xUserMgr.createOrUpdateXUsers(users);
-
Mockito.when(xUserPermissionDao.findByModuleIdAndPortalUserId(null,
null)).thenReturn(xUserPermissionObj);
Mockito.when(xUserPermissionService.populateViewBean(xUserPermissionObj)).thenReturn(userPermission);
Mockito.when(xUserPermissionService.updateResource((VXUserPermission)
Mockito.any())).thenReturn(userPermission);
- xUserMgr.createOrUpdateXUsers(users);
+ int createdOrUpdatedUserCount =
xUserMgr.createOrUpdateXUsers(users);
+ Assert.assertEquals(createdOrUpdatedUserCount, 1);
}
@Test