You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2021/12/20 05:08:13 UTC
[ranger] branch master updated: RANGER-3553: Unit Tests coverage for UserMgr class
This is an automated email from the ASF dual-hosted git repository.
pradeep 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 9f08bbd RANGER-3553: Unit Tests coverage for UserMgr class
9f08bbd is described below
commit 9f08bbd96fd874939628be4a275437d51f83a862
Author: pradeep <pr...@apache.org>
AuthorDate: Fri Dec 17 14:00:09 2021 +0530
RANGER-3553: Unit Tests coverage for UserMgr class
Change-Id: Ifaabead5a3bad04b0e4487d9589ac47c505ca9bb
---
.../main/java/org/apache/ranger/biz/UserMgr.java | 10 +-
.../java/org/apache/ranger/biz/TestUserMgr.java | 357 +++++++++++++++++++++
2 files changed, 359 insertions(+), 8 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
index 91144fb..1530ccf 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
@@ -699,7 +699,7 @@ public class UserMgr {
// Add sort by
String sortBy = searchCriteria.getSortBy();
String querySortBy = "u.loginId";
- if (!stringUtil.isEmpty(sortBy)) {
+ if (sortBy != null && !sortBy.trim().isEmpty()) {
sortBy = sortBy.trim();
if (sortBy.equalsIgnoreCase("userId")) {
querySortBy = "u.id";
@@ -1118,7 +1118,7 @@ public class UserMgr {
if (loginId != null && !loginId.isEmpty()) {
xXPortalUser = this.findByLoginId(loginId);
if (xXPortalUser == null) {
- if (!stringUtil.isEmpty(emailAddress)) {
+ if (emailAddress != null && !emailAddress.trim().isEmpty()) {
xXPortalUser = this.findByEmailAddress(emailAddress);
if (xXPortalUser == null) {
xXPortalUser = this.createUser(userProfile,
@@ -1272,9 +1272,6 @@ public class UserMgr {
if (xXPortalUser.getUserSource() != RangerCommonEnums.USER_EXTERNAL) {
xXPortalUser.setPassword(encryptedNewPwd);
}
- else if (xXPortalUser.getUserSource() != RangerCommonEnums.USER_EXTERNAL) {
- xXPortalUser.setPassword(xXPortalUser.getPassword());
- }
xXPortalUser = daoManager.getXXPortalUser().update(xXPortalUser);
}
return xXPortalUser;
@@ -1296,9 +1293,6 @@ public class UserMgr {
if (xXPortalUser.getUserSource() != RangerCommonEnums.USER_EXTERNAL) {
xXPortalUser.setPassword(encryptedNewPwd);
}
- else if (xXPortalUser.getUserSource() != RangerCommonEnums.USER_EXTERNAL) {
- xXPortalUser.setPassword(xXPortalUser.getPassword());
- }
xXPortalUser = daoManager.getXXPortalUser().update(xXPortalUser);
if(xXPortalUser!=null && logAudits){
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
index 931a9ad..f43b301 100644
--- a/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestUserMgr.java
@@ -23,8 +23,12 @@ import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.WebApplicationException;
+
import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.ContextUtil;
+import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.common.RangerCommonEnums;
import org.apache.ranger.common.RangerConstants;
@@ -321,6 +325,28 @@ public class TestUserMgr {
Mockito.verify(stringUtil).equals(Mockito.anyString(),Mockito.nullable(String.class));
Mockito.verify(stringUtil).validatePassword(Mockito.anyString(),Mockito.any(String[].class));
+
+ XXPortalUser user2 = new XXPortalUser();
+ user2.setId(userId);
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(user2);
+ VXPasswordChange invalidpwdChange = new VXPasswordChange();
+ invalidpwdChange.setId(userProfile.getId());
+ invalidpwdChange.setLoginId(userProfile.getLoginId());
+ invalidpwdChange.setOldPassword("invalidOldPassword");
+ invalidpwdChange.setEmailAddress(userProfile.getEmailAddress());
+ invalidpwdChange.setUpdPassword(userProfile.getPassword());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(invalidpwdChange);
+
+ XXPortalUser externalUser = new XXPortalUser();
+ externalUser.setUserSource(RangerCommonEnums.USER_EXTERNAL);
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(externalUser);
+ VXResponse vXResponse = new VXResponse();
+ vXResponse.setStatusCode(HttpServletResponse.SC_FORBIDDEN);
+ vXResponse.setMsgDesc("SECURITY:changePassword().Ranger External Users cannot change password. LoginId=" + pwdChange.getLoginId());
+ Mockito.when(restErrorUtil.generateRESTException((VXResponse) Mockito.any())).thenReturn(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(pwdChange);
}
@Test
@@ -484,6 +510,12 @@ public class TestUserMgr {
user.setUserSource(RangerCommonEnums.USER_EXTERNAL);
changeEmail.setEmailAddress("");
dbVXPortalUser = userMgr.changeEmailAddress(user,changeEmail);
+
+ Mockito.when(stringUtil.validateEmail(Mockito.anyString())).thenReturn(false);
+ changeEmail.setEmailAddress("test@123.com");
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrInvalidEmail",MessageEnums.INVALID_INPUT_DATA, changeEmail.getId(), "emailAddress", changeEmail.toString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changeEmailAddress(user,changeEmail);
}
@Test
@@ -679,6 +711,16 @@ public class TestUserMgr {
Assert.assertEquals(userProfile.getLastName(),dbVXPortalUser.getLastName());
Assert.assertEquals(changeEmail.getLoginId(),dbVXPortalUser.getLoginId());
Assert.assertEquals(changeEmail.getEmailAddress(),dbVXPortalUser.getEmailAddress());
+
+ user.setId(userProfile.getId());
+ user.setLoginId("usertest123");
+ String encryptCred = userMgr.encrypt(user.getLoginId(), userProfile.getPassword());
+ user.setPassword(encryptCred);
+ Mockito.when(stringUtil.equals(Mockito.anyString(), Mockito.nullable(String.class))).thenReturn(true);
+ Mockito.when(stringUtil.equals(Mockito.anyString(), Mockito.anyString())).thenReturn(false);
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrWrongPassword",MessageEnums.OPER_NO_PERMISSION, null, null, changeEmail.toString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changeEmailAddress(user, changeEmail);
}
@Test
@@ -743,6 +785,11 @@ public class TestUserMgr {
Mockito.verify(daoManager, Mockito.atLeast(1)).getXXPortalUser();
Mockito.verify(daoManager).getXXUserPermission();
Mockito.verify(daoManager).getXXGroupPermission();
+
+ Collection<String> reqRoleList = new ArrayList<String>();
+ reqRoleList.add(null);
+ userProfile.setUserRoleList(reqRoleList);
+ dbVXPortalUser = userMgr.createUser(userProfile);
}
@Test
@@ -767,6 +814,7 @@ public class TestUserMgr {
Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(user);
Mockito.when(daoManager.getXXPortalUserRole()).thenReturn(roleDao);
Mockito.doNothing().when(rangerBizUtil).blockAuditorRoleUser();
+ userProfile.setOtherAttributes("other1");
VXPortalUser dbVXPortalUser = userMgr.createDefaultAccountUser(userProfile);
Assert.assertNotNull(dbVXPortalUser);
Assert.assertEquals(user.getId(), dbVXPortalUser.getId());
@@ -781,6 +829,7 @@ public class TestUserMgr {
@Test
public void test11CreateDefaultAccountUser() {
+ destroySession();
setup();
XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
XXPortalUserRoleDao roleDao = Mockito.mock(XXPortalUserRoleDao.class);
@@ -945,6 +994,23 @@ public class TestUserMgr {
searchCriteria.setSortType("desc");
dbVXPortalUserList = userMgr.searchUsers(searchCriteria);
Assert.assertNotNull(dbVXPortalUserList);
+
+ VXPortalUser userProfile = userProfile();
+ XXPortalUser user = new XXPortalUser();
+ user.setId(userProfile.getId());
+ user.setLoginId(userProfile.getLoginId());
+ user.setEmailAddress(userProfile.getEmailAddress());
+ user.setLoginId(userProfile.getLoginId());
+ List<XXPortalUser> resultList = new ArrayList<XXPortalUser>();
+ resultList.add(user);
+ Mockito.when(query.getResultList()).thenReturn(resultList);
+ dbVXPortalUserList = userMgr.searchUsers(searchCriteria);
+ Assert.assertNotNull(dbVXPortalUserList);
+
+ count = 0l;
+ Mockito.when(query.getSingleResult()).thenReturn(count);
+ dbVXPortalUserList = userMgr.searchUsers(searchCriteria);
+ Assert.assertNotNull(dbVXPortalUserList);
}
@Test
@@ -1111,6 +1177,11 @@ public class TestUserMgr {
Mockito.when(daoManager.getXXPortalUser()).thenReturn(xPortalUserDao);
Mockito.when(xPortalUserDao.getById(userId)).thenReturn(xPortalUser);
userMgr.checkAccess(userId);
+
+ Mockito.when(xPortalUserDao.getById(userId)).thenReturn(null);
+ Mockito.when(restErrorUtil.create403RESTException("serverMsg.userMgrWrongUser: "+userId)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.checkAccess(userId);
}
@Test
@@ -1325,6 +1396,12 @@ public class TestUserMgr {
Mockito.when(userDao.findByUserId(userId)).thenReturn(list);
boolean isFound = userMgr.updateRoles(userId, rolesList);
Assert.assertFalse(isFound);
+
+ Mockito.when(restErrorUtil.createRESTException("Invalid user role, please provide valid user role.", MessageEnums.INVALID_INPUT_DATA)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ rolesList.clear();
+ rolesList.add("INVALID_ROLE");
+ isFound = userMgr.updateRoles(userId, rolesList);
}
@Test
@@ -1433,6 +1510,11 @@ public class TestUserMgr {
Assert.assertEquals(userProfile.getLoginId(),dbXXPortalUser.getLoginId());
Assert.assertEquals(userProfile.getEmailAddress(),dbXXPortalUser.getEmailAddress());
Assert.assertEquals(encryptedPwd,dbXXPortalUser.getPassword());
+
+ Mockito.when(restErrorUtil.createRESTException("Please provide valid email address.", MessageEnums.INVALID_INPUT_DATA)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ Mockito.when(stringUtil.validateEmail(Mockito.anyString())).thenReturn(false);
+ userMgr.updateUser(userProfile);
}
@Test
@@ -1465,6 +1547,18 @@ public class TestUserMgr {
Assert.assertEquals(userProfile.getLoginId(),dbXXPortalUser.getLoginId());
Assert.assertEquals(userProfile.getEmailAddress(),dbXXPortalUser.getEmailAddress());
Assert.assertEquals(encryptedPwd,dbXXPortalUser.getPassword());
+
+ Mockito.when(restErrorUtil.createRESTException("Invalid user, please provide valid username.", MessageEnums.INVALID_INPUT_DATA)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userProfile.setLoginId(null);
+ dbXXPortalUser = userMgr.updateUser(userProfile);
+
+ Mockito.when(restErrorUtil.createRESTException("The email address you've provided already exists in system.", MessageEnums.INVALID_INPUT_DATA)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userProfile.setLoginId("test1234");
+ user.setLoginId(null);
+ Mockito.when(userDao.findByEmailAddress(Mockito.anyString())).thenReturn(user);
+ dbXXPortalUser = userMgr.updateUser(userProfile);
}
@Test
@@ -1577,6 +1671,9 @@ public class TestUserMgr {
roleList = userMgr.getRolesByLoginId(null);
Mockito.when(roleDao.findByUserId(userId)).thenReturn(null);
roleList = userMgr.getRolesByLoginId(userLoginId);
+ Mockito.when(userDao.findByLoginId(userProfile.getLoginId())).thenReturn(null);
+ roleList = userMgr.getRolesByLoginId(userLoginId);
+ Assert.assertNotNull(roleList);
}
@Test
@@ -1590,12 +1687,26 @@ public class TestUserMgr {
xPortalUser.setId(userProfile.getId());
setupUser();
userMgr.checkAccess(xPortalUser);
+
+ destroySession();
+ Mockito.when(restErrorUtil.create403RESTException("User access denied. loggedInUser=Not Logged In, accessing user=" + userProfile.getId())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.checkAccess(xPortalUser);
+
+ Mockito.when(restErrorUtil.create403RESTException("serverMsg.userMgrWrongUser")).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ xPortalUser = null;
+ userMgr.checkAccess(xPortalUser);
}
@Test
public void test32checkAdminAccess() {
setup();
userMgr.checkAdminAccess();
+ destroySession();
+ Mockito.when(restErrorUtil.create403RESTException("Operation not allowed. loggedInUser=. Not Logged In.")).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.checkAdminAccess();
}
@Test
@@ -1603,6 +1714,19 @@ public class TestUserMgr {
setup();
XXPortalUser xPortalUser = Mockito.mock(XXPortalUser.class);
userMgr.checkAccessForUpdate(xPortalUser);
+
+ destroySession();
+ xPortalUser.setId(userId);
+ VXResponse vXResponse = new VXResponse();
+ vXResponse.setStatusCode(HttpServletResponse.SC_FORBIDDEN);
+ vXResponse.setMsgDesc("User access denied. loggedInUser=Not Logged In , accessing user="+ xPortalUser.getId());
+ Mockito.when(restErrorUtil.generateRESTException((VXResponse) Mockito.any())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.checkAccessForUpdate(xPortalUser);
+ xPortalUser = null;
+ Mockito.when(restErrorUtil.create403RESTException("serverMsg.userMgrWrongUser")).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.checkAccessForUpdate(xPortalUser);
}
@Test
@@ -1699,6 +1823,11 @@ public class TestUserMgr {
Assert.assertNotNull(dbVXPortalUser);
Assert.assertEquals(userProfile.getLoginId(),dbVXPortalUser.getLoginId());
Assert.assertEquals(userProfile.getEmailAddress(),dbVXPortalUser.getEmailAddress());
+
+ userProfile.setLoginId(null);
+ Mockito.when(restErrorUtil.createRESTException("LoginId should not be null or blank, It is", MessageEnums.INVALID_INPUT_DATA)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.mapVXPortalUserToXXPortalUser(userProfile);
}
@Test
@@ -1806,4 +1935,232 @@ public class TestUserMgr {
Assert.assertNotNull(dbVXPortalUser);
}
+ @Test
+ public void test42EncryptWithOlderAlgo() {
+ VXPortalUser vXPortalUser = userProfile();
+ String encodedpasswd = userMgr.encryptWithOlderAlgo(vXPortalUser.getLoginId(), vXPortalUser.getPassword());
+ Assert.assertNotNull(encodedpasswd);
+ encodedpasswd = userMgr.encryptWithOlderAlgo(null, vXPortalUser.getPassword());
+ Assert.assertNotNull(encodedpasswd);
+ encodedpasswd = userMgr.encryptWithOlderAlgo(vXPortalUser.getLoginId(), null);
+ Assert.assertNotNull(encodedpasswd);
+ encodedpasswd = userMgr.encryptWithOlderAlgo(null, null);
+ Assert.assertNotNull(encodedpasswd);
+ }
+
+ @Test
+ public void test43IsNewPasswordDifferent() {
+ VXPortalUser vXPortalUser = userProfile();
+ String newCred = "New5ecret4User21";
+ boolean isDifferent = userMgr.isNewPasswordDifferent(vXPortalUser.getLoginId(), vXPortalUser.getPassword(), newCred);
+ Assert.assertTrue(isDifferent);
+ isDifferent = userMgr.isNewPasswordDifferent(vXPortalUser.getLoginId(), vXPortalUser.getPassword(), vXPortalUser.getPassword());
+ Assert.assertFalse(isDifferent);
+ isDifferent = userMgr.isNewPasswordDifferent(vXPortalUser.getLoginId(), null, newCred);
+ Assert.assertTrue(isDifferent);
+ isDifferent = userMgr.isNewPasswordDifferent(null, vXPortalUser.getPassword(), newCred);
+ Assert.assertTrue(isDifferent);
+ isDifferent = userMgr.isNewPasswordDifferent(null, null , newCred);
+ Assert.assertTrue(isDifferent);
+ }
+
+ @Test
+ public void test44IsPasswordValid() {
+ VXPortalUser vXPortalUser = userProfile();
+ boolean isValid = userMgr.isPasswordValid(vXPortalUser.getLoginId(), "ceb4f32325eda6142bd65215f4c0f371" , vXPortalUser.getPassword());
+ Assert.assertFalse(isValid);
+ }
+
+ @Test
+ public void test45ChangePassword() {
+ destroySession();
+ setupUser();
+ VXPortalUser userProfile = userProfile();
+ XXPortalUser user2 = new XXPortalUser();
+ user2.setId(userId);
+
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(daoManager.getXXPortalUser().findByLoginId(Mockito.anyString())).thenReturn(user2);
+ VXPasswordChange invalidpwdChange = new VXPasswordChange();
+ invalidpwdChange.setId(userProfile.getId());
+ invalidpwdChange.setLoginId(userProfile.getLoginId());
+ invalidpwdChange.setOldPassword("invalidOldPassword");
+ invalidpwdChange.setEmailAddress(userProfile.getEmailAddress());
+ invalidpwdChange.setUpdPassword(userProfile.getPassword());
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrOldPassword",MessageEnums.INVALID_INPUT_DATA, null, null, invalidpwdChange.getLoginId())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(invalidpwdChange);
+ }
+
+ @Test
+ public void test46ChangePassword() {
+ destroySession();
+ setupUser();
+ VXPortalUser userProfile = userProfile();
+ XXPortalUser user2 = new XXPortalUser();
+ user2.setId(userId);
+ VXPasswordChange invalidpwdChange = new VXPasswordChange();
+ invalidpwdChange.setId(userProfile.getId());
+ invalidpwdChange.setLoginId(userProfile.getLoginId()+1);
+ invalidpwdChange.setOldPassword("invalidOldPassword");
+ invalidpwdChange.setEmailAddress(userProfile.getEmailAddress());
+ invalidpwdChange.setUpdPassword(userProfile.getPassword());
+
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(userDao.findByLoginId(userProfile.getLoginId())).thenReturn(user2);
+ Mockito.when(userDao.findByLoginId(invalidpwdChange.getLoginId())).thenReturn(null);
+
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrInvalidUser",MessageEnums.DATA_NOT_FOUND, null, null, invalidpwdChange.getLoginId())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(invalidpwdChange);
+ }
+
+ @Test
+ public void test47ChangePasswordAsUser() {
+ destroySession();
+ setupUser();
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ VXPortalUser userProfile = userProfile();
+
+ VXPasswordChange pwdChange = new VXPasswordChange();
+ pwdChange.setId(userProfile.getId());
+ pwdChange.setLoginId(userProfile.getLoginId());
+ pwdChange.setOldPassword(userProfile.getPassword());
+ pwdChange.setEmailAddress(userProfile.getEmailAddress());
+ pwdChange.setUpdPassword(userProfile.getPassword());
+
+ XXPortalUser user = new XXPortalUser();
+ user.setId(userProfile.getId());
+ user.setLoginId(userProfile.getLoginId());
+ String encryptCred = userMgr.encrypt(userProfile.getLoginId(), userProfile.getPassword());
+ user.setPassword(encryptCred);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(user);
+ Mockito.when(stringUtil.equals(Mockito.anyString(), Mockito.nullable(String.class))).thenReturn(true);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(stringUtil.validatePassword(Mockito.anyString(), Mockito.any(String[].class))).thenReturn(true);
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrOldPassword",MessageEnums.INVALID_INPUT_DATA, user.getId(), "password", user.toString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(pwdChange);
+ }
+
+ @Test
+ public void test48ChangePasswordAsUser() {
+ destroySession();
+ setupUser();
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ VXPortalUser userProfile = userProfile();
+
+ VXPasswordChange pwdChange = new VXPasswordChange();
+ pwdChange.setId(userProfile.getId());
+ pwdChange.setLoginId(userProfile.getLoginId());
+ pwdChange.setOldPassword(userProfile.getPassword());
+ pwdChange.setEmailAddress(userProfile.getEmailAddress());
+ pwdChange.setUpdPassword(userProfile.getPassword());
+
+ XXPortalUser user = new XXPortalUser();
+ user.setId(userProfile.getId());
+ user.setLoginId(userProfile.getLoginId());
+ String encryptCred = userMgr.encrypt(userProfile.getLoginId(), userProfile.getPassword());
+ user.setPassword(encryptCred);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(user);
+ Mockito.when(stringUtil.equals(Mockito.anyString(), Mockito.nullable(String.class))).thenReturn(true);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(stringUtil.validatePassword(Mockito.anyString(), Mockito.any(String[].class))).thenReturn(false);
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrNewPassword",MessageEnums.INVALID_PASSWORD, null, null, pwdChange.getLoginId())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.changePassword(pwdChange);
+ }
+
+ @Test
+ public void test49CreateDefaultAccountUser() {
+ destroySession();
+ setup();
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ XXPortalUserRoleDao roleDao = Mockito.mock(XXPortalUserRoleDao.class);
+ VXPortalUser userProfile = userProfile();
+ userProfile.setStatus(RangerCommonEnums.USER_EXTERNAL);
+ Collection<String> userRoleList = new ArrayList<String>();
+ userRoleList.add("ROLE_USER");
+ userProfile.setUserRoleList(userRoleList);
+ XXPortalUser user = new XXPortalUser();
+ user.setEmailAddress(userProfile.getEmailAddress());
+ user.setUserSource(RangerCommonEnums.USER_EXTERNAL);
+ XXPortalUserRole XXPortalUserRole = new XXPortalUserRole();
+ XXPortalUserRole.setId(userId);
+ XXPortalUserRole.setUserRole("ROLE_USER");
+
+ List<XXPortalUserRole> list = new ArrayList<XXPortalUserRole>();
+ list.add(XXPortalUserRole);
+
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(null, user);
+ Mockito.when(userDao.findByEmailAddress(Mockito.anyString())).thenReturn(null);
+ Mockito.when(daoManager.getXXPortalUserRole()).thenReturn(roleDao);
+ Mockito.when(userDao.create((XXPortalUser) Mockito.any())).thenReturn(user);
+ Mockito.doNothing().when(rangerBizUtil).blockAuditorRoleUser();
+ userProfile.setEmailAddress(null);
+ VXPortalUser dbVXPortalUser = userMgr.createDefaultAccountUser(userProfile);
+ Assert.assertNotNull(dbVXPortalUser);
+ Assert.assertEquals(user.getId(), dbVXPortalUser.getId());
+ Assert.assertEquals(user.getFirstName(), dbVXPortalUser.getFirstName());
+ Assert.assertEquals(user.getLastName(), dbVXPortalUser.getLastName());
+ Assert.assertEquals(user.getLoginId(), dbVXPortalUser.getLoginId());
+ Assert.assertEquals(user.getEmailAddress(),dbVXPortalUser.getEmailAddress());
+ Assert.assertEquals(user.getPassword(), dbVXPortalUser.getPassword());
+ Mockito.verify(daoManager, Mockito.atLeast(1)).getXXPortalUser();
+ Mockito.verify(daoManager, Mockito.atLeast(1)).getXXPortalUserRole();
+
+ Mockito.when(userDao.findByLoginId(Mockito.anyString())).thenReturn(null);
+ Mockito.when(userDao.findByEmailAddress(Mockito.anyString())).thenReturn(user);
+ Mockito.when(restErrorUtil.createRESTException("The email address " + user.getEmailAddress() + " you've provided already exists. Please try again with different email address.", MessageEnums.OPER_NOT_ALLOWED_FOR_STATE)).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userProfile.setEmailAddress(user.getEmailAddress());
+ userMgr.createDefaultAccountUser(userProfile);
+ }
+
+ @Test
+ public void test50AddUserRole() {
+ setupUser();
+ XXPortalUserRole XXPortalUserRole = new XXPortalUserRole();
+ XXPortalUserRole.setId(userId);
+ XXPortalUserRole.setUserRole("ROLE_USER");
+ List<XXPortalUserRole> list = new ArrayList<XXPortalUserRole>();
+ list.add(XXPortalUserRole);
+ XXPortalUserRoleDao userDao = Mockito.mock(XXPortalUserRoleDao.class);
+ Mockito.when(daoManager.getXXPortalUserRole()).thenReturn(userDao);
+ Mockito.when(userDao.findByUserId(userId)).thenReturn(list);
+ try {
+ userMgr.addUserRole(userId, "ROLE_SYS_ADMIN");
+ } catch (Exception e) {
+ }
+ destroySession();
+ userMgr.addUserRole(userId, "ROLE_SYS_ADMIN");
+ }
+
+ @Test
+ public void test51UpdateUserWithPass() {
+ setup();
+ XXPortalUserDao userDao = Mockito.mock(XXPortalUserDao.class);
+ VXPortalUser userProfile = userProfile();
+ userProfile.setPassword("password1234");
+ XXPortalUser user = new XXPortalUser();
+ user.setId(userProfile.getId());
+ user.setLoginId(userProfile.getLoginId());
+ user.setEmailAddress(userProfile.getEmailAddress());
+ user.setLoginId(userProfile.getLoginId());
+ String encryptedPwd = userMgr.encrypt(userProfile.getLoginId(),userProfile.getPassword());
+ user.setPassword(encryptedPwd);
+ Mockito.when(daoManager.getXXPortalUser()).thenReturn(userDao);
+ Mockito.when(userDao.getById(userProfile.getId())).thenReturn(user);
+ Mockito.when(stringUtil.validateEmail(Mockito.anyString())).thenReturn(true);
+ Mockito.doNothing().when(rangerBizUtil).blockAuditorRoleUser();
+ Mockito.when(stringUtil.validatePassword(Mockito.anyString(), Mockito.any(String[].class))).thenReturn(false);
+ Mockito.when(restErrorUtil.createRESTException("serverMsg.userMgrNewPassword", MessageEnums.INVALID_PASSWORD, null, null, user.getId().toString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+ userMgr.updateUserWithPass(userProfile);
+ }
}