Repository: incubator-ranger Updated Branches: refs/heads/master a15af08ca -> ccd0badd9
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/ccd0badd/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java ---------------------------------------------------------------------- diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java deleted file mode 100644 index d8d61d4..0000000 --- a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * 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.plugin.store; - -import static org.junit.Assert.*; - -import java.io.*; -import java.util.*; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import org.apache.commons.collections.CollectionUtils; -import org.apache.ranger.authorization.hadoop.config.RangerConfiguration; -import org.apache.ranger.plugin.model.*; -import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; -import org.apache.ranger.plugin.store.file.ServiceFileStore; -import org.apache.ranger.plugin.store.file.TagFileStore; -import org.apache.ranger.plugin.util.SearchFilter; -import org.apache.ranger.plugin.util.ServiceTags; -import org.junit.BeforeClass; -import org.junit.AfterClass; -import org.junit.Test; - - -public class TestTagStore { - static TagStore tagStore = null; - static TagValidator validator = null; - static RangerServiceDef serviceDef = null; - static RangerService service = null; - static SearchFilter filter = null; - - static final String serviceDefJsonFile = "/admin/service-defs/test-hive-servicedef.json"; - static final String serviceName = "tag-unit-test-TestTagStore"; - static File tagStoreDir = null; - - static Gson gsonBuilder = null; - - @BeforeClass - public static void setupTest() throws Exception { - - String textTemplate = "<configuration>\n" + - " <property>\n" + - " <name>ranger.tag.store.file.dir</name>\n" + - " <value>%s</value>\n" + - " </property>\n" + - " <property>\n" + - " <name>ranger.service.store.file.dir</name>\n" + - " <value>%s</value>\n" + - " </property>\n" + - "</configuration>\n"; - - File file = File.createTempFile("ranger-admin-test-site", ".xml"); - file.deleteOnExit(); - - tagStoreDir = File.createTempFile("tagStore", "dir"); - - if (tagStoreDir.exists()) { - tagStoreDir.delete(); - } - - tagStoreDir.mkdirs(); - - String tagStoreDirName = tagStoreDir.getAbsolutePath(); - - String text = String.format(textTemplate, tagStoreDirName, tagStoreDirName); - - FileOutputStream outStream = new FileOutputStream(file); - OutputStreamWriter writer = new OutputStreamWriter(outStream); - writer.write(text); - writer.close(); - - RangerConfiguration config = RangerConfiguration.getInstance(); - config.addResource(new org.apache.hadoop.fs.Path(file.toURI())); - - ServiceStore svcStore = new ServiceFileStore(); - svcStore.init(); - - tagStore = TagFileStore.getInstance(); - tagStore.init(); - tagStore.setServiceStore(svcStore); - - validator = new TagValidator(); - validator.setTagStore(tagStore); - - gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z") - .setPrettyPrinting() - .create(); - - InputStream inStream = TestTagStore.class.getResourceAsStream(serviceDefJsonFile); - InputStreamReader reader = new InputStreamReader(inStream); - - serviceDef = gsonBuilder.fromJson(reader, RangerServiceDef.class); - - service = svcStore.createService(new RangerService(serviceDef.getName(), serviceName, serviceName, null, null)); - - reader.close(); - inStream.close(); - - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - if (tagStoreDir != null) { - try { - File[] filesInTagStoreDir = tagStoreDir.listFiles(); - if (filesInTagStoreDir != null) { - for (File file : filesInTagStoreDir) { - if (file.isFile()) { - file.delete(); - } - } - } - tagStoreDir.delete(); - tagStoreDir = null; - } catch (Throwable t) { - // Ignore - } - } - } - - @Test - public void testTagStore_tag() throws Exception { - - String tagType = "ssn"; - String newTagType = "new-ssn"; - - List<RangerTag> tags = tagStore.getTags(filter); - - int initTagCount = tags == null ? 0 : tags.size(); - - RangerTag tag = new RangerTag(tagType, new HashMap<String, String>()); - tag.setGuid("GUID_TAG_TEST"); - - validator.preCreateTag(tag); - RangerTag createdTag = tagStore.createTag(tag); - - assertNotNull("createTag() failed", createdTag); - assertTrue("createTag() type mismatch", createdTag.getType().equals(tag.getType())); - assertTrue("createTag() GUID mismatch", createdTag.getGuid().equals(tag.getGuid())); - - tags = tagStore.getTags(filter); - - assertEquals("createTag() failed", initTagCount + 1, tags == null ? 0 : tags.size()); - - createdTag.setType(newTagType); - validator.preUpdateTag(createdTag.getId(), createdTag); - RangerTag updatedTag = tagStore.updateTag(createdTag); - - tag = tagStore.getTag(updatedTag.getId()); - - assertTrue("updateTag() type mismatch", tag.getType().equals(updatedTag.getType())); - assertTrue("updatedTag() GUID mismatch", tag.getGuid().equals(updatedTag.getGuid())); - - validator.preDeleteTag(createdTag.getId()); - tagStore.deleteTag(createdTag.getId()); - - tags = tagStore.getTags(filter); - - assertEquals("deleteTag() failed", initTagCount, tags == null ? 0 : tags.size()); - - // Try deleting it again - try { - validator.preDeleteTag(createdTag.getId()); - tagStore.deleteTag(createdTag.getId()); - assertTrue("deleteTag() failed. Deleted tag again successfully? ", false); - } catch (Exception exception) { - assertTrue(true); - } - } - - @Test - public void testTagStore_serviceresource() throws Exception { - - String guid = "GUID_SERVICERESOURCE_TEST"; - String newGuid = "NEW_GUID_SERVICERESOURCE_TEST"; - - Map<String, RangerPolicyResource> resourceElements = new HashMap<String, RangerPolicyResource>(); - - RangerPolicyResource resourceElement = new RangerPolicyResource(); - resourceElement.setValue("*"); - resourceElements.put("database", resourceElement); - - List<RangerServiceResource> serviceResources = tagStore.getServiceResources(filter); - - int initServiceResourceCount = serviceResources == null ? 0 : serviceResources.size(); - - RangerServiceResource serviceResource = new RangerServiceResource(); - serviceResource.setServiceName(serviceName); - serviceResource.setResourceElements(resourceElements); - serviceResource.setGuid(guid); - - validator.preCreateServiceResource(serviceResource); - RangerServiceResource createdServiceResource = tagStore.createServiceResource(serviceResource); - - assertNotNull("createServiceResource() failed", createdServiceResource); - assertTrue("createServiceResource() GUID mismatch", createdServiceResource.getGuid().equals(createdServiceResource.getGuid())); - - serviceResources = tagStore.getServiceResources(filter); - - assertEquals("createServiceResource() failed", initServiceResourceCount + 1, serviceResources == null ? 0 : serviceResources.size()); - - createdServiceResource.setGuid(newGuid); - validator.preUpdateServiceResource(createdServiceResource.getId(), createdServiceResource); - RangerServiceResource updatedServiceResource = tagStore.updateServiceResource(createdServiceResource); - - serviceResource = tagStore.getServiceResource(updatedServiceResource.getId()); - - assertTrue("updatedServiceResource() GUID mismatch", serviceResource.getGuid().equals(updatedServiceResource.getGuid())); - - validator.preDeleteServiceResource(updatedServiceResource.getId()); - tagStore.deleteServiceResource(updatedServiceResource.getId()); - - serviceResources = tagStore.getServiceResources(filter); - - assertEquals("deleteServiceResource() failed", initServiceResourceCount, serviceResources == null ? 0 : serviceResources.size()); - - // Try deleting it again - try { - validator.preDeleteServiceResource(createdServiceResource.getId()); - tagStore.deleteServiceResource(createdServiceResource.getId()); - assertTrue("deleteServiceResource() failed. Deleted serviceResource again successfully? ", false); - } catch (Exception exception) { - assertTrue(true); - } - } - - @Test - public void testTagStore_tagResourceMap() throws Exception { - - String tagType = "ssn"; - - String resourceGuid = "GUID_SERVICERESOURCE_TEST"; - String tagGuid = "GUID_TAG_TEST"; - - List<RangerTag> tags = tagStore.getTags(filter); - - int initTagCount = tags == null ? 0 : tags.size(); - - RangerTag tag = new RangerTag(tagType, new HashMap<String, String>()); - tag.setGuid(tagGuid); - - validator.preCreateTag(tag); - RangerTag createdTag = tagStore.createTag(tag); - - assertNotNull("createTag() failed", createdTag); - tags = tagStore.getTags(filter); - - assertEquals("createTag() failed", initTagCount + 1, tags == null ? 0 : tags.size()); - - Map<String, RangerPolicyResource> resourceElements = new HashMap<String, RangerPolicyResource>(); - - RangerPolicyResource resource = new RangerPolicyResource(); - resource.setValue("*"); - resourceElements.put("database", resource); - - List<RangerServiceResource> serviceResources = tagStore.getServiceResources(filter); - - int initServiceResourceCount = serviceResources == null ? 0 : serviceResources.size(); - - RangerServiceResource serviceResource = new RangerServiceResource(); - serviceResource.setServiceName(serviceName); - serviceResource.setResourceElements(resourceElements); - - serviceResource.setGuid(resourceGuid); - validator.preCreateServiceResource(serviceResource); - RangerServiceResource createdServiceResource = tagStore.createServiceResource(serviceResource); - - assertNotNull("createServiceResource() failed", createdServiceResource); - - serviceResources = tagStore.getServiceResources(filter); - - assertEquals("createServiceResource() failed", initServiceResourceCount + 1, serviceResources == null ? 0 : serviceResources.size()); - - // Now create map - - RangerTagResourceMap tagResourceMap = validator.preCreateTagResourceMap(tagGuid, resourceGuid); - - RangerTagResourceMap createdTagResourceMap = tagStore.createTagResourceMap(tagResourceMap); - - assertNotNull("createTagResourceMap() failed", createdTagResourceMap); - - ServiceTags serviceTags = tagStore.getServiceTagsIfUpdated(serviceName, -1L); - List<RangerServiceResource> resourceList = serviceTags.getServiceResources(); - - assertTrue("No tagged resources found!", CollectionUtils.isNotEmpty(resourceList) && CollectionUtils.size(resourceList) == 1); - - // Delete all created entities - RangerTagResourceMap map = validator.preDeleteTagResourceMap(tagGuid, resourceGuid); - tagStore.deleteTagResourceMap(map.getId()); - - validator.preDeleteServiceResource(createdServiceResource.getId()); - tagStore.deleteServiceResource(createdServiceResource.getId()); - - // private tags are deleted when TagResourceMap is deleted.. No need for deleting it here - //validator.preDeleteTag(createdTag.getId()); - //tagStore.deleteTag(createdTag.getId()); - - } -} - - - http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/ccd0badd/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index 3841785..dfe927f 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -1101,8 +1101,10 @@ public class ServiceDBStore extends AbstractServiceStore { } } - @Override - public void deleteServiceDef(Long serviceDefId) throws Exception { + public void deleteServiceDef(Long serviceDefId, Boolean forceDelete) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ", " + forceDelete + ")"); + } UserSessionBase session = ContextUtil.getCurrentUserSession(); if (session == null) { @@ -1117,14 +1119,6 @@ public class ServiceDBStore extends AbstractServiceStore { MessageEnums.OPER_NO_PERMISSION); } - deleteServiceDef(serviceDefId, false); - } - - public void deleteServiceDef(Long serviceDefId, Boolean forceDelete) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("==> ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ")"); - } - RangerServiceDef serviceDef = getServiceDef(serviceDefId); if(serviceDef == null) { throw restErrorUtil.createRESTException("No Service Definiton found for Id: " + serviceDefId, @@ -1212,7 +1206,7 @@ public class ServiceDBStore extends AbstractServiceStore { postDelete(serviceDef); if (LOG.isDebugEnabled()) { - LOG.debug("<== ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ")"); + LOG.debug("<== ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ", " + forceDelete + ")"); } }