blob: 56f7322f70575b91cbe80bd9a4f6e34810c08eb4 [file] [log] [blame]
/*
* 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 com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.util.Modules;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.dao.PermissionDAO;
import org.apache.ambari.server.orm.dao.RoleAuthorizationDAO;
import org.apache.ambari.server.orm.entities.PermissionEntity;
import org.apache.ambari.server.orm.entities.RoleAuthorizationEntity;
import org.easymock.EasyMockSupport;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import javax.persistence.EntityManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static org.easymock.EasyMock.*;
/**
* RoleAuthorizationResourceProvider tests.
*/
public class RoleAuthorizationResourceProviderTest extends EasyMockSupport {
private static Injector injector;
@Before
public void setup() {
reset();
injector = Guice.createInjector(Modules.override(new InMemoryDefaultTestModule())
.with(new AbstractModule() {
@Override
protected void configure() {
AmbariManagementController managementController = createNiceMock(AmbariManagementController.class);
bind(AmbariManagementController.class).toInstance(managementController);
bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
bind(PermissionDAO.class).toInstance(createStrictMock(PermissionDAO.class));
bind(RoleAuthorizationDAO.class).toInstance(createStrictMock(RoleAuthorizationDAO.class));
}
}));
}
@Test
public void testGetResources() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity = createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity.getAuthorizationId()).andReturn("TEST.DO_SOMETHING");
expect(roleAuthorizationEntity.getAuthorizationName()).andReturn("Do Something");
List<RoleAuthorizationEntity> authorizationEntities = new ArrayList<RoleAuthorizationEntity>();
authorizationEntities.add(roleAuthorizationEntity);
RoleAuthorizationDAO roleAuthorizationDAO = injector.getInstance(RoleAuthorizationDAO.class);
expect(roleAuthorizationDAO.findAll()).andReturn(authorizationEntities);
replayAll();
AmbariManagementController managementController = injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider = new RoleAuthorizationResourceProvider(managementController);
injector.injectMembers(provider);
Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), null);
Assert.assertEquals(1, resources.size());
Resource resource = resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
@Test
public void testGetResourcesForPermission() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity = createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity.getAuthorizationId()).andReturn("TEST.DO_SOMETHING").once();
expect(roleAuthorizationEntity.getAuthorizationName()).andReturn("Do Something").once();
List<RoleAuthorizationEntity> authorizationEntities = new ArrayList<RoleAuthorizationEntity>();
authorizationEntities.add(roleAuthorizationEntity);
PermissionEntity permissionEntry = createStrictMock(PermissionEntity.class);
expect(permissionEntry.getAuthorizations()).andReturn(authorizationEntities).once();
PermissionDAO permissionDAO = injector.getInstance(PermissionDAO.class);
expect(permissionDAO.findById(1)).andReturn(permissionEntry).once();
replayAll();
AmbariManagementController managementController = injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider = new RoleAuthorizationResourceProvider(managementController);
Predicate predicate = new PredicateBuilder()
.property(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID).equals("1")
.toPredicate();
Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
Assert.assertEquals(1, resources.size());
Resource resource = resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertEquals(1, resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
@Test
public void testGetResource() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity1 = createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity1.getAuthorizationId()).andReturn("TEST.DO_SOMETHING").anyTimes();
expect(roleAuthorizationEntity1.getAuthorizationName()).andReturn("Do Something").anyTimes();
RoleAuthorizationEntity roleAuthorizationEntity2 = createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity2.getAuthorizationId()).andReturn("TEST.DO_SOMETHING_ELSE").anyTimes();
expect(roleAuthorizationEntity2.getAuthorizationName()).andReturn("Do Something Else").anyTimes();
List<RoleAuthorizationEntity> authorizationEntities = new ArrayList<RoleAuthorizationEntity>();
authorizationEntities.add(roleAuthorizationEntity1);
authorizationEntities.add(roleAuthorizationEntity2);
PermissionEntity permissionEntry = createStrictMock(PermissionEntity.class);
expect(permissionEntry.getAuthorizations()).andReturn(authorizationEntities).once();
PermissionDAO permissionDAO = injector.getInstance(PermissionDAO.class);
expect(permissionDAO.findById(1)).andReturn(permissionEntry).once();
replayAll();
AmbariManagementController managementController = injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider = new RoleAuthorizationResourceProvider(managementController);
Predicate predicate = new PredicateBuilder().begin()
.property(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID).equals("TEST.DO_SOMETHING")
.and()
.property(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID).equals("1")
.end()
.toPredicate();
Set<Resource> resources = provider.getResources(PropertyHelper.getReadRequest(), predicate);
Assert.assertEquals(1, resources.size());
Resource resource = resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something", resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertEquals(1, resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
@Test(expected = org.apache.ambari.server.controller.spi.SystemException.class)
public void testUpdateResources() throws Exception {
replayAll();
AmbariManagementController managementController = injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider = new RoleAuthorizationResourceProvider(managementController);
provider.updateResources(createNiceMock(Request.class), null);
}
@Test(expected = org.apache.ambari.server.controller.spi.SystemException.class)
public void testDeleteResources() throws Exception {
replayAll();
AmbariManagementController managementController = injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider = new RoleAuthorizationResourceProvider(managementController);
provider.deleteResources(new RequestImpl(null, null, null, null), null);
}
}