You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2023/03/28 04:03:53 UTC
[ranger] branch master updated: RANGER-4156: unit tests for RoleDBStore
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 2b3ff437f RANGER-4156: unit tests for RoleDBStore
2b3ff437f is described below
commit 2b3ff437fbfce989d8ac6d3d9e20dbe604be742e
Author: Ramachandran Krishnan <ra...@gmail.com>
AuthorDate: Fri Mar 24 21:37:12 2023 +0530
RANGER-4156: unit tests for RoleDBStore
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
---
.../org/apache/ranger/biz/TestRoleDBStore.java | 560 +++++++++++++++++++++
1 file changed, 560 insertions(+)
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestRoleDBStore.java b/security-admin/src/test/java/org/apache/ranger/biz/TestRoleDBStore.java
new file mode 100644
index 000000000..75bdb5451
--- /dev/null
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestRoleDBStore.java
@@ -0,0 +1,560 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ranger.biz;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
+import org.apache.ranger.common.ContextUtil;
+import org.apache.ranger.common.RESTErrorUtil;
+import org.apache.ranger.common.RangerConstants;
+import org.apache.ranger.common.UserSessionBase;
+import org.apache.ranger.common.db.RangerTransactionSynchronizationAdapter;
+import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.db.XXGlobalStateDao;
+import org.apache.ranger.db.XXPolicyRefRoleDao;
+import org.apache.ranger.db.XXRoleDao;
+import org.apache.ranger.db.XXRoleRefRoleDao;
+import org.apache.ranger.db.XXServiceDefDao;
+import org.apache.ranger.entity.XXPortalUser;
+import org.apache.ranger.entity.XXRole;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXTrxLog;
+import org.apache.ranger.plugin.model.RangerRole;
+import org.apache.ranger.plugin.model.RangerRole.RoleMember;
+import org.apache.ranger.plugin.util.RangerRoles;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.apache.ranger.security.context.RangerContextHolder;
+import org.apache.ranger.security.context.RangerSecurityContext;
+import org.apache.ranger.service.RangerRoleService;
+import org.apache.ranger.service.XUserService;
+import org.apache.ranger.view.RangerRoleList;
+import org.apache.ranger.view.VXPortalUser;
+import org.apache.ranger.view.VXUser;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class TestRoleDBStore {
+ private static final Long id = 8L;
+ private static final Long userId = 8L;
+ private static final Long roleId = 9L;
+ private static final String keyAdminLoginID = "keyadmin";
+ private static final String userLoginID = "testuser";
+ private static final String roleName = "test-role";
+
+ @InjectMocks
+ RoleDBStore roleDBStore = new RoleDBStore();
+
+ @Mock
+ RangerBizUtil bizUtil;
+
+ @Mock
+ RangerDaoManager daoMgr;
+
+ @Mock
+ RESTErrorUtil restErrorUtil;
+
+ @Mock
+ RangerTransactionSynchronizationAdapter transactionSynchronizationAdapter;
+
+ @Mock
+ ServiceDBStore svcStore;
+
+ @Mock
+ RangerAdminConfig config;
+
+ @Mock
+ RangerRoleService roleService;
+
+ @Mock
+ XUserService xUserService;
+
+ @Mock
+ RoleRefUpdater roleRefUpdater;
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @Test
+ public void testRoleExistsByRoleName() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(xxRole.getName())).thenReturn(xxRole);
+
+ Assert.assertTrue(roleDBStore.roleExists(roleName));
+ Assert.assertFalse(roleDBStore.roleExists(roleName + "non-existing"));
+ }
+
+ @Test
+ public void testRoleExistsByRoleId() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleId(xxRole.getId())).thenReturn(xxRole);
+
+ Assert.assertTrue(roleDBStore.roleExists(roleId));
+ Assert.assertFalse(roleDBStore.roleExists(roleId + 100L));
+ }
+
+ @Test
+ public void testGetRoleByRoleId() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(roleService.read(rangerRole.getId())).thenReturn(rangerRole);
+
+ RangerRole rangerRoleInDB = roleDBStore.getRole(rangerRole.getId());
+
+ Assert.assertNotNull(rangerRoleInDB);
+ Assert.assertEquals(rangerRole.getId(), rangerRoleInDB.getId());
+ }
+
+
+ @Test
+ public void testGetRolesBySearchFilter() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+ RangerRoleList rangerRoleList = new RangerRoleList(Collections.singletonList(rangerRole));
+ XXRole xxRole = getTestRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ SearchFilter searchFilter = new SearchFilter();
+
+ Mockito.when(roleService.searchResources(searchFilter, roleService.searchFields, roleService.sortFields , rangerRoleList)).thenReturn(xxRoles);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+
+ RangerRoleList rangerRoleListInDB = roleDBStore.getRoles(searchFilter, rangerRoleList);
+
+ Assert.assertNotNull(rangerRoleListInDB);
+ Assert.assertEquals(1, rangerRoleListInDB.getList().size());
+ }
+
+ @Test
+ public void testGetRolesForUser_WithoutUserSession() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+ RangerRoleList rangerRoleList = new RangerRoleList(Collections.singletonList(rangerRole));
+ XXRole xxRole = getTestRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ SearchFilter searchFilter = new SearchFilter();
+
+ Mockito.when(roleService.searchResources(searchFilter, roleService.searchFields, roleService.sortFields , rangerRoleList)).thenReturn(xxRoles);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+
+ RangerContextHolder.setSecurityContext(null);
+
+ RangerRoleList rangerRoleListInDB = roleDBStore.getRolesForUser(searchFilter, rangerRoleList);
+
+ Assert.assertNotNull(rangerRoleListInDB);
+ Assert.assertEquals(1, rangerRoleListInDB.getList().size());
+ }
+
+ @Test
+ public void testGetRolesForUser_WithUserSession() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+ RangerRoleList rangerRoleList = new RangerRoleList(Collections.singletonList(rangerRole));
+ XXRole xxRole = getTestRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ XXPortalUser userKeyAdmin = new XXPortalUser() {{ setId(getUserProfile().getId()); setLoginId(keyAdminLoginID); }};
+ VXUser vxUserKeyAdmin = new VXUser() {{ setId(userKeyAdmin.getId()); }};
+ SearchFilter searchFilter = new SearchFilter();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+
+ Mockito.when(xUserService.getXUserByUserName(userKeyAdmin.getLoginId())).thenReturn(vxUserKeyAdmin);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByUserId(userKeyAdmin.getId())).thenReturn(xxRoles);
+
+ RangerSecurityContext context = new RangerSecurityContext() {{ setUserSession(new UserSessionBase());}};
+
+ RangerContextHolder.setSecurityContext(context);
+
+ UserSessionBase currentUserSession = ContextUtil.getCurrentUserSession();
+
+ currentUserSession.setXXPortalUser(userKeyAdmin);
+ currentUserSession.setKeyAdmin(true);
+ currentUserSession.setUserRoleList(Collections.singletonList((RangerConstants.ROLE_USER)));
+
+ RangerRoleList rangerRoleListInDB = roleDBStore.getRolesForUser(searchFilter, rangerRoleList);
+
+ Assert.assertNotNull(rangerRoleListInDB);
+ Assert.assertEquals(1, rangerRoleListInDB.getList().size());
+ }
+
+ @Test
+ public void testGetRolesByServiceId() {
+ XXService xxService = getXXService();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+ RangerRole rangerRole = getRangerRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.getAll()).thenReturn(xxRoles);
+
+ XXServiceDefDao xxServiceDefDao = Mockito.mock(XXServiceDefDao.class);
+
+ Mockito.when(daoMgr.getXXServiceDef()).thenReturn(xxServiceDefDao);
+ Mockito.when(xxServiceDefDao.findServiceDefTypeByServiceId(xxService.getId())).thenReturn("test");
+ Mockito.when(config.get("ranger.admin.service.types.for.returning.all.roles", "solr")).thenReturn("test,test1");
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.when(xxRoleDao.getAll()).thenReturn(xxRoles);
+
+ List<RangerRole> rangerRoleListInDB = roleDBStore.getRoles(xxService.getId());
+
+ Assert.assertNotNull(rangerRoleListInDB);
+ Assert.assertEquals(1, rangerRoleListInDB.size());
+ }
+
+ @Test
+ public void testGetRolesByService() {
+ XXService xxService = getXXService();
+ XXRole xxRole = getTestRole();
+ RangerRole rangerRole = getRangerRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXServiceDefDao xxServiceDefDao = Mockito.mock(XXServiceDefDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.getAll()).thenReturn(xxRoles);
+ Mockito.when(daoMgr.getXXServiceDef()).thenReturn(xxServiceDefDao);
+ Mockito.when(xxServiceDefDao.findServiceDefTypeByServiceId(xxService.getId())).thenReturn("test");
+ Mockito.when(config.get("ranger.admin.service.types.for.returning.all.roles", "solr")).thenReturn("test,test1");
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+
+ List<RangerRole> rangerRoleListInDB = roleDBStore.getRoles(xxService);
+
+ Assert.assertNotNull(rangerRoleListInDB);
+ Assert.assertEquals(1, rangerRoleListInDB.size());
+ }
+
+ @Test
+ public void testGetRoleByRoleName() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(xxRole);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+
+ RangerRole rangerRoleInDB = roleDBStore.getRole(roleName);
+
+ Assert.assertNotNull(rangerRoleInDB);
+
+ Mockito.when(restErrorUtil.createRESTException(Mockito.anyString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+
+ roleDBStore.getRole(roleName + "-non-existing");
+ }
+
+ @Test
+ public void testGetRoleNames() throws Exception {
+ List<String> roleNames = Collections.singletonList(roleName);
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ SearchFilter searchFilter = new SearchFilter();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.getAllNames()).thenReturn(roleNames);
+
+ List<String> roleNamesInDB = roleDBStore.getRoleNames(searchFilter);
+
+ Assert.assertNotNull(roleNamesInDB);
+ }
+
+ @Test
+ public void testGetRoles() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ SearchFilter searchFilter = new SearchFilter();
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.getAll()).thenReturn(xxRoles);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+
+ List<RangerRole> rangerRolesInDB = roleDBStore.getRoles(searchFilter);
+
+ Assert.assertNotNull(rangerRolesInDB);
+ }
+
+ @Test
+ public void testGetRoleVersion() {
+ XXService xxService = getXXService();
+ XXGlobalStateDao xxGlobalStateDao = Mockito.mock(XXGlobalStateDao.class);
+
+ Mockito.when(daoMgr.getXXGlobalState()).thenReturn(xxGlobalStateDao);
+ Mockito.when(xxGlobalStateDao.getAppDataVersion("RangerRole")).thenReturn(1L);
+
+ Long roleVersion = roleDBStore.getRoleVersion(xxService.getName());
+
+ Assert.assertNotNull(roleVersion);
+ }
+
+ @Test
+ public void testGetRolesByLastKnownVersion() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXGlobalStateDao xxGlobalStateDao = Mockito.mock(XXGlobalStateDao.class);
+ XXRole xxRole = getTestRole();
+ List<XXRole> xxRoles = Collections.singletonList(xxRole);
+ XXService xxService = getXXService();
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.getAll()).thenReturn(xxRoles);
+ Mockito.when(daoMgr.getXXGlobalState()).thenReturn(xxGlobalStateDao);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.when(xxGlobalStateDao.getAppDataVersion("RangerRole")).thenReturn(2L);
+
+ RangerRoles rangerRolesInCache = roleDBStore.getRoles(xxService.getName(), 1L);
+
+ Assert.assertNotNull(rangerRolesInCache);
+ }
+
+ @Test
+ public void testDeleteRoleByInValidRoleName() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(null);
+ Mockito.when(restErrorUtil.createRESTException(Mockito.anyString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+
+ roleDBStore.deleteRole(roleName);
+ }
+
+ @Test
+ public void testDeleteRoleByValidRoleName() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXPolicyRefRoleDao xxPolicyRefRoleDao = Mockito.mock(XXPolicyRefRoleDao.class);
+ XXRoleRefRoleDao xxRoleRefRoleDao = Mockito.mock(XXRoleRefRoleDao.class);
+ XXTrxLog xTrxLog = new XXTrxLog() {{ setAction("delete"); }};
+ List<XXTrxLog> trxLogList = Collections.singletonList(xTrxLog);
+ XXRole xxRole = getTestRole();
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(daoMgr.getXXPolicyRefRole()).thenReturn(xxPolicyRefRoleDao);
+ Mockito.when(xxPolicyRefRoleDao.findRoleRefPolicyCount(roleName)).thenReturn(0L);
+ Mockito.when(daoMgr.getXXRoleRefRole()).thenReturn(xxRoleRefRoleDao);
+ Mockito.when(xxRoleRefRoleDao.findRoleRefRoleCount(roleName)).thenReturn(0L);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(xxRole);
+ Mockito.doNothing().when(transactionSynchronizationAdapter).executeOnTransactionCommit(Mockito.any());
+ Mockito.when(roleRefUpdater.cleanupRefTables(Mockito.any())).thenReturn(true);
+ Mockito.doNothing().when(svcStore).updateServiceAuditConfig(Mockito.anyString(), Mockito.any());
+ Mockito.when(roleService.delete(Mockito.any())).thenReturn(true);
+ Mockito.when(roleService.getTransactionLog( Mockito.any(), Mockito.any(), Mockito.anyString())).thenReturn(trxLogList);
+ Mockito.doNothing().when(bizUtil).createTrxLog(Mockito.any());
+
+ roleDBStore.deleteRole(roleName);
+ }
+
+ @Test
+ public void testCreateRoleWhenTheRoleExists() throws Exception {
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXRole xxRole = getTestRole();
+ RangerRole rangerRole = getRangerRole();
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(xxRole);
+ Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), Mockito.any())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+
+ roleDBStore.createRole(rangerRole, true);
+ }
+
+ @Test
+ public void testCreateRole() throws Exception {
+ XXTrxLog xTrxLog = new XXTrxLog() {{ setAction("create"); }};
+ List<XXTrxLog> trxLogList = Collections.singletonList(xTrxLog);
+ RangerRole rangerRole = getRangerRole();
+ XXRole xxRole = getTestRole();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(rangerRole.getName())).thenReturn(null).thenReturn(xxRole);
+ Mockito.when(roleService.create(rangerRole)).thenReturn(rangerRole);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.doNothing().when(transactionSynchronizationAdapter).executeOnTransactionCommit(Mockito.any());
+ Mockito.doNothing().when(roleRefUpdater).createNewRoleMappingForRefTable(Mockito.any(), Mockito.anyBoolean());
+ Mockito.when(roleService.getTransactionLog( Mockito.any(), Mockito.any(), Mockito.anyString())).thenReturn(trxLogList);
+ Mockito.doNothing().when(bizUtil).createTrxLog(Mockito.any());
+
+ roleDBStore.createRole(rangerRole, true);
+ }
+
+ @Test
+ public void testUpdateRoleWhenTheRoleNotExists() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleId(rangerRole.getId())).thenReturn(null);
+ Mockito.when(restErrorUtil.createRESTException(Mockito.anyString())).thenThrow(new WebApplicationException());
+ thrown.expect(WebApplicationException.class);
+
+ roleDBStore.updateRole(rangerRole, true);
+ }
+
+ @Test
+ public void testUpdateRole() throws Exception {
+ XXTrxLog xTrxLog = new XXTrxLog() {{ setAction("update"); }};
+ List<XXTrxLog> trxLogList = Collections.singletonList(xTrxLog);
+ RangerRole rangerRole = getRangerRole();
+ XXRole xxRole = getTestRole();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleId(rangerRole.getId())).thenReturn(xxRole);
+ Mockito.doNothing().when(transactionSynchronizationAdapter).executeOnTransactionCommit(Mockito.any());
+ Mockito.when(roleService.update(rangerRole)).thenReturn(rangerRole);
+ Mockito.doNothing().when(roleRefUpdater).createNewRoleMappingForRefTable(Mockito.any(), Mockito.anyBoolean());
+ Mockito.doNothing().when(roleService).updatePolicyVersions(rangerRole.getId());
+ Mockito.when(roleService.getTransactionLog( Mockito.any(), Mockito.any(), Mockito.anyString())).thenReturn(trxLogList);
+ Mockito.doNothing().when(bizUtil).createTrxLog(Mockito.any());
+
+ roleDBStore.updateRole(rangerRole, true);
+ }
+
+ @Test
+ public void testDeleteRoleByRoleId() throws Exception {
+ RangerRole rangerRole = getRangerRole();
+ XXPolicyRefRoleDao xxPolicyRefRoleDao = Mockito.mock(XXPolicyRefRoleDao.class);
+ XXRoleRefRoleDao xxRoleRefRoleDao = Mockito.mock(XXRoleRefRoleDao.class);
+ XXTrxLog xTrxLog = new XXTrxLog() {{ setAction("delete"); }};
+ List<XXTrxLog> trxLogList = Collections.singletonList(xTrxLog);
+ XXRole xxRole = getTestRole();
+
+ Mockito.when(roleService.read(roleId)).thenReturn(rangerRole);
+ Mockito.when(daoMgr.getXXPolicyRefRole()).thenReturn(xxPolicyRefRoleDao);
+ Mockito.when(xxPolicyRefRoleDao.findRoleRefPolicyCount(rangerRole.getName())).thenReturn(0L);
+ Mockito.when(daoMgr.getXXRoleRefRole()).thenReturn(xxRoleRefRoleDao);
+ Mockito.when(xxRoleRefRoleDao.findRoleRefRoleCount(rangerRole.getName())).thenReturn(0L);
+ Mockito.when(roleService.read(xxRole.getId())).thenReturn(rangerRole);
+ Mockito.doNothing().when(transactionSynchronizationAdapter).executeOnTransactionCommit(Mockito.any());
+ Mockito.when(roleRefUpdater.cleanupRefTables(Mockito.any())).thenReturn(true);
+ Mockito.doNothing().when(svcStore).updateServiceAuditConfig(Mockito.anyString(), Mockito.any());
+ Mockito.when(roleService.delete(Mockito.any())).thenReturn(true);
+ Mockito.when(roleService.getTransactionLog( Mockito.any(), Mockito.any(), Mockito.anyString())).thenReturn(trxLogList);
+ Mockito.doNothing().when(bizUtil).createTrxLog(Mockito.any());
+
+ roleDBStore.deleteRole(rangerRole.getId());
+ }
+
+ @Test
+ public void testDeleteRoleByValidRoleNameWhenRoleIsAssociatedWithOneOrMorePolices() throws Exception {
+ XXRole xxRole = getTestRole();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXPolicyRefRoleDao xxPolicyRefRoleDao = Mockito.mock(XXPolicyRefRoleDao.class);
+
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(xxRole);
+ Mockito.when(daoMgr.getXXPolicyRefRole()).thenReturn(xxPolicyRefRoleDao);
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxPolicyRefRoleDao.findRoleRefPolicyCount(roleName)).thenReturn(1L);
+ thrown.expect(Exception.class);
+
+ roleDBStore.deleteRole(roleName);
+ }
+
+ @Test
+ public void testDeleteRoleByValidRoleNameWhenRoleIsAssociatedWithOneOrMoreRoles() throws Exception {
+ XXRole xxRole = getTestRole();
+ XXRoleDao xxRoleDao = Mockito.mock(XXRoleDao.class);
+ XXPolicyRefRoleDao xxPolicyRefRoleDao = Mockito.mock(XXPolicyRefRoleDao.class);
+ XXRoleRefRoleDao xxRoleRefRoleDao = Mockito.mock(XXRoleRefRoleDao.class);
+
+ Mockito.when(daoMgr.getXXRole()).thenReturn(xxRoleDao);
+ Mockito.when(xxRoleDao.findByRoleName(roleName)).thenReturn(xxRole);
+ Mockito.when(daoMgr.getXXPolicyRefRole()).thenReturn(xxPolicyRefRoleDao);
+ Mockito.when(xxPolicyRefRoleDao.findRoleRefPolicyCount(roleName)).thenReturn(0L);
+ Mockito.when(daoMgr.getXXRoleRefRole()).thenReturn(xxRoleRefRoleDao);
+ Mockito.when(xxRoleRefRoleDao.findRoleRefRoleCount(roleName)).thenReturn(1L);
+ thrown.expect(Exception.class);
+
+ roleDBStore.deleteRole(roleName);
+ }
+
+ private XXRole getTestRole() {
+ return new XXRole() {{
+ setId(TestRoleDBStore.roleId);
+ setCreateTime(new Date());
+ setName(TestRoleDBStore.roleName);
+ setDescription(TestRoleDBStore.roleName);
+ }};
+ }
+
+ private VXPortalUser getUserProfile() {
+ return new VXPortalUser() {{
+ setEmailAddress("test@test.com");
+ setFirstName("user12");
+ setLastName("test12");
+ setLoginId(TestRoleDBStore.userLoginID);
+ setPassword("Usertest123");
+ setUserSource(1);
+ setPublicScreenName("testuser");
+ setId(TestRoleDBStore.userId);
+ }};
+ }
+
+ private RangerRole getRangerRole(){
+ String name = "test-role";
+ String name2 = "admin";
+ RoleMember rm1 = new RoleMember(name, true);
+ RoleMember rm2 = new RoleMember(name2, true);
+ List<RoleMember> usersList = Arrays.asList(rm1,rm2);
+
+ return new RangerRole(name, name, null, usersList, null) {{
+ setCreatedByUser(name);
+ setId(TestRoleDBStore.roleId);
+ }};
+ }
+
+ private XXService getXXService() {
+ return new XXService() {{
+ setAddedByUserId(TestRoleDBStore.id);
+ setCreateTime(new Date());
+ setDescription("Hdfs service");
+ setGuid("serviceguid");
+ setId(TestRoleDBStore.id);
+ setIsEnabled(true);
+ setName("Hdfs");
+ setPolicyUpdateTime(new Date());
+ setPolicyVersion(1L);
+ setType(1L);
+ setUpdatedByUserId(TestRoleDBStore.id);
+ setUpdateTime(new Date());
+ }};
+ }
+}