diff --git a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxServiceImplTest.java b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxServiceImplTest.java index 34feb6a2bee..41f47bc610e 100644 --- a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxServiceImplTest.java +++ b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxServiceImplTest.java @@ -16,11 +16,16 @@ // under the License. package org.apache.cloudstack.service; +import com.cloud.network.IpAddress; import com.cloud.network.dao.NetworkVO; import com.cloud.network.vpc.VpcVO; import com.cloud.network.vpc.dao.VpcDao; +import com.cloud.utils.net.Ip; import org.apache.cloudstack.NsxAnswer; +import org.apache.cloudstack.agent.api.CreateNsxStaticNatCommand; import org.apache.cloudstack.agent.api.CreateNsxTier1GatewayCommand; +import org.apache.cloudstack.agent.api.CreateOrUpdateNsxTier1NatRuleCommand; +import org.apache.cloudstack.agent.api.DeleteNsxNatRuleCommand; import org.apache.cloudstack.agent.api.DeleteNsxSegmentCommand; import org.apache.cloudstack.agent.api.DeleteNsxTier1GatewayCommand; import org.apache.cloudstack.utils.NsxControllerUtils; @@ -29,12 +34,14 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -48,6 +55,10 @@ public class NsxServiceImplTest { AutoCloseable closeable; + private static final long domainId = 1L; + private static final long accountId = 2L; + private static final long zoneId = 1L; + @Before public void setup() { closeable = MockitoAnnotations.openMocks(this); @@ -80,15 +91,72 @@ public class NsxServiceImplTest { } @Test - public void testDelete() { + public void testDeleteNetworkOnVpc() { NetworkVO network = new NetworkVO(); network.setVpcId(1L); - VpcVO vpc = mock(VpcVO.class); when(vpcDao.findById(1L)).thenReturn(mock(VpcVO.class)); NsxAnswer deleteNsxSegmentAnswer = mock(NsxAnswer.class); when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxSegmentCommand.class), anyLong())).thenReturn(deleteNsxSegmentAnswer); when(deleteNsxSegmentAnswer.getResult()).thenReturn(true); - assertTrue(nsxService.deleteNetwork(1L, 3L, 5L, network)); + assertTrue(nsxService.deleteNetwork(zoneId, accountId, domainId, network)); + } + + @Test + public void testDeleteNetwork() { + NetworkVO network = new NetworkVO(); + network.setVpcId(null); + NsxAnswer deleteNsxSegmentAnswer = mock(NsxAnswer.class); + when(deleteNsxSegmentAnswer.getResult()).thenReturn(true); + when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxSegmentCommand.class), anyLong())).thenReturn(deleteNsxSegmentAnswer); + NsxAnswer deleteNsxTier1GatewayAnswer = mock(NsxAnswer.class); + when(deleteNsxTier1GatewayAnswer.getResult()).thenReturn(true); + when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxTier1GatewayCommand.class), anyLong())).thenReturn(deleteNsxTier1GatewayAnswer); + assertTrue(nsxService.deleteNetwork(zoneId, accountId, domainId, network)); + } + + @Test + public void testUpdateVpcSourceNatIp() { + VpcVO vpc = mock(VpcVO.class); + IpAddress ipAddress = mock(IpAddress.class); + Ip ip = Mockito.mock(Ip.class); + when(ip.addr()).thenReturn("10.1.10.10"); + when(ipAddress.getAddress()).thenReturn(ip); + long vpcId = 1L; + when(vpc.getAccountId()).thenReturn(accountId); + when(vpc.getDomainId()).thenReturn(domainId); + when(vpc.getZoneId()).thenReturn(zoneId); + when(vpc.getId()).thenReturn(vpcId); + NsxAnswer answer = mock(NsxAnswer.class); + when(answer.getResult()).thenReturn(true); + when(nsxControllerUtils.sendNsxCommand(any(CreateOrUpdateNsxTier1NatRuleCommand.class), eq(zoneId))).thenReturn(answer); + nsxService.updateVpcSourceNatIp(vpc, ipAddress); + Mockito.verify(nsxControllerUtils).sendNsxCommand(any(CreateOrUpdateNsxTier1NatRuleCommand.class), eq(zoneId)); + } + + @Test + public void testCreateStaticNatRule() { + long networkId = 1L; + String networkName = "Network-Test"; + long vmId = 1L; + String publicIp = "10.10.1.10"; + String vmIp = "192.168.1.20"; + NsxAnswer answer = Mockito.mock(NsxAnswer.class); + when(answer.getResult()).thenReturn(true); + when(nsxControllerUtils.sendNsxCommand(any(CreateNsxStaticNatCommand.class), eq(zoneId))).thenReturn(answer); + nsxService.createStaticNatRule(zoneId, domainId, accountId, + networkId, networkName, true, vmId, publicIp, vmIp); + Mockito.verify(nsxControllerUtils).sendNsxCommand(any(CreateNsxStaticNatCommand.class), eq(zoneId)); + } + + @Test + public void testDeleteStaticNatRule() { + long networkId = 1L; + String networkName = "Network-Test"; + NsxAnswer answer = Mockito.mock(NsxAnswer.class); + when(answer.getResult()).thenReturn(true); + when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxNatRuleCommand.class), eq(zoneId))).thenReturn(answer); + nsxService.deleteStaticNatRule(zoneId, domainId, accountId, networkId, networkName, true); + Mockito.verify(nsxControllerUtils).sendNsxCommand(any(DeleteNsxNatRuleCommand.class), eq(zoneId)); } }