Repository: ambari Updated Branches: refs/heads/trunk 675590bf5 -> 16911c85e
AMBARI-6318 - Views : Admin - Add Permission Resource Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/16911c85 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/16911c85 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/16911c85 Branch: refs/heads/trunk Commit: 16911c85e18dfc337fa2be88b37214a1d5074e22 Parents: 675590b Author: tbeerbower <[email protected]> Authored: Mon Jun 30 11:33:52 2014 -0400 Committer: tbeerbower <[email protected]> Committed: Wed Jul 2 09:34:35 2014 -0400 ---------------------------------------------------------------------- .../resources/PermissionResourceDefinition.java | 58 +++++++ .../resources/ResourceInstanceFactoryImpl.java | 4 + .../server/api/services/PermissionService.java | 149 ++++++++++++++++++ .../internal/DefaultProviderModule.java | 2 + .../internal/PermissionResourceProvider.java | 153 +++++++++++++++++++ .../ambari/server/controller/spi/Resource.java | 4 +- .../PermissionResourceDefinitionTest.java | 52 +++++++ .../api/services/permissionServiceTest.java | 106 +++++++++++++ .../PermissionResourceProviderTest.java | 82 ++++++++++ 9 files changed, 609 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/api/resources/PermissionResourceDefinition.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/PermissionResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/PermissionResourceDefinition.java new file mode 100644 index 0000000..56127b9 --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/PermissionResourceDefinition.java @@ -0,0 +1,58 @@ +/** + * 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.ambari.server.api.resources; + +import org.apache.ambari.server.controller.spi.Resource; + +import java.util.Collections; +import java.util.Set; + + +/** + * Permission resource definition. + */ +public class PermissionResourceDefinition extends BaseResourceDefinition { + + // ----- Constructors ------------------------------------------------------ + + /** + * Construct a permission resource definition. + */ + public PermissionResourceDefinition() { + super(Resource.Type.Permission); + } + + + // ----- ResourceDefinition ------------------------------------------------ + + @Override + public String getPluralName() { + return "permissions"; + } + + @Override + public String getSingularName() { + return "permission"; + } + + @Override + public Set<SubResourceDefinition> getSubResourceDefinitions() { + return Collections.emptySet(); + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java index 9bf589f..2a87c4f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java @@ -230,6 +230,10 @@ public class ResourceInstanceFactoryImpl implements ResourceInstanceFactory { resourceDefinition = new HostComponentProcessResourceDefinition(); break; + case Permission: + resourceDefinition = new PermissionResourceDefinition(); + break; + default: throw new IllegalArgumentException("Unsupported resource type: " + type); } http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/api/services/PermissionService.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/PermissionService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/PermissionService.java new file mode 100644 index 0000000..594caba --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/PermissionService.java @@ -0,0 +1,149 @@ +/** + * 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.ambari.server.api.services; + +import org.apache.ambari.server.api.resources.ResourceInstance; +import org.apache.ambari.server.controller.spi.Resource; + +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; +import java.util.Collections; + + +/** + * Service responsible for permission resource requests. + */ +@Path("/permissions/") +public class PermissionService extends BaseService { + + /** + * Handles: GET /permissions/{permissionID} + * Get a specific permission. + * + * @param headers http headers + * @param ui uri info + * @param permissionId permission id + * + * @return permission instance representation + */ + @GET + @Path("{permissionId}") + @Produces("text/plain") + public Response getPermission(@Context HttpHeaders headers, @Context UriInfo ui, + @PathParam("permissionId") String permissionId) { + + return handleRequest(headers, null, ui, Request.Type.GET, createPermissionResource(permissionId)); + } + + /** + * Handles: GET /permissions + * Get all permissions. + * + * @param headers http headers + * @param ui uri info + * + * @return permission collection resource representation + */ + @GET + @Produces("text/plain") + public Response getPermissions(@Context HttpHeaders headers, @Context UriInfo ui) { + return handleRequest(headers, null, ui, Request.Type.GET, createPermissionResource(null)); + } + + /** + * Handles: POST /permissions/{permissionID} + * Create a specific permission. + * + * @param headers http headers + * @param ui uri info + * @param permissionId permission id + * + * @return information regarding the created permission + */ + @POST + @Path("{permissionId}") + @Produces("text/plain") + public Response createPermission(String body, @Context HttpHeaders headers, @Context UriInfo ui, + @PathParam("permissionId") String permissionId) { + + return handleRequest(headers, body, ui, Request.Type.POST, createPermissionResource(permissionId)); + } + + /** + * Handles: PUT /permissions/{permissionID} + * Update a specific permission. + * + * @param headers http headers + * @param ui uri info + * @param permissionId permission id + * + * @return information regarding the updated permission + */ + @PUT + @Path("{permissionId}") + @Produces("text/plain") + public Response updatePermission(String body, @Context HttpHeaders headers, @Context UriInfo ui, + @PathParam("permissionId") String permissionId) { + + return handleRequest(headers, body, ui, Request.Type.PUT, createPermissionResource(permissionId)); + } + + /** + * Handles: DELETE /permissions/{permissionID} + * Delete a specific permission. + * + * @param headers http headers + * @param ui uri info + * @param permissionId permission id + * + * @return information regarding the deleted permission + */ + @DELETE + @Path("{permissionId}") + @Produces("text/plain") + public Response deletePermission(@Context HttpHeaders headers, @Context UriInfo ui, + @PathParam("permissionId") String permissionId) { + + return handleRequest(headers, null, ui, Request.Type.DELETE, createPermissionResource(permissionId)); + } + + + // ----- helper methods ---------------------------------------------------- + + /** + * Create a permission resource. + * + * @param permissionId permission name + * + * @return a permission resource instance + */ + protected ResourceInstance createPermissionResource(String permissionId) { + return createResource(Resource.Type.Permission, + Collections.singletonMap(Resource.Type.Permission, permissionId)); + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java index 923202c..fa1aa67 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java @@ -69,6 +69,8 @@ public class DefaultProviderModule extends AbstractProviderModule { return new ViewInstanceResourceProvider(); case StackServiceComponentDependency: return new StackDependencyResourceProvider(propertyIds, keyPropertyIds); + case Permission: + return new PermissionResourceProvider(); default: return AbstractControllerResourceProvider.getResourceProvider(type, propertyIds, keyPropertyIds, managementController); http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PermissionResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PermissionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PermissionResourceProvider.java new file mode 100644 index 0000000..faf692f --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PermissionResourceProvider.java @@ -0,0 +1,153 @@ +/** + * 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.ambari.server.controller.internal; + +import org.apache.ambari.server.controller.spi.NoSuchParentResourceException; +import org.apache.ambari.server.controller.spi.NoSuchResourceException; +import org.apache.ambari.server.controller.spi.Predicate; +import org.apache.ambari.server.controller.spi.Request; +import org.apache.ambari.server.controller.spi.RequestStatus; +import org.apache.ambari.server.controller.spi.Resource; +import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException; +import org.apache.ambari.server.controller.spi.SystemException; +import org.apache.ambari.server.controller.spi.UnsupportedPropertyException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * Resource provider for permission instances. + */ +public class PermissionResourceProvider extends AbstractResourceProvider { + /** + * Permission property id constants. + */ + public static final String PERMISSION_ID_PROPERTY_ID = "PermissionInfo/permission_id"; + public static final String PERMISSION_NAME_PROPERTY_ID = "PermissionInfo/permission_name"; + public static final String RESOURCE_NAME_PROPERTY_ID = "PermissionInfo/resource_name"; + + + /** + * The key property ids for a permission resource. + */ + private static Map<Resource.Type, String> keyPropertyIds = new HashMap<Resource.Type, String>(); + static { + keyPropertyIds.put(Resource.Type.Permission, PERMISSION_ID_PROPERTY_ID); + } + + /** + * The property ids for a permission resource. + */ + private static Set<String> propertyIds = new HashSet<String>(); + static { + propertyIds.add(PERMISSION_ID_PROPERTY_ID); + propertyIds.add(PERMISSION_NAME_PROPERTY_ID); + propertyIds.add(RESOURCE_NAME_PROPERTY_ID); + } + + + /** + * Builtin permissions + */ + private static final Set<Resource> builtinPermissions = new HashSet<Resource>(); + + static { + // AMBARI.ADMIN + Resource resource = new ResourceImpl(Resource.Type.Permission); + resource.setProperty(PERMISSION_ID_PROPERTY_ID, 0); + resource.setProperty(PERMISSION_NAME_PROPERTY_ID, "ADMIN"); + resource.setProperty(RESOURCE_NAME_PROPERTY_ID, "AMBARI"); + builtinPermissions.add(resource); + + // CLUSTER.READ + resource = new ResourceImpl(Resource.Type.Permission); + resource.setProperty(PERMISSION_ID_PROPERTY_ID, 1); + resource.setProperty(PERMISSION_NAME_PROPERTY_ID, "READ"); + resource.setProperty(RESOURCE_NAME_PROPERTY_ID, "CLUSTER"); + builtinPermissions.add(resource); + + // CLUSTER.OPERATE + resource = new ResourceImpl(Resource.Type.Permission); + resource.setProperty(PERMISSION_ID_PROPERTY_ID, 2); + resource.setProperty(PERMISSION_NAME_PROPERTY_ID, "OPERATE"); + resource.setProperty(RESOURCE_NAME_PROPERTY_ID, "CLUSTER"); + builtinPermissions.add(resource); + + // CLUSTER.OPERATE + resource = new ResourceImpl(Resource.Type.Permission); + resource.setProperty(PERMISSION_ID_PROPERTY_ID, 3); + resource.setProperty(PERMISSION_NAME_PROPERTY_ID, "USE"); + resource.setProperty(RESOURCE_NAME_PROPERTY_ID, "VIEW"); + builtinPermissions.add(resource); + } + + + // ----- Constructors ------------------------------------------------------ + + /** + * Construct a permission resource provider. + */ + public PermissionResourceProvider() { + super(propertyIds, keyPropertyIds); + } + + + // ----- ResourceProvider -------------------------------------------------- + + @Override + public RequestStatus createResources(Request request) + throws SystemException, UnsupportedPropertyException, + ResourceAlreadyExistsException, NoSuchParentResourceException { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public Set<Resource> getResources(Request request, Predicate predicate) + throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException { + // TODO : add custom permissions. + return new HashSet<Resource>(builtinPermissions); + } + + @Override + public RequestStatus updateResources(Request request, Predicate predicate) + throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public RequestStatus deleteResources(Predicate predicate) + throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public Map<Resource.Type, String> getKeyPropertyIds() { + return keyPropertyIds; + } + + + // ----- AbstractResourceProvider ------------------------------------------ + + @Override + protected Set<String> getPKPropertyIds() { + return new HashSet<String>(keyPropertyIds.values()); + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java index 363ee0d..b70f335 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java @@ -109,7 +109,8 @@ public interface Resource { ViewVersion, ViewInstance, Blueprint, - HostComponentProcess; + HostComponentProcess, + Permission; /** * Get the {@link Type} that corresponds to this InternalType. @@ -180,6 +181,7 @@ public interface Resource { public static final Type ViewInstance = InternalType.ViewInstance.getType(); public static final Type Blueprint = InternalType.Blueprint.getType(); public static final Type HostComponentProcess = InternalType.HostComponentProcess.getType(); + public static final Type Permission = InternalType.Permission.getType(); /** * The type name. http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/test/java/org/apache/ambari/server/api/resources/PermissionResourceDefinitionTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/resources/PermissionResourceDefinitionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/resources/PermissionResourceDefinitionTest.java new file mode 100644 index 0000000..0ad3b47 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/api/resources/PermissionResourceDefinitionTest.java @@ -0,0 +1,52 @@ +/** + * 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.ambari.server.api.resources; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Set; + +/** + * PermissionResourceDefinition tests. + */ +public class PermissionResourceDefinitionTest { + @Test + public void testGetPluralName() throws Exception { + PermissionResourceDefinition permissionResourceDefinition = new PermissionResourceDefinition(); + Assert.assertEquals("permissions", permissionResourceDefinition.getPluralName()); + } + + @Test + public void testGetSingularName() throws Exception { + PermissionResourceDefinition permissionResourceDefinition = new PermissionResourceDefinition(); + Assert.assertEquals("permission", permissionResourceDefinition.getSingularName()); + } + + @Test + public void testGetSubResourceDefinitions() throws Exception { + PermissionResourceDefinition permissionResourceDefinition = new PermissionResourceDefinition(); + Set<SubResourceDefinition> subResourceDefinitions = permissionResourceDefinition.getSubResourceDefinitions (); + + Assert.assertEquals(0, subResourceDefinitions.size()); + } +} + + + http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/test/java/org/apache/ambari/server/api/services/permissionServiceTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/permissionServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/permissionServiceTest.java new file mode 100644 index 0000000..1d3efac --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/permissionServiceTest.java @@ -0,0 +1,106 @@ +/** + * 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.ambari.server.api.services; + +import org.apache.ambari.server.api.resources.ResourceInstance; +import org.apache.ambari.server.api.services.parsers.RequestBodyParser; +import org.apache.ambari.server.api.services.serializers.ResultSerializer; + +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.UriInfo; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; + + +/** + * Unit tests for PermissionService. + */ +public class PermissionServiceTest extends BaseServiceTest { + + + public List<ServiceTestInvocation> getTestInvocations() throws Exception { + List<ServiceTestInvocation> listInvocations = new ArrayList<ServiceTestInvocation>(); + + //getPermission + PermissionService service = new TestPermissionService("id"); + Method m = service.getClass().getMethod("getPermission", HttpHeaders.class, UriInfo.class, String.class); + Object[] args = new Object[] {getHttpHeaders(), getUriInfo(), "id"}; + listInvocations.add(new ServiceTestInvocation(Request.Type.GET, service, m, args, null)); + + //getPermissions + service = new TestPermissionService(null); + m = service.getClass().getMethod("getPermissions", HttpHeaders.class, UriInfo.class); + args = new Object[] {getHttpHeaders(), getUriInfo()}; + listInvocations.add(new ServiceTestInvocation(Request.Type.GET, service, m, args, null)); + + //createPermission + service = new TestPermissionService("id"); + m = service.getClass().getMethod("createPermission", String.class, HttpHeaders.class, UriInfo.class, String.class); + args = new Object[] {"body", getHttpHeaders(), getUriInfo(), "id"}; + listInvocations.add(new ServiceTestInvocation(Request.Type.POST, service, m, args, "body")); + + //createPermission + service = new TestPermissionService("id"); + m = service.getClass().getMethod("updatePermission", String.class, HttpHeaders.class, UriInfo.class, String.class); + args = new Object[] {"body", getHttpHeaders(), getUriInfo(), "id"}; + listInvocations.add(new ServiceTestInvocation(Request.Type.PUT, service, m, args, "body")); + + //deletePermission + service = new TestPermissionService("id"); + m = service.getClass().getMethod("deletePermission", HttpHeaders.class, UriInfo.class, String.class); + args = new Object[] {getHttpHeaders(), getUriInfo(), "id"}; + listInvocations.add(new ServiceTestInvocation(Request.Type.DELETE, service, m, args, null)); + + return listInvocations; + } + + + private class TestPermissionService extends PermissionService { + private String id; + + private TestPermissionService(String id) { + this.id = id; + } + + @Override + protected ResourceInstance createPermissionResource(String id) { + assertEquals(this.id, id); + return getTestResource(); + } + + @Override + RequestFactory getRequestFactory() { + return getTestRequestFactory(); + } + + @Override + protected RequestBodyParser getBodyParser() { + return getTestBodyParser(); + } + + @Override + protected ResultSerializer getResultSerializer() { + return getTestResultSerializer(); + } + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/16911c85/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PermissionResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PermissionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PermissionResourceProviderTest.java new file mode 100644 index 0000000..3c95207 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PermissionResourceProviderTest.java @@ -0,0 +1,82 @@ +/** + * 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.ambari.server.controller.internal; + +import org.apache.ambari.server.controller.spi.Request; +import org.apache.ambari.server.controller.spi.Resource; +import org.apache.ambari.server.controller.utilities.PropertyHelper; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Set; + +import static org.easymock.EasyMock.createNiceMock; + +/** + * PermissionResourceProvider tests. + */ +public class PermissionResourceProviderTest { + @Test + public void testCreateResources() throws Exception { + PermissionResourceProvider provider = new PermissionResourceProvider(); + + Request request = createNiceMock(Request.class); + + try { + provider.createResources(request); + Assert.fail("expected UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + } + + @Test + public void testGetResources() throws Exception { + PermissionResourceProvider provider = new PermissionResourceProvider(); + Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), null); + // built in permissions + Assert.assertEquals(4, resources.size()); + } + + @Test + public void testUpdateResources() throws Exception { + PermissionResourceProvider provider = new PermissionResourceProvider(); + + Request request = createNiceMock(Request.class); + + try { + provider.updateResources(request, null); + Assert.fail("expected UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + } + + @Test + public void testDeleteResources() throws Exception { + PermissionResourceProvider provider = new PermissionResourceProvider(); + + try { + provider.deleteResources(null); + Assert.fail("expected UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + } +}
