Repository: incubator-ranger Updated Branches: refs/heads/ranger-0.6 4a332a93e -> 4a64c4fa1
RANGER-1170: Added Unit tests for PuclicAPIsv2 and PublicAPIs (0.6 branch) Signed-off-by: Velmurugan Periasamy <v...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/1b728ebe Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/1b728ebe Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/1b728ebe Branch: refs/heads/ranger-0.6 Commit: 1b728ebeab2e90dcb169599ff67dcc7b039fdcf9 Parents: 4a332a9 Author: Sailaja Polavarapu <spolavar...@hortonworks.com> Authored: Thu Oct 13 14:46:58 2016 -0700 Committer: Velmurugan Periasamy <v...@apache.org> Committed: Fri Oct 14 15:44:35 2016 -0400 ---------------------------------------------------------------------- .../org/apache/ranger/rest/TestPublicAPIs.java | 512 ++++++++++++++++++ .../apache/ranger/rest/TestPublicAPIsv2.java | 539 +++++++++++++++++++ 2 files changed, 1051 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/1b728ebe/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java new file mode 100644 index 0000000..9faae93 --- /dev/null +++ b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java @@ -0,0 +1,512 @@ +/* + * 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.rest; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang.StringUtils; +import org.apache.ranger.common.ContextUtil; +import org.apache.ranger.common.JSONUtil; +import org.apache.ranger.common.RESTErrorUtil; +import org.apache.ranger.common.RangerSearchUtil; +import org.apache.ranger.common.ServiceUtil; +import org.apache.ranger.common.UserSessionBase; +import org.apache.ranger.db.RangerDaoManager; +import org.apache.ranger.db.XXPolicyDao; +import org.apache.ranger.db.XXServiceDao; +import org.apache.ranger.entity.XXPolicy; +import org.apache.ranger.entity.XXService; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; +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.RangerPolicyService; +import org.apache.ranger.service.XAssetService; +import org.apache.ranger.view.VXAsset; +import org.apache.ranger.view.VXLong; +import org.apache.ranger.view.VXPolicy; +import org.apache.ranger.view.VXPolicyList; +import org.apache.ranger.view.VXRepository; +import org.apache.ranger.view.VXRepositoryList; +import org.junit.Assert; +import org.junit.Before; +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 TestPublicAPIs { + + private static Long Id = 8L; + + @InjectMocks + PublicAPIs publicAPIs = new PublicAPIs(); + + @Mock + ServiceREST serviceREST; + + @Mock + ServiceUtil serviceUtil; + + @Mock + RESTErrorUtil restErrorUtil; + + @Mock + JSONUtil jsonUtil; + + @Mock + RangerDaoManager daoMgr; + + @Mock + RangerSearchUtil searchUtil; + + @Mock + XAssetService xAssetService; + + @Mock + RangerPolicyService policyService; + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Before + public void setup() throws Exception { + RangerSecurityContext context = new RangerSecurityContext(); + context.setUserSession(new UserSessionBase()); + RangerContextHolder.setSecurityContext(context); + UserSessionBase currentUserSession = ContextUtil + .getCurrentUserSession(); + currentUserSession.setUserAdmin(true); + } + + private RangerService rangerService() { + Map<String, String> configs = new HashMap<String, String>(); + configs.put("username", "servicemgr"); + configs.put("password", "servicemgr"); + configs.put("namenode", "servicemgr"); + configs.put("hadoop.security.authorization", "No"); + configs.put("hadoop.security.authentication", "Simple"); + configs.put("hadoop.security.auth_to_local", ""); + configs.put("dfs.datanode.kerberos.principal", ""); + configs.put("dfs.namenode.kerberos.principal", ""); + configs.put("dfs.secondary.namenode.kerberos.principal", ""); + configs.put("hadoop.rpc.protection", "Privacy"); + configs.put("commonNameForCertificate", ""); + + RangerService rangerService = new RangerService(); + rangerService.setId(Id); + rangerService.setConfigs(configs); + rangerService.setCreateTime(new Date()); + rangerService.setDescription("service policy"); + rangerService.setGuid("1427365526516_835_0"); + rangerService.setIsEnabled(true); + rangerService.setName("HDFS_1"); + rangerService.setPolicyUpdateTime(new Date()); + rangerService.setType("1"); + rangerService.setUpdatedBy("Admin"); + rangerService.setUpdateTime(new Date()); + + return rangerService; + } + + private XXService xService() { + XXService xService = new XXService(); + xService.setAddedByUserId(Id); + xService.setCreateTime(new Date()); + xService.setDescription("Hdfs service"); + xService.setGuid("serviceguid"); + xService.setId(Id); + xService.setIsEnabled(true); + xService.setName("Hdfs"); + xService.setPolicyUpdateTime(new Date()); + xService.setPolicyVersion(1L); + xService.setType(1L); + xService.setUpdatedByUserId(Id); + xService.setUpdateTime(new Date()); + + return xService; + } + + private VXRepository vXRepository(RangerService service) { + VXRepository ret = new VXRepository(); + ret.setRepositoryType(service.getType()); + ret.setName(service.getName()); + ret.setDescription(service.getDescription()); + ret.setIsActive(service.getIsEnabled()); + ret.setConfig(jsonUtil.readMapToString(service.getConfigs())); + //ret.setVersion(Long.toString(service.getVersion())); + ret.setId(service.getId()); + ret.setCreateDate(service.getCreateTime()); + ret.setUpdateDate(service.getUpdateTime()); + ret.setOwner(service.getCreatedBy()); + ret.setUpdatedBy(service.getUpdatedBy()); + + return ret; + } + + private VXPolicy vXPolicy(RangerPolicy policy, RangerService service) { + VXPolicy ret = new VXPolicy(); + ret.setPolicyName(StringUtils.trim(policy.getName())); + ret.setDescription(policy.getDescription()); + ret.setRepositoryName(policy.getService()); + ret.setIsEnabled(policy.getIsEnabled() ? true : false); + ret.setRepositoryType(service.getType()); + ret.setIsAuditEnabled(policy.getIsAuditEnabled()); + return ret; + } + + private RangerPolicy rangerPolicy() { + List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); + List<String> users = new ArrayList<String>(); + List<String> groups = new ArrayList<String>(); + List<RangerPolicyItemCondition> conditions = new ArrayList<RangerPolicyItemCondition>(); + List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); + RangerPolicyItem rangerPolicyItem = new RangerPolicyItem(); + rangerPolicyItem.setAccesses(accesses); + rangerPolicyItem.setConditions(conditions); + rangerPolicyItem.setGroups(groups); + rangerPolicyItem.setUsers(users); + rangerPolicyItem.setDelegateAdmin(false); + + policyItems.add(rangerPolicyItem); + + Map<String, RangerPolicyResource> policyResource = new HashMap<String, RangerPolicyResource>(); + RangerPolicyResource rangerPolicyResource = new RangerPolicyResource(); + rangerPolicyResource.setIsExcludes(true); + rangerPolicyResource.setIsRecursive(true); + rangerPolicyResource.setValue("1"); + rangerPolicyResource.setValues(users); + policyResource.put("resource", rangerPolicyResource); + RangerPolicy policy = new RangerPolicy(); + policy.setId(Id); + policy.setCreateTime(new Date()); + policy.setDescription("policy"); + policy.setGuid("policyguid"); + policy.setIsEnabled(true); + policy.setName("HDFS_1-1-20150316062453"); + policy.setUpdatedBy("Admin"); + policy.setUpdateTime(new Date()); + policy.setService("HDFS_1-1-20150316062453"); + policy.setIsAuditEnabled(true); + policy.setPolicyItems(policyItems); + policy.setResources(policyResource); + policy.setService("HDFS_1"); + + return policy; + } + + private XXPolicy policy() { + XXPolicy xxPolicy = new XXPolicy(); + xxPolicy.setId(Id); + xxPolicy.setName("HDFS_1-1-20150316062453"); + xxPolicy.setAddedByUserId(Id); + xxPolicy.setCreateTime(new Date()); + xxPolicy.setDescription("test"); + xxPolicy.setIsAuditEnabled(false); + xxPolicy.setIsEnabled(false); + xxPolicy.setService(1L); + xxPolicy.setUpdatedByUserId(Id); + xxPolicy.setUpdateTime(new Date()); + xxPolicy.setVersion(Id); + return xxPolicy; + } + + @Test + public void test1getRepository() throws Exception { + RangerService rangerService = rangerService(); + VXRepository vXRepository = vXRepository(rangerService); + Mockito.when(serviceREST.getService(rangerService.getId())).thenReturn(rangerService); + Mockito.when(serviceUtil.toVXRepository(rangerService)).thenReturn(vXRepository); + VXRepository dbVXRepository = publicAPIs.getRepository(Id); + + Assert.assertNotNull(dbVXRepository); + Assert.assertEquals(dbVXRepository, vXRepository); + Assert.assertEquals(dbVXRepository.getId(), + vXRepository.getId()); + Assert.assertEquals(dbVXRepository.getName(), + vXRepository.getName()); + Mockito.verify(serviceREST).getService(Id); + Mockito.verify(serviceUtil).toVXRepository(rangerService); + + } + + @Test + public void test2createRepository() throws Exception { + VXAsset vXAsset = new VXAsset(); + RangerService rangerService = rangerService(); + VXRepository vXRepository = vXRepository(rangerService); + Mockito.when(serviceUtil.publicObjecttoVXAsset(vXRepository)).thenReturn(vXAsset); + Mockito.when(serviceUtil.toRangerService(vXAsset)).thenReturn(rangerService); + Mockito.when(serviceREST.createService(rangerService)).thenReturn(rangerService); + Mockito.when(serviceUtil.toVXAsset(rangerService)).thenReturn(vXAsset); + Mockito.when(serviceUtil.vXAssetToPublicObject(vXAsset)).thenReturn(vXRepository); + VXRepository dbVXRepository = publicAPIs.createRepository(vXRepository); + + Assert.assertNotNull(dbVXRepository); + Assert.assertEquals(dbVXRepository, vXRepository); + Assert.assertEquals(dbVXRepository.getId(), + vXRepository.getId()); + Assert.assertEquals(dbVXRepository.getName(), + vXRepository.getName()); + Mockito.verify(serviceREST).createService(rangerService); + Mockito.verify(serviceUtil).publicObjecttoVXAsset(vXRepository); + Mockito.verify(serviceUtil).toRangerService(vXAsset); + Mockito.verify(serviceUtil).toVXAsset(rangerService); + Mockito.verify(serviceUtil).vXAssetToPublicObject(vXAsset); + } + + @Test + public void test3updateRepository() throws Exception { + VXAsset vXAsset = new VXAsset(); + RangerService rangerService = rangerService(); + VXRepository vXRepository = vXRepository(rangerService); + XXService xService = xService(); + XXServiceDao xServiceDao = Mockito.mock(XXServiceDao.class); + Mockito.when(daoMgr.getXXService()).thenReturn(xServiceDao); + Mockito.when(xServiceDao.getById(Id)).thenReturn(xService); + Mockito.when(serviceUtil.publicObjecttoVXAsset(vXRepository)).thenReturn(vXAsset); + Mockito.when(serviceUtil.toRangerService(vXAsset)).thenReturn(rangerService); + Mockito.when(serviceREST.updateService(rangerService)).thenReturn(rangerService); + Mockito.when(serviceUtil.toVXAsset(rangerService)).thenReturn(vXAsset); + Mockito.when(serviceUtil.vXAssetToPublicObject(vXAsset)).thenReturn(vXRepository); + VXRepository dbVXRepository = publicAPIs.updateRepository(vXRepository, Id); + + Assert.assertNotNull(dbVXRepository); + Assert.assertEquals(dbVXRepository, vXRepository); + Assert.assertEquals(dbVXRepository.getId(), + vXRepository.getId()); + Assert.assertEquals(dbVXRepository.getName(), + vXRepository.getName()); + Mockito.verify(serviceREST).updateService(rangerService); + Mockito.verify(serviceUtil).publicObjecttoVXAsset(vXRepository); + Mockito.verify(serviceUtil).toRangerService(vXAsset); + Mockito.verify(serviceUtil).toVXAsset(rangerService); + Mockito.verify(serviceUtil).vXAssetToPublicObject(vXAsset); + Mockito.verify(daoMgr).getXXService(); + } + + @Test + public void test4deleteRepository() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + Mockito.doNothing().when(serviceREST).deleteService(Id); + publicAPIs.deleteRepository(Id, request); + Mockito.verify(serviceREST).deleteService(Id); + } + + @Test + public void test5searchRepositories() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + List<RangerService> ret = new ArrayList<RangerService>(); + RangerService rangerService = rangerService(); + VXRepository vXRepository = vXRepository(rangerService); + List<VXRepository> repoList = new ArrayList<VXRepository>(); + repoList.add(vXRepository); + VXRepositoryList vXRepositoryList = new VXRepositoryList(repoList); + SearchFilter filter = new SearchFilter(); + filter.setParam(SearchFilter.POLICY_NAME, "policyName"); + filter.setParam(SearchFilter.SERVICE_NAME, "serviceName"); + Mockito.when(searchUtil.getSearchFilterFromLegacyRequestForRepositorySearch(request, xAssetService.sortFields)).thenReturn(filter); + Mockito.when(serviceREST.getServices(filter)).thenReturn(ret); + Mockito.when(serviceUtil.rangerServiceListToPublicObjectList(ret)).thenReturn(vXRepositoryList); + VXRepositoryList dbVXRepositoryList = publicAPIs.searchRepositories(request); + Assert.assertNotNull(dbVXRepositoryList); + Assert.assertEquals(dbVXRepositoryList.getResultSize(), vXRepositoryList.getResultSize()); + } + + @Test + public void test6countRepositories() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + VXLong vXLong = new VXLong(); + List<RangerService> ret = new ArrayList<RangerService>(); + RangerService rangerService = rangerService(); + VXRepository vXRepository = vXRepository(rangerService); + List<VXRepository> repoList = new ArrayList<VXRepository>(); + repoList.add(vXRepository); + VXRepositoryList vXRepositoryList = new VXRepositoryList(repoList); + SearchFilter filter = new SearchFilter(); + filter.setParam(SearchFilter.POLICY_NAME, "policyName"); + filter.setParam(SearchFilter.SERVICE_NAME, "serviceName"); + Mockito.when(searchUtil.getSearchFilterFromLegacyRequestForRepositorySearch(request, xAssetService.sortFields)).thenReturn(filter); + Mockito.when(serviceREST.getServices(filter)).thenReturn(ret); + Mockito.when(serviceUtil.rangerServiceListToPublicObjectList(ret)).thenReturn(vXRepositoryList); + VXRepositoryList dbVXRepositoryList = publicAPIs.searchRepositories(request); + vXLong.setValue(dbVXRepositoryList.getResultSize()); + Assert.assertNotNull(vXLong); + Assert.assertEquals(vXLong.getValue(), 1); + Mockito.verify(searchUtil).getSearchFilterFromLegacyRequestForRepositorySearch(request, xAssetService.sortFields); + Mockito.verify(serviceREST).getServices(filter); + Mockito.verify(serviceUtil).rangerServiceListToPublicObjectList(ret); + } + + @Test + public void test7getPolicy() throws Exception { + RangerPolicy policy = rangerPolicy(); + RangerService service = rangerService(); + VXPolicy vXPolicy = vXPolicy(policy, service); + Mockito.when(serviceREST.getPolicy(policy.getId())).thenReturn(policy); + Mockito.when(serviceREST.getServiceByName(policy.getService())).thenReturn(service); + Mockito.when(serviceUtil.toVXPolicy(policy, service)).thenReturn(vXPolicy); + VXPolicy dbVXPolicy = publicAPIs.getPolicy(Id); + Assert.assertNotNull(dbVXPolicy); + Assert.assertEquals(dbVXPolicy, vXPolicy); + Assert.assertEquals(dbVXPolicy.getPolicyName(), vXPolicy.getPolicyName()); + Assert.assertEquals(dbVXPolicy.getRepositoryType(), vXPolicy.getRepositoryType()); + Mockito.verify(serviceREST).getPolicy(Id); + Mockito.verify(serviceREST).getServiceByName(policy.getService()); + Mockito.verify(serviceUtil).toVXPolicy(policy, service); + } + + @Test + public void test8createPolicy() throws Exception { + RangerPolicy policy = rangerPolicy(); + RangerService service = rangerService(); + VXPolicy vXPolicy = vXPolicy(policy, service); + Mockito.when(serviceREST.getServiceByName(vXPolicy.getRepositoryName())).thenReturn(service); + Mockito.when(serviceUtil.toRangerPolicy(vXPolicy,service)).thenReturn(policy); + Mockito.when(serviceREST.createPolicy(policy, null)).thenReturn(policy); + Mockito.when(serviceUtil.toVXPolicy(policy, service)).thenReturn(vXPolicy); + VXPolicy dbVXPolicy = publicAPIs.createPolicy(vXPolicy); + Assert.assertNotNull(dbVXPolicy); + Assert.assertEquals(dbVXPolicy, vXPolicy); + Assert.assertEquals(dbVXPolicy.getId(), + vXPolicy.getId()); + Assert.assertEquals(dbVXPolicy.getRepositoryName(), + vXPolicy.getRepositoryName()); + Mockito.verify(serviceREST).createPolicy(policy, null); + Mockito.verify(serviceREST).getServiceByName(vXPolicy.getRepositoryName()); + Mockito.verify(serviceUtil).toVXPolicy(policy, service); + Mockito.verify(serviceUtil).toRangerPolicy(vXPolicy,service); + + } + + @Test + public void test9updatePolicy() throws Exception { + RangerPolicy policy = rangerPolicy(); + RangerService service = rangerService(); + VXPolicy vXPolicy = vXPolicy(policy, service); + XXPolicyDao xXPolicyDao = Mockito.mock(XXPolicyDao.class); + XXPolicy xXPolicy = policy(); + Mockito.when(daoMgr.getXXPolicy()).thenReturn(xXPolicyDao); + Mockito.when(xXPolicyDao.getById(Id)).thenReturn(xXPolicy); + Mockito.when(serviceREST.getServiceByName(vXPolicy.getRepositoryName())).thenReturn(service); + Mockito.when(serviceUtil.toRangerPolicy(vXPolicy,service)).thenReturn(policy); + Mockito.when(serviceREST.updatePolicy(policy)).thenReturn(policy); + Mockito.when(serviceUtil.toVXPolicy(policy, service)).thenReturn(vXPolicy); + VXPolicy dbVXPolicy = publicAPIs.updatePolicy(vXPolicy, Id); + + Assert.assertNotNull(dbVXPolicy); + Assert.assertEquals(dbVXPolicy, vXPolicy); + Assert.assertEquals(dbVXPolicy.getId(), + vXPolicy.getId()); + Assert.assertEquals(dbVXPolicy.getRepositoryName(), + vXPolicy.getRepositoryName()); + Mockito.verify(serviceREST).updatePolicy(policy); + Mockito.verify(serviceREST).getServiceByName(vXPolicy.getRepositoryName()); + Mockito.verify(serviceUtil).toVXPolicy(policy, service); + Mockito.verify(serviceUtil).toRangerPolicy(vXPolicy,service); + Mockito.verify(daoMgr).getXXPolicy(); + Mockito.verify(xXPolicyDao).getById(Id); + } + + @Test + public void test10deletePolicy() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + Mockito.doNothing().when(serviceREST).deletePolicy(Id); + publicAPIs.deletePolicy(Id, request); + Mockito.verify(serviceREST).deletePolicy(Id); + } + + @Test + public void test11searchPolicies() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerService service = rangerService(); + RangerPolicy policy = rangerPolicy(); + List<RangerPolicy> policyList = new ArrayList<RangerPolicy>(); + policyList.add(policy); + VXPolicy vXPolicy = vXPolicy(policy, service); + List<VXPolicy> vXPolicies = new ArrayList<VXPolicy>(); + vXPolicies.add(vXPolicy); + VXPolicyList vXPolicyList = new VXPolicyList(vXPolicies); + SearchFilter filter = new SearchFilter(); + filter.setParam(SearchFilter.POLICY_NAME, "policyName"); + filter.setParam(SearchFilter.SERVICE_NAME, "serviceName"); + filter.setStartIndex(0); + filter.setMaxRows(10); + Mockito.when(searchUtil.getSearchFilterFromLegacyRequest(request, policyService.sortFields)).thenReturn(filter); + Mockito.when(serviceREST.getPolicies(filter)).thenReturn(policyList); + Mockito.when(serviceUtil.rangerPolicyListToPublic(policyList,filter)).thenReturn(vXPolicyList); + VXPolicyList dbVXPolicyList = publicAPIs.searchPolicies(request); + Assert.assertNotNull(dbVXPolicyList); + Assert.assertEquals(dbVXPolicyList.getResultSize(), vXPolicyList.getResultSize()); + Mockito.verify(searchUtil).getSearchFilterFromLegacyRequest(request, policyService.sortFields); + Mockito.verify(serviceREST).getPolicies(filter); + Mockito.verify(serviceUtil).rangerPolicyListToPublic(policyList,filter); + + } + + @Test + public void test12countPolicies() throws Exception { + VXLong vXLong = new VXLong(); + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerService service = rangerService(); + RangerPolicy policy = rangerPolicy(); + List<RangerPolicy> policyList = new ArrayList<RangerPolicy>(); + policyList.add(policy); + VXPolicy vXPolicy = vXPolicy(policy, service); + List<VXPolicy> vXPolicies = new ArrayList<VXPolicy>(); + vXPolicies.add(vXPolicy); + VXPolicyList vXPolicyList = new VXPolicyList(vXPolicies); + SearchFilter filter = new SearchFilter(); + filter.setParam(SearchFilter.POLICY_NAME, "policyName"); + filter.setParam(SearchFilter.SERVICE_NAME, "serviceName"); + filter.setStartIndex(0); + filter.setMaxRows(10); + Mockito.when(searchUtil.getSearchFilterFromLegacyRequest(request, policyService.sortFields)).thenReturn(filter); + Mockito.when(serviceREST.getPolicies(filter)).thenReturn(policyList); + Mockito.when(serviceUtil.rangerPolicyListToPublic(policyList,filter)).thenReturn(vXPolicyList); + VXPolicyList dbVXPolicyList = publicAPIs.searchPolicies(request); + vXLong.setValue(dbVXPolicyList.getResultSize()); + Assert.assertNotNull(vXLong); + Assert.assertEquals(vXLong.getValue(), 1); + Mockito.verify(searchUtil).getSearchFilterFromLegacyRequest(request, policyService.sortFields); + Mockito.verify(serviceREST).getPolicies(filter); + Mockito.verify(serviceUtil).rangerPolicyListToPublic(policyList,filter); + + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/1b728ebe/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java new file mode 100644 index 0000000..85934f5 --- /dev/null +++ b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java @@ -0,0 +1,539 @@ +/* + * 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.rest; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.ranger.common.ContextUtil; +import org.apache.ranger.common.RESTErrorUtil; +import org.apache.ranger.common.UserSessionBase; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.model.RangerServiceDef; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; +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.view.RangerPolicyList; +import org.apache.ranger.view.RangerServiceDefList; +import org.apache.ranger.view.RangerServiceList; +import org.junit.Assert; +import org.junit.Before; +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 TestPublicAPIsv2 { + + private static Long Id = 8L; + + @InjectMocks + PublicAPIsv2 publicAPIsv2 = new PublicAPIsv2(); + + @Mock + ServiceREST serviceREST; + + @Mock + RESTErrorUtil restErrorUtil; + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Before + public void setup() throws Exception { + RangerSecurityContext context = new RangerSecurityContext(); + context.setUserSession(new UserSessionBase()); + RangerContextHolder.setSecurityContext(context); + UserSessionBase currentUserSession = ContextUtil + .getCurrentUserSession(); + currentUserSession.setUserAdmin(true); + } + + private RangerServiceDef rangerServiceDef() { + List<RangerServiceConfigDef> configs = new ArrayList<RangerServiceConfigDef>(); + List<RangerResourceDef> resources = new ArrayList<RangerResourceDef>(); + List<RangerAccessTypeDef> accessTypes = new ArrayList<RangerAccessTypeDef>(); + List<RangerPolicyConditionDef> policyConditions = new ArrayList<RangerPolicyConditionDef>(); + List<RangerContextEnricherDef> contextEnrichers = new ArrayList<RangerContextEnricherDef>(); + List<RangerEnumDef> enums = new ArrayList<RangerEnumDef>(); + + RangerServiceDef rangerServiceDef = new RangerServiceDef(); + rangerServiceDef.setId(Id); + rangerServiceDef.setName("RangerServiceHdfs"); + rangerServiceDef.setImplClass("RangerServiceHdfs"); + rangerServiceDef.setLabel("HDFS Repository"); + rangerServiceDef.setDescription("HDFS Repository"); + rangerServiceDef.setRbKeyDescription(null); + rangerServiceDef.setUpdatedBy("Admin"); + rangerServiceDef.setUpdateTime(new Date()); + rangerServiceDef.setConfigs(configs); + rangerServiceDef.setResources(resources); + rangerServiceDef.setAccessTypes(accessTypes); + rangerServiceDef.setPolicyConditions(policyConditions); + rangerServiceDef.setContextEnrichers(contextEnrichers); + rangerServiceDef.setEnums(enums); + + return rangerServiceDef; + } + + private RangerService rangerService() { + Map<String, String> configs = new HashMap<String, String>(); + configs.put("username", "servicemgr"); + configs.put("password", "servicemgr"); + configs.put("namenode", "servicemgr"); + configs.put("hadoop.security.authorization", "No"); + configs.put("hadoop.security.authentication", "Simple"); + configs.put("hadoop.security.auth_to_local", ""); + configs.put("dfs.datanode.kerberos.principal", ""); + configs.put("dfs.namenode.kerberos.principal", ""); + configs.put("dfs.secondary.namenode.kerberos.principal", ""); + configs.put("hadoop.rpc.protection", "Privacy"); + configs.put("commonNameForCertificate", ""); + + RangerService rangerService = new RangerService(); + rangerService.setId(Id); + rangerService.setConfigs(configs); + rangerService.setCreateTime(new Date()); + rangerService.setDescription("service policy"); + rangerService.setGuid("1427365526516_835_0"); + rangerService.setIsEnabled(true); + rangerService.setName("HDFS_1"); + rangerService.setPolicyUpdateTime(new Date()); + rangerService.setType("1"); + rangerService.setUpdatedBy("Admin"); + rangerService.setUpdateTime(new Date()); + + return rangerService; + } + + private RangerPolicy rangerPolicy() { + List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); + List<String> users = new ArrayList<String>(); + List<String> groups = new ArrayList<String>(); + List<RangerPolicyItemCondition> conditions = new ArrayList<RangerPolicyItemCondition>(); + List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); + RangerPolicyItem rangerPolicyItem = new RangerPolicyItem(); + rangerPolicyItem.setAccesses(accesses); + rangerPolicyItem.setConditions(conditions); + rangerPolicyItem.setGroups(groups); + rangerPolicyItem.setUsers(users); + rangerPolicyItem.setDelegateAdmin(false); + + policyItems.add(rangerPolicyItem); + + Map<String, RangerPolicyResource> policyResource = new HashMap<String, RangerPolicyResource>(); + RangerPolicyResource rangerPolicyResource = new RangerPolicyResource(); + rangerPolicyResource.setIsExcludes(true); + rangerPolicyResource.setIsRecursive(true); + rangerPolicyResource.setValue("1"); + rangerPolicyResource.setValues(users); + policyResource.put("resource", rangerPolicyResource); + RangerPolicy policy = new RangerPolicy(); + policy.setId(Id); + policy.setCreateTime(new Date()); + policy.setDescription("policy"); + policy.setGuid("policyguid"); + policy.setIsEnabled(true); + policy.setName("HDFS_1-1-20150316062453"); + policy.setUpdatedBy("Admin"); + policy.setUpdateTime(new Date()); + policy.setService("HDFS_1-1-20150316062453"); + policy.setIsAuditEnabled(true); + policy.setPolicyItems(policyItems); + policy.setResources(policyResource); + policy.setService("HDFS_1"); + + return policy; + } + + @Test + public void test1getServiceDef() throws Exception { + RangerServiceDef rangerServiceDef = rangerServiceDef(); + Mockito.when(serviceREST.getServiceDef(rangerServiceDef.getId())).thenReturn(rangerServiceDef); + RangerServiceDef dbRangerServiceDef = publicAPIsv2.getServiceDef(Id); + Assert.assertNotNull(dbRangerServiceDef); + Assert.assertEquals(dbRangerServiceDef, rangerServiceDef); + Assert.assertEquals(dbRangerServiceDef.getId(), + rangerServiceDef.getId()); + Assert.assertEquals(dbRangerServiceDef.getName(), + rangerServiceDef.getName()); + Mockito.verify(serviceREST).getServiceDef(Id); + } + + @Test + public void test2getServiceDefByName() throws Exception { + RangerServiceDef rangerServiceDef = rangerServiceDef(); + String name = rangerServiceDef.getName(); + Mockito.when(serviceREST.getServiceDefByName(name)).thenReturn(rangerServiceDef); + RangerServiceDef dbRangerServiceDef = publicAPIsv2.getServiceDefByName(name); + Assert.assertNotNull(dbRangerServiceDef); + Assert.assertEquals(dbRangerServiceDef, rangerServiceDef); + Assert.assertEquals(dbRangerServiceDef.getId(), + rangerServiceDef.getId()); + Assert.assertEquals(dbRangerServiceDef.getName(), + rangerServiceDef.getName()); + Mockito.verify(serviceREST).getServiceDefByName(name); + } + + @Test + public void test3searchServiceDefs() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + List<RangerServiceDef> serviceDefsList = new ArrayList<RangerServiceDef>(); + RangerServiceDef serviceDef = rangerServiceDef(); + serviceDefsList.add(serviceDef); + RangerServiceDefList serviceDefList = new RangerServiceDefList(serviceDefsList); + Mockito.when(serviceREST.getServiceDefs(request)).thenReturn(serviceDefList); + List<RangerServiceDef> dbRangerServiceDefList = publicAPIsv2.searchServiceDefs(request); + Assert.assertNotNull(dbRangerServiceDefList); + Assert.assertEquals(dbRangerServiceDefList.size(), serviceDefsList.size()); + Mockito.verify(serviceREST).getServiceDefs(request); + } + + @Test + public void test4createServiceDef() throws Exception { + RangerServiceDef rangerServiceDef = rangerServiceDef(); + Mockito.when(serviceREST.createServiceDef(rangerServiceDef)).thenReturn(rangerServiceDef); + RangerServiceDef dbRangerServiceDef = publicAPIsv2.createServiceDef(rangerServiceDef); + Assert.assertNotNull(dbRangerServiceDef); + Assert.assertEquals(dbRangerServiceDef, rangerServiceDef); + Assert.assertEquals(dbRangerServiceDef.getId(), + rangerServiceDef.getId()); + Assert.assertEquals(dbRangerServiceDef.getName(), + rangerServiceDef.getName()); + Mockito.verify(serviceREST).createServiceDef(rangerServiceDef); + } + + @Test + public void test5updateServiceDef() throws Exception { + RangerServiceDef rangerServiceDef = rangerServiceDef(); + Mockito.when(serviceREST.updateServiceDef(rangerServiceDef)).thenReturn(rangerServiceDef); + RangerServiceDef dbRangerServiceDef = publicAPIsv2.updateServiceDef(rangerServiceDef, Id); + Assert.assertNotNull(dbRangerServiceDef); + Assert.assertEquals(dbRangerServiceDef, rangerServiceDef); + Assert.assertEquals(dbRangerServiceDef.getId(), + rangerServiceDef.getId()); + Assert.assertEquals(dbRangerServiceDef.getName(), + rangerServiceDef.getName()); + Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef); + } + + @Test + public void test6updateServiceDefByName() throws Exception { + RangerServiceDef rangerServiceDef = rangerServiceDef(); + String name = rangerServiceDef.getName(); + Mockito.when(serviceREST.getServiceDefByName(name)).thenReturn(rangerServiceDef); + Mockito.when(serviceREST.updateServiceDef(rangerServiceDef)).thenReturn(rangerServiceDef); + RangerServiceDef dbRangerServiceDef = publicAPIsv2.updateServiceDefByName(rangerServiceDef, name); + Assert.assertNotNull(dbRangerServiceDef); + Assert.assertEquals(dbRangerServiceDef, rangerServiceDef); + Assert.assertEquals(dbRangerServiceDef.getId(), + rangerServiceDef.getId()); + Assert.assertEquals(dbRangerServiceDef.getName(), + rangerServiceDef.getName()); + Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef); + Mockito.verify(serviceREST).getServiceDefByName(name); + } + + @Test + public void test7deleteServiceDef() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + Mockito.doNothing().when(serviceREST).deleteServiceDef(Id, request); + publicAPIsv2.deleteServiceDef(Id, request); + Mockito.verify(serviceREST).deleteServiceDef(Id, request); + } + + @Test + public void test8deleteServiceDefByName() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerServiceDef rangerServiceDef = rangerServiceDef(); + String name = rangerServiceDef.getName(); + Mockito.when(serviceREST.getServiceDefByName(name)).thenReturn(rangerServiceDef); + Mockito.doNothing().when(serviceREST).deleteServiceDef(rangerServiceDef.getId(), request); + publicAPIsv2.deleteServiceDefByName(name, request); + Mockito.verify(serviceREST).deleteServiceDef(rangerServiceDef.getId(), request); + Mockito.verify(serviceREST).getServiceDefByName(name); + } + + @Test + public void test9getService() throws Exception { + RangerService rangerService = rangerService(); + Mockito.when(serviceREST.getService(rangerService.getId())).thenReturn(rangerService); + RangerService dbRangerService = publicAPIsv2.getService(Id); + Assert.assertNotNull(dbRangerService); + Assert.assertEquals(dbRangerService, rangerService); + Assert.assertEquals(dbRangerService.getId(), + rangerService.getId()); + Assert.assertEquals(dbRangerService.getName(), + rangerService.getName()); + Mockito.verify(serviceREST).getService(Id); + } + + @Test + public void test10getServiceByName() throws Exception { + RangerService rangerService = rangerService(); + String name = rangerService.getName(); + Mockito.when(serviceREST.getServiceByName(name)).thenReturn(rangerService); + RangerService dbRangerService = publicAPIsv2.getServiceByName(name); + Assert.assertNotNull(dbRangerService); + Assert.assertEquals(dbRangerService, rangerService); + Assert.assertEquals(dbRangerService.getId(), + rangerService.getId()); + Assert.assertEquals(dbRangerService.getName(), + rangerService.getName()); + Mockito.verify(serviceREST).getServiceByName(name); + } + + @Test + public void test11searchServices() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + List<RangerService> servicesList = new ArrayList<RangerService>(); + RangerService service = rangerService(); + servicesList.add(service); + RangerServiceList serviceList = new RangerServiceList(servicesList); + Mockito.when(serviceREST.getServices(request)).thenReturn(serviceList); + List<RangerService> dbRangerServiceList = publicAPIsv2.searchServices(request); + Assert.assertNotNull(dbRangerServiceList); + Assert.assertEquals(dbRangerServiceList.size(), servicesList.size()); + Mockito.verify(serviceREST).getServices(request); + } + + @Test + public void test12createService() throws Exception { + RangerService rangerService = rangerService(); + Mockito.when(serviceREST.createService(rangerService)).thenReturn(rangerService); + RangerService dbRangerService = publicAPIsv2.createService(rangerService); + Assert.assertNotNull(dbRangerService); + Assert.assertEquals(dbRangerService, rangerService); + Assert.assertEquals(dbRangerService.getId(), + rangerService.getId()); + Assert.assertEquals(dbRangerService.getName(), + rangerService.getName()); + Mockito.verify(serviceREST).createService(rangerService); + } + + @Test + public void test13updateService() throws Exception { + RangerService rangerService = rangerService(); + Mockito.when(serviceREST.updateService(rangerService)).thenReturn(rangerService); + RangerService dbRangerService = publicAPIsv2.updateService(rangerService, Id); + Assert.assertNotNull(dbRangerService); + Assert.assertEquals(dbRangerService, rangerService); + Assert.assertEquals(dbRangerService.getId(), + rangerService.getId()); + Assert.assertEquals(dbRangerService.getName(), + rangerService.getName()); + Mockito.verify(serviceREST).updateService(rangerService); + } + + @Test + public void test14updateServiceByName() throws Exception { + RangerService rangerService = rangerService(); + String name = rangerService.getName(); + Mockito.when(serviceREST.getServiceByName(name)).thenReturn(rangerService); + Mockito.when(serviceREST.updateService(rangerService)).thenReturn(rangerService); + RangerService dbRangerService = publicAPIsv2.updateServiceByName(rangerService, name); + Assert.assertNotNull(dbRangerService); + Assert.assertEquals(dbRangerService, rangerService); + Assert.assertEquals(dbRangerService.getId(), + rangerService.getId()); + Assert.assertEquals(dbRangerService.getName(), + rangerService.getName()); + Mockito.verify(serviceREST).updateService(rangerService); + Mockito.verify(serviceREST).getServiceByName(name); + } + + @Test + public void test15deleteService() throws Exception { + Mockito.doNothing().when(serviceREST).deleteService(Id); + publicAPIsv2.deleteService(Id); + Mockito.verify(serviceREST).deleteService(Id); + } + + @Test + public void test16deleteServiceByName() throws Exception { + RangerService rangerService = rangerService(); + String name = rangerService.getName(); + Mockito.when(serviceREST.getServiceByName(name)).thenReturn(rangerService); + Mockito.doNothing().when(serviceREST).deleteService(rangerService.getId()); + publicAPIsv2.deleteServiceByName(name); + Mockito.verify(serviceREST).deleteService(rangerService.getId()); + Mockito.verify(serviceREST).getServiceByName(name); + } + + @Test + public void test17getPolicy() throws Exception { + RangerPolicy rangerPolicy = rangerPolicy(); + Mockito.when(serviceREST.getPolicy(rangerPolicy.getId())).thenReturn(rangerPolicy); + RangerPolicy dbRangerPolicy = publicAPIsv2.getPolicy(Id); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).getPolicy(Id); + } + + @Test + public void test18getPolicyByName() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerPolicy rangerPolicy = rangerPolicy(); + RangerService rangerService = rangerService(); + String serviceName = rangerService.getName(); + String policyName = rangerPolicy.getName(); + List<RangerPolicy> policies = new ArrayList<RangerPolicy>(); + policies.add(rangerPolicy); + Mockito.when(serviceREST.getPolicies((SearchFilter) Mockito.anyObject())).thenReturn(policies); + RangerPolicy dbRangerPolicy = publicAPIsv2.getPolicyByName(serviceName, policyName, request); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).getPolicies((SearchFilter) Mockito.anyObject()); + } + + @Test + public void test19searchPolicies() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + List<RangerPolicy> policiesList = new ArrayList<RangerPolicy>(); + RangerService service = rangerService(); + String serviceName = service.getName(); + RangerPolicy rangerPolicy = rangerPolicy(); + policiesList.add(rangerPolicy); + RangerPolicyList policyList = new RangerPolicyList(policiesList); + Mockito.when(serviceREST.getServicePoliciesByName(serviceName, request)).thenReturn(policyList); + List<RangerPolicy> dbRangerPolicyList = publicAPIsv2.searchPolicies(serviceName, request); + Assert.assertNotNull(dbRangerPolicyList); + Assert.assertEquals(dbRangerPolicyList.size(), policiesList.size()); + Mockito.verify(serviceREST).getServicePoliciesByName(serviceName, request); + } + + @Test + public void test20createPolicy() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerPolicy rangerPolicy = rangerPolicy(); + Mockito.when(serviceREST.createPolicy(rangerPolicy, request)).thenReturn(rangerPolicy); + RangerPolicy dbRangerPolicy = publicAPIsv2.createPolicy(rangerPolicy, request); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).createPolicy(rangerPolicy, request); + } + + @Test + public void test21applyPolicy() throws Exception { + RangerPolicy rangerPolicy = rangerPolicy(); + Mockito.when(serviceREST.applyPolicy(rangerPolicy)).thenReturn(rangerPolicy); + RangerPolicy dbRangerPolicy = publicAPIsv2.applyPolicy(rangerPolicy); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).applyPolicy(rangerPolicy); + } + + @Test + public void test22updatePolicy() throws Exception { + RangerPolicy rangerPolicy = rangerPolicy(); + Mockito.when(serviceREST.updatePolicy(rangerPolicy)).thenReturn(rangerPolicy); + RangerPolicy dbRangerPolicy = publicAPIsv2.updatePolicy(rangerPolicy, Id); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).updatePolicy(rangerPolicy); + } + + @Test + public void test23updatePolicyByName() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerPolicy rangerPolicy = rangerPolicy(); + String policyName = rangerPolicy.getName(); + RangerService rangerService = rangerService(); + String serviceName = rangerService.getName(); + List<RangerPolicy> policies = new ArrayList<RangerPolicy>(); + policies.add(rangerPolicy); + Mockito.when(serviceREST.getPolicies((SearchFilter) Mockito.anyObject())).thenReturn(policies); + Mockito.when(serviceREST.updatePolicy(rangerPolicy)).thenReturn(rangerPolicy); + RangerPolicy dbRangerPolicy = publicAPIsv2.updatePolicyByName(rangerPolicy, serviceName, policyName, request); + Assert.assertNotNull(dbRangerPolicy); + Assert.assertEquals(dbRangerPolicy, rangerPolicy); + Assert.assertEquals(dbRangerPolicy.getId(), + rangerPolicy.getId()); + Assert.assertEquals(dbRangerPolicy.getName(), + rangerPolicy.getName()); + Mockito.verify(serviceREST).updatePolicy(rangerPolicy); + Mockito.verify(serviceREST).getPolicies((SearchFilter) Mockito.anyObject()); + } + + @Test + public void test24deletePolicy() throws Exception { + Mockito.doNothing().when(serviceREST).deletePolicy(Id); + publicAPIsv2.deletePolicy(Id); + Mockito.verify(serviceREST).deletePolicy(Id); + } + + @Test + public void test25deletePolicyByName() throws Exception { + HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + RangerPolicy rangerPolicy = rangerPolicy(); + String policyName = rangerPolicy.getName(); + RangerService rangerService = rangerService(); + String serviceName = rangerService.getName(); + List<RangerPolicy> policies = new ArrayList<RangerPolicy>(); + policies.add(rangerPolicy); + Mockito.when(serviceREST.getPolicies((SearchFilter) Mockito.anyObject())).thenReturn(policies); + Mockito.doNothing().when(serviceREST).deletePolicy(Id); + publicAPIsv2.deletePolicyByName(serviceName, policyName, request); + Mockito.verify(serviceREST).getPolicies((SearchFilter) Mockito.anyObject()); + Mockito.verify(serviceREST).deletePolicy(Id); + } +}