| /** |
| * 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.GroupDAO; |
| import org.apache.ambari.server.orm.dao.MemberDAO; |
| import org.apache.ambari.server.orm.dao.PermissionDAO; |
| import org.apache.ambari.server.orm.dao.PrincipalDAO; |
| import org.apache.ambari.server.orm.dao.PrivilegeDAO; |
| import org.apache.ambari.server.orm.dao.ResourceDAO; |
| import org.apache.ambari.server.orm.dao.ResourceTypeDAO; |
| import org.apache.ambari.server.orm.dao.UserDAO; |
| import org.apache.ambari.server.orm.dao.ViewDAO; |
| import org.apache.ambari.server.orm.dao.ViewInstanceDAO; |
| import org.apache.ambari.server.orm.entities.GroupEntity; |
| import org.apache.ambari.server.orm.entities.PermissionEntity; |
| import org.apache.ambari.server.orm.entities.PrincipalEntity; |
| import org.apache.ambari.server.orm.entities.PrincipalTypeEntity; |
| import org.apache.ambari.server.orm.entities.PrivilegeEntity; |
| import org.apache.ambari.server.orm.entities.ResourceEntity; |
| import org.apache.ambari.server.orm.entities.UserEntity; |
| import org.apache.ambari.server.orm.entities.ViewEntity; |
| import org.apache.ambari.server.orm.entities.ViewEntityTest; |
| import org.apache.ambari.server.orm.entities.ViewInstanceEntity; |
| import org.apache.ambari.server.orm.entities.ViewInstanceEntityTest; |
| import org.apache.ambari.server.security.SecurityHelper; |
| import org.apache.ambari.server.security.TestAuthenticationFactory; |
| import org.apache.ambari.server.view.ViewInstanceHandlerList; |
| import org.apache.ambari.server.view.ViewRegistry; |
| import org.apache.ambari.server.view.ViewRegistryTest; |
| import org.apache.ambari.view.ViewDefinition; |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.springframework.security.core.context.SecurityContextHolder; |
| |
| 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; |
| |
| /** |
| * ViewPrivilegeResourceProvider tests. |
| */ |
| public class ViewPrivilegeResourceProviderTest { |
| private final static PrivilegeDAO privilegeDAO = createStrictMock(PrivilegeDAO.class); |
| private final static UserDAO userDAO = createStrictMock(UserDAO.class); |
| private final static GroupDAO groupDAO = createStrictMock(GroupDAO.class); |
| private final static PrincipalDAO principalDAO = createStrictMock(PrincipalDAO.class); |
| private final static PermissionDAO permissionDAO = createStrictMock(PermissionDAO.class); |
| private final static ResourceDAO resourceDAO = createStrictMock(ResourceDAO.class); |
| private static final ViewDAO viewDAO = createMock(ViewDAO.class); |
| private static final ViewInstanceDAO viewInstanceDAO = createNiceMock(ViewInstanceDAO.class); |
| private static final MemberDAO memberDAO = createNiceMock(MemberDAO.class); |
| private static final ResourceTypeDAO resourceTypeDAO = createNiceMock(ResourceTypeDAO.class); |
| private static final SecurityHelper securityHelper = createNiceMock(SecurityHelper.class); |
| private static final ViewInstanceHandlerList handlerList = createNiceMock(ViewInstanceHandlerList.class); |
| |
| @BeforeClass |
| public static void initClass() { |
| PrivilegeResourceProvider.init(privilegeDAO, userDAO, groupDAO, principalDAO, permissionDAO, resourceDAO); |
| } |
| |
| @Before |
| public void resetGlobalMocks() { |
| |
| ViewRegistry.initInstance(ViewRegistryTest.getRegistry(viewDAO, viewInstanceDAO, userDAO, |
| memberDAO, privilegeDAO, resourceDAO, resourceTypeDAO, securityHelper, handlerList, null, null, null)); |
| reset(privilegeDAO, userDAO, groupDAO, principalDAO, permissionDAO, resourceDAO, handlerList); |
| } |
| |
| @Test |
| public void testGetResources() throws Exception { |
| |
| ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); |
| ViewInstanceEntity viewInstanceDefinition = ViewInstanceEntityTest.getViewInstanceEntity(); |
| |
| viewDefinition.addInstanceDefinition(viewInstanceDefinition); |
| viewInstanceDefinition.setViewEntity(viewDefinition); |
| viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED); |
| |
| ViewRegistry registry = ViewRegistry.getInstance(); |
| |
| registry.addDefinition(viewDefinition); |
| |
| registry.addInstanceDefinition(viewDefinition, viewInstanceDefinition); |
| |
| |
| List<PrivilegeEntity> privilegeEntities = new LinkedList<PrivilegeEntity>(); |
| |
| PrivilegeEntity privilegeEntity = createNiceMock(PrivilegeEntity.class); |
| ResourceEntity resourceEntity = createNiceMock(ResourceEntity.class); |
| UserEntity userEntity = createNiceMock(UserEntity.class); |
| PrincipalEntity principalEntity = createNiceMock(PrincipalEntity.class); |
| PrincipalTypeEntity principalTypeEntity = createNiceMock(PrincipalTypeEntity.class); |
| PermissionEntity permissionEntity = createNiceMock(PermissionEntity.class); |
| |
| List<PrincipalEntity> principalEntities = new LinkedList<PrincipalEntity>(); |
| principalEntities.add(principalEntity); |
| |
| List<UserEntity> userEntities = new LinkedList<UserEntity>(); |
| userEntities.add(userEntity); |
| |
| privilegeEntities.add(privilegeEntity); |
| |
| expect(privilegeDAO.findAll()).andReturn(privilegeEntities); |
| expect(privilegeEntity.getResource()).andReturn(resourceEntity).anyTimes(); |
| expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).anyTimes(); |
| expect(privilegeEntity.getPermission()).andReturn(permissionEntity).anyTimes(); |
| expect(resourceEntity.getId()).andReturn(20L).anyTimes(); |
| expect(principalEntity.getId()).andReturn(20L).anyTimes(); |
| expect(userEntity.getPrincipal()).andReturn(principalEntity).anyTimes(); |
| expect(userEntity.getUserName()).andReturn("joe").anyTimes(); |
| expect(permissionEntity.getPermissionName()).andReturn("VIEW.USER").anyTimes(); |
| expect(permissionEntity.getPermissionLabel()).andReturn("View User").anyTimes(); |
| expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).anyTimes(); |
| expect(principalTypeEntity.getName()).andReturn("USER").anyTimes(); |
| |
| expect(permissionDAO.findById(PermissionEntity.VIEW_USER_PERMISSION)).andReturn(permissionEntity); |
| |
| expect(userDAO.findUsersByPrincipal(principalEntities)).andReturn(userEntities); |
| expect(groupDAO.findGroupsByPrincipal(principalEntities)).andReturn(Collections.<GroupEntity>emptyList()); |
| |
| replay(privilegeDAO, userDAO, groupDAO, principalDAO, permissionDAO, resourceDAO, privilegeEntity, resourceEntity, |
| userEntity, principalEntity, permissionEntity, principalTypeEntity); |
| |
| SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator("admin")); |
| |
| PrivilegeResourceProvider provider = new ViewPrivilegeResourceProvider(); |
| Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), null); |
| |
| Assert.assertEquals(1, resources.size()); |
| |
| Resource resource = resources.iterator().next(); |
| |
| Assert.assertEquals("VIEW.USER", resource.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID)); |
| Assert.assertEquals("View User", resource.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_LABEL_PROPERTY_ID)); |
| Assert.assertEquals("joe", resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID)); |
| Assert.assertEquals("USER", resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID)); |
| |
| verify(privilegeDAO, userDAO, groupDAO, principalDAO, permissionDAO, resourceDAO, privilegeEntity, resourceEntity, |
| userEntity, principalEntity, permissionEntity, principalTypeEntity); |
| } |
| } |
| |