| // 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 com.cloud.vpc; |
| |
| import java.io.IOException; |
| import java.util.UUID; |
| |
| import javax.inject.Inject; |
| |
| import org.apache.cloudstack.context.CallContext; |
| import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; |
| import org.apache.cloudstack.test.utils.SpringUtils; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.mockito.Matchers; |
| import org.mockito.Mockito; |
| import org.springframework.context.annotation.Bean; |
| import org.springframework.context.annotation.ComponentScan; |
| import org.springframework.context.annotation.Configuration; |
| import org.springframework.context.annotation.FilterType; |
| import org.springframework.core.type.classreading.MetadataReader; |
| import org.springframework.core.type.classreading.MetadataReaderFactory; |
| import org.springframework.core.type.filter.TypeFilter; |
| import org.springframework.test.context.ContextConfiguration; |
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; |
| import org.springframework.test.context.support.AnnotationConfigContextLoader; |
| |
| import com.cloud.exception.InvalidParameterValueException; |
| import com.cloud.network.NetworkModel; |
| import com.cloud.network.dao.NetworkDao; |
| import com.cloud.network.vpc.NetworkACLItemDao; |
| import com.cloud.network.vpc.NetworkACLItemVO; |
| import com.cloud.network.vpc.NetworkACLManager; |
| import com.cloud.network.vpc.NetworkACLService; |
| import com.cloud.network.vpc.NetworkACLServiceImpl; |
| import com.cloud.network.vpc.NetworkACLVO; |
| import com.cloud.network.vpc.Vpc; |
| import com.cloud.network.vpc.VpcManager; |
| import com.cloud.network.vpc.VpcService; |
| import com.cloud.network.vpc.VpcVO; |
| import com.cloud.network.vpc.dao.NetworkACLDao; |
| import com.cloud.network.vpc.dao.VpcDao; |
| import com.cloud.network.vpc.dao.VpcGatewayDao; |
| import com.cloud.tags.dao.ResourceTagDao; |
| import com.cloud.user.Account; |
| import com.cloud.user.AccountManager; |
| import com.cloud.user.AccountVO; |
| import com.cloud.user.User; |
| import com.cloud.user.UserVO; |
| import com.cloud.utils.component.ComponentContext; |
| import com.cloud.utils.db.EntityManager; |
| |
| import junit.framework.TestCase; |
| |
| @RunWith(SpringJUnit4ClassRunner.class) |
| @ContextConfiguration(loader = AnnotationConfigContextLoader.class) |
| public class NetworkACLServiceTest extends TestCase { |
| |
| @Inject |
| private NetworkACLService _aclService; |
| @Inject |
| private NetworkACLManager _networkAclMgr; |
| @Inject |
| private NetworkACLDao _networkACLDao; |
| @Inject |
| private NetworkACLItemDao _networkACLItemDao; |
| @Inject |
| private EntityManager _entityMgr; |
| |
| private NetworkACLVO acl; |
| private NetworkACLItemVO aclItem; |
| |
| @Override |
| @Before |
| public void setUp() { |
| ComponentContext.initComponentsLifeCycle(); |
| Account account = new AccountVO("testaccount", 1, "testdomain", (short)0, UUID.randomUUID().toString()); |
| UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString(), User.Source.UNKNOWN); |
| |
| CallContext.register(user, account); |
| } |
| |
| @Override |
| @After |
| public void tearDown() { |
| CallContext.unregister(); |
| } |
| |
| @Test(expected = InvalidParameterValueException.class) |
| public void testDeleteDefaultACL() throws Exception { |
| Mockito.when(_networkACLDao.findById(Matchers.anyLong())).thenReturn(acl); |
| Mockito.when(_networkAclMgr.deleteNetworkACL(acl)).thenReturn(true); |
| _aclService.deleteNetworkACL(1L); |
| } |
| |
| @Test |
| public void testDeleteACLItem() throws Exception { |
| Mockito.when(_networkACLItemDao.findById(Matchers.anyLong())).thenReturn(aclItem); |
| Mockito.when(_networkAclMgr.getNetworkACL(Matchers.anyLong())).thenReturn(acl); |
| Mockito.when(_networkAclMgr.revokeNetworkACLItem(Matchers.anyLong())).thenReturn(true); |
| Mockito.when(_entityMgr.findById(Mockito.eq(Vpc.class), Mockito.anyLong())).thenReturn(new VpcVO()); |
| assertTrue(_aclService.revokeNetworkACLItem(1L)); |
| } |
| |
| @Configuration |
| @ComponentScan(basePackageClasses = {NetworkACLServiceImpl.class}, includeFilters = { |
| @ComponentScan.Filter(value = NetworkACLTestConfiguration.Library.class, type = FilterType.CUSTOM)}, useDefaultFilters = false) |
| public static class NetworkACLTestConfiguration extends SpringUtils.CloudStackTestConfiguration { |
| |
| @Bean |
| public EntityManager entityManager() { |
| return Mockito.mock(EntityManager.class); |
| } |
| |
| @Bean |
| public AccountManager accountManager() { |
| return Mockito.mock(AccountManager.class); |
| } |
| |
| @Bean |
| public NetworkOrchestrationService networkManager() { |
| return Mockito.mock(NetworkOrchestrationService.class); |
| } |
| |
| @Bean |
| public NetworkModel networkModel() { |
| return Mockito.mock(NetworkModel.class); |
| } |
| |
| @Bean |
| public VpcManager vpcManager() { |
| return Mockito.mock(VpcManager.class); |
| } |
| |
| @Bean |
| public ResourceTagDao resourceTagDao() { |
| return Mockito.mock(ResourceTagDao.class); |
| } |
| |
| @Bean |
| public NetworkACLDao networkACLDao() { |
| return Mockito.mock(NetworkACLDao.class); |
| } |
| |
| @Bean |
| public NetworkACLItemDao networkACLItemDao() { |
| return Mockito.mock(NetworkACLItemDao.class); |
| } |
| |
| @Bean |
| public NetworkDao networkDao() { |
| return Mockito.mock(NetworkDao.class); |
| } |
| |
| @Bean |
| public NetworkACLManager networkACLManager() { |
| return Mockito.mock(NetworkACLManager.class); |
| } |
| |
| @Bean |
| public VpcGatewayDao vpcGatewayDao() { |
| return Mockito.mock(VpcGatewayDao.class); |
| } |
| |
| @Bean |
| public VpcDao vpcDao() { |
| return Mockito.mock(VpcDao.class); |
| } |
| |
| @Bean |
| public VpcService vpcService() { |
| return Mockito.mock(VpcService.class); |
| } |
| |
| public static class Library implements TypeFilter { |
| @Override |
| public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException { |
| mdr.getClassMetadata().getClassName(); |
| ComponentScan cs = NetworkACLTestConfiguration.class.getAnnotation(ComponentScan.class); |
| return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(), cs); |
| } |
| } |
| } |
| |
| } |