| /** |
| * 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.Resource; |
| import org.apache.ambari.server.controller.utilities.PropertyHelper; |
| import org.apache.ambari.server.orm.dao.PermissionDAO; |
| import org.apache.ambari.server.orm.entities.PermissionEntity; |
| import org.apache.ambari.server.orm.entities.ResourceTypeEntity; |
| import org.apache.ambari.server.orm.entities.ViewEntity; |
| import org.apache.ambari.server.view.ViewRegistry; |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| |
| import java.util.Collections; |
| import java.util.LinkedList; |
| import java.util.List; |
| import java.util.Set; |
| |
| import static org.easymock.EasyMock.createMock; |
| import static org.easymock.EasyMock.createNiceMock; |
| import static org.easymock.EasyMock.createStrictMock; |
| import static org.easymock.EasyMock.expect; |
| import static org.easymock.EasyMock.replay; |
| import static org.easymock.EasyMock.reset; |
| import static org.easymock.EasyMock.verify; |
| |
| /** |
| * ViewPermissionResourceProvider tests. |
| */ |
| public class ViewPermissionResourceProviderTest { |
| private final static PermissionDAO dao = createStrictMock(PermissionDAO.class); |
| private static final ViewRegistry viewRegistry = createMock(ViewRegistry.class); |
| |
| static { |
| ViewRegistry.initInstance(viewRegistry); |
| } |
| |
| @BeforeClass |
| public static void initClass() { |
| ViewPermissionResourceProvider.init(dao); |
| } |
| |
| @Before |
| public void resetGlobalMocks() { |
| reset(dao, viewRegistry); |
| } |
| |
| @Test |
| public void testGetResources() throws Exception { |
| List<PermissionEntity> permissionEntities = new LinkedList<PermissionEntity>(); |
| |
| PermissionEntity permissionEntity = createNiceMock(PermissionEntity.class); |
| PermissionEntity viewUsePermissionEntity = createNiceMock(PermissionEntity.class); |
| ResourceTypeEntity resourceTypeEntity = createNiceMock(ResourceTypeEntity.class); |
| ViewEntity viewEntity = createMock(ViewEntity.class); |
| |
| permissionEntities.add(permissionEntity); |
| |
| expect(dao.findViewUsePermission()).andReturn(viewUsePermissionEntity); |
| expect(dao.findAll()).andReturn(Collections.singletonList(permissionEntity)); |
| |
| expect(permissionEntity.getId()).andReturn(99); |
| expect(permissionEntity.getPermissionName()).andReturn("P1"); |
| expect(permissionEntity.getResourceType()).andReturn(resourceTypeEntity); |
| expect(resourceTypeEntity.getName()).andReturn("V1"); |
| |
| expect(viewEntity.isDeployed()).andReturn(true).anyTimes(); |
| expect(viewEntity.getCommonName()).andReturn("V1").anyTimes(); |
| expect(viewEntity.getVersion()).andReturn("1.0.0").anyTimes(); |
| |
| expect(viewRegistry.getDefinition(resourceTypeEntity)).andReturn(viewEntity); |
| |
| replay(dao, permissionEntity, viewUsePermissionEntity, resourceTypeEntity, viewEntity, viewRegistry); |
| ViewPermissionResourceProvider provider = new ViewPermissionResourceProvider(); |
| Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), null); |
| // built in permissions |
| Assert.assertEquals(1, resources.size()); |
| Resource resource = resources.iterator().next(); |
| |
| Assert.assertEquals(99, resource.getPropertyValue(PermissionResourceProvider.PERMISSION_ID_PROPERTY_ID)); |
| Assert.assertEquals("P1", resource.getPropertyValue(PermissionResourceProvider.PERMISSION_NAME_PROPERTY_ID)); |
| Assert.assertEquals("V1", resource.getPropertyValue(PermissionResourceProvider.RESOURCE_NAME_PROPERTY_ID)); |
| verify(dao, permissionEntity, viewUsePermissionEntity, resourceTypeEntity, viewEntity, viewRegistry); |
| } |
| |
| @Test |
| public void testGetResources_viewNotLoaded() throws Exception { |
| List<PermissionEntity> permissionEntities = new LinkedList<PermissionEntity>(); |
| |
| PermissionEntity permissionEntity = createNiceMock(PermissionEntity.class); |
| PermissionEntity viewUsePermissionEntity = createNiceMock(PermissionEntity.class); |
| ResourceTypeEntity resourceTypeEntity = createNiceMock(ResourceTypeEntity.class); |
| ViewEntity viewEntity = createMock(ViewEntity.class); |
| |
| permissionEntities.add(permissionEntity); |
| |
| expect(dao.findViewUsePermission()).andReturn(viewUsePermissionEntity); |
| expect(dao.findAll()).andReturn(Collections.singletonList(permissionEntity)); |
| |
| expect(permissionEntity.getResourceType()).andReturn(resourceTypeEntity); |
| |
| expect(viewEntity.isDeployed()).andReturn(false).anyTimes(); |
| |
| expect(viewRegistry.getDefinition(resourceTypeEntity)).andReturn(viewEntity); |
| |
| replay(dao, permissionEntity, viewUsePermissionEntity, resourceTypeEntity, viewEntity, viewRegistry); |
| ViewPermissionResourceProvider provider = new ViewPermissionResourceProvider(); |
| Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), null); |
| // built in permissions |
| Assert.assertEquals(0, resources.size()); |
| |
| verify(dao, permissionEntity, viewUsePermissionEntity, resourceTypeEntity, viewEntity, viewRegistry); |
| } |
| } |