// 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.cloudstack.privategw; import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.VlanDao; import com.cloud.exception.*; import com.cloud.network.NetworkModel; import com.cloud.network.NetworkService; import com.cloud.network.dao.*; import com.cloud.network.vpc.VpcManagerImpl; import com.cloud.network.vpc.VpcService; import com.cloud.network.vpc.dao.*; import com.cloud.network.vpn.Site2SiteVpnManager; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.server.ConfigurationServer; import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.dao.DomainRouterDao; import junit.framework.Assert; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.admin.vpc.CreatePrivateGatewayCmd; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.test.utils.SpringUtils; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; 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 javax.naming.ConfigurationException; import java.io.IOException; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) public class AclOnPrivateGwTest { private CreatePrivateGatewayCmd createPrivateGwCmd; @Before public void setUp() throws ConfigurationException { createPrivateGwCmd = new CreatePrivateGatewayCmd() { @Override public Long getEntityId () { return 2L; } }; } @Test public void testExecuteSuccess() { VpcService _vpcService = Mockito.mock(VpcService.class); try { _vpcService.applyVpcPrivateGateway(Mockito.anyLong(), Mockito.anyBoolean()); } catch (ResourceUnavailableException e) { e.printStackTrace(); } catch (ConcurrentOperationException e) { e.printStackTrace(); } } @Test public void testExecuteFail() { VpcService vpcService= Mockito.mock(VpcService.class); createPrivateGwCmd._vpcService = vpcService; try { Mockito.when(vpcService.applyVpcPrivateGateway(Mockito.anyLong(), Mockito.anyBoolean())).thenReturn(null); } catch (ResourceUnavailableException e) { e.printStackTrace(); } catch (ConcurrentOperationException e) { e.printStackTrace(); } try { createPrivateGwCmd.execute(); } catch (ServerApiException exception) { Assert.assertEquals("Failed to create private gateway", exception.getDescription()); } catch (ResourceAllocationException e) { e.printStackTrace(); } catch (InsufficientCapacityException e) { e.printStackTrace(); } catch (ConcurrentOperationException e) { e.printStackTrace(); } catch (ResourceUnavailableException e) { e.printStackTrace(); } } @Configuration @ComponentScan(basePackageClasses = {VpcManagerImpl.class}, includeFilters = {@ComponentScan.Filter(value = TestConfiguration.Library.class, type = FilterType.CUSTOM)}, useDefaultFilters = false) public static class TestConfiguration extends SpringUtils.CloudStackTestConfiguration { @Bean public VpcOfferingDao vpcOfferingDao() { return Mockito.mock(VpcOfferingDao.class); } @Bean public VpcOfferingServiceMapDao vpcOfferingServiceMapDao () { return Mockito.mock(VpcOfferingServiceMapDao.class); } @Bean public VpcDao vpcDao () { return Mockito.mock(VpcDao.class); } @Bean public ConfigurationDao configurationDao () { return Mockito.mock(ConfigurationDao.class); } @Bean public ConfigurationManager configurationManager () { return Mockito.mock(ConfigurationManager.class); } @Bean public AccountManager accountManager () { return Mockito.mock(AccountManager.class); } @Bean public NetworkDao networkDao () { return Mockito.mock(NetworkDao.class); } @Bean public NetworkOrchestrationService networkManager () { return Mockito.mock(NetworkOrchestrationService.class); } @Bean public NetworkModel networkModel () { return Mockito.mock(NetworkModel.class); } @Bean public NetworkService networkService () { return Mockito.mock(NetworkService.class); } @Bean public IPAddressDao iPAddressDao () { return Mockito.mock(IPAddressDao.class); } @Bean public DomainRouterDao domainRouterDao () { return Mockito.mock(DomainRouterDao.class); } @Bean public VpcGatewayDao vpcGatewayDao () { return Mockito.mock(VpcGatewayDao.class); } @Bean public PrivateIpDao privateIpDao () { return Mockito.mock(PrivateIpDao.class); } @Bean public StaticRouteDao staticRouteDao () { return Mockito.mock(StaticRouteDao.class); } @Bean public NetworkOfferingServiceMapDao networkOfferingServiceMapDao () { return Mockito.mock(NetworkOfferingServiceMapDao.class); } @Bean public PhysicalNetworkDao physicalNetworkDao () { return Mockito.mock(PhysicalNetworkDao.class); } @Bean public ResourceTagDao resourceTagDao () { return Mockito.mock(ResourceTagDao.class); } @Bean public FirewallRulesDao firewallRulesDao () { return Mockito.mock(FirewallRulesDao.class); } @Bean public Site2SiteVpnGatewayDao site2SiteVpnGatewayDao () { return Mockito.mock(Site2SiteVpnGatewayDao.class); } @Bean public Site2SiteVpnManager site2SiteVpnManager () { return Mockito.mock(Site2SiteVpnManager.class); } @Bean public VlanDao vlanDao () { return Mockito.mock(VlanDao.class); } @Bean public ResourceLimitService resourceLimitService () { return Mockito.mock(ResourceLimitService.class); } @Bean public VpcServiceMapDao vpcServiceMapDao () { return Mockito.mock(VpcServiceMapDao.class); } @Bean public DataCenterDao dataCenterDao () { return Mockito.mock(DataCenterDao.class); } @Bean public ConfigurationServer configurationServer () { return Mockito.mock(ConfigurationServer.class); } @Bean public NetworkACLDao networkACLDao () { return Mockito.mock(NetworkACLDao.class); } public static class Library implements TypeFilter { @Override public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException { ComponentScan cs = TestConfiguration.class.getAnnotation(ComponentScan.class); return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(), cs); } } } }