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 <prad...@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("t...@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); + } }