diff --git a/server/test/com/cloud/network/NetworkManagerTest.java b/server/test/com/cloud/network/NetworkManagerTest.java index 6fdf35f160b..c0856d649ff 100644 --- a/server/test/com/cloud/network/NetworkManagerTest.java +++ b/server/test/com/cloud/network/NetworkManagerTest.java @@ -25,9 +25,6 @@ import org.junit.Test; import com.cloud.network.element.DhcpServiceProvider; import com.cloud.network.element.IpDeployer; -import com.cloud.network.firewall.FirewallManagerImpl; -import com.cloud.network.firewall.FirewallManagerTest; -import com.cloud.network.rules.FirewallManager; import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.testcase.ComponentSetup; import com.cloud.utils.testcase.ComponentTestCase; diff --git a/server/test/com/cloud/network/firewall/FirewallManagerTest.java b/server/test/com/cloud/network/firewall/FirewallManagerTest.java index b17741f0614..c4470d2512d 100644 --- a/server/test/com/cloud/network/firewall/FirewallManagerTest.java +++ b/server/test/com/cloud/network/firewall/FirewallManagerTest.java @@ -18,17 +18,38 @@ package com.cloud.network.firewall; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyBoolean; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + import junit.framework.Assert; import org.apache.log4j.Logger; import org.junit.Test; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.Network; +import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkRuleApplier; import com.cloud.network.element.FirewallServiceProvider; import com.cloud.network.element.NetworkACLServiceProvider; import com.cloud.network.element.PortForwardingServiceProvider; import com.cloud.network.element.StaticNatServiceProvider; +import com.cloud.network.element.VirtualRouterElement; +import com.cloud.network.element.VpcVirtualRouterElement; import com.cloud.network.rules.FirewallManager; +import com.cloud.network.rules.FirewallRule; +import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.FirewallRuleVO; +import com.cloud.utils.component.Adapter; +import com.cloud.utils.component.Adapters; import com.cloud.utils.component.ComponentLocator; +import com.cloud.utils.component.ComponentLocator.ComponentInfo; import com.cloud.utils.testcase.ComponentSetup; import com.cloud.utils.testcase.ComponentTestCase; @@ -63,5 +84,74 @@ public class FirewallManagerTest extends ComponentTestCase { s_logger.info("Done testing injection of service elements into firewall manager"); } + + @Test + public void testApplyRules() { + List ruleList = new ArrayList(); + FirewallRuleVO rule = + new FirewallRuleVO("rule1", 1, 80, "TCP", 1, 2, 1, + FirewallRule.Purpose.Firewall, null, null, null, null); + ruleList.add(rule); + FirewallManagerImpl firewallMgr = (FirewallManagerImpl)ComponentLocator.getCurrentLocator().getManager(FirewallManager.class); + + NetworkManager netMgr = mock(NetworkManager.class); + firewallMgr._networkMgr = netMgr; + + try { + firewallMgr.applyRules(ruleList, false, false); + verify(netMgr) + .applyRules(any(List.class), + any(FirewallRule.Purpose.class), + any(NetworkRuleApplier.class), + anyBoolean()); + + } catch (ResourceUnavailableException e) { + Assert.fail("Unreachable code"); + } + } + + @Test + public void testApplyFWRules() { + List ruleList = new ArrayList(); + FirewallRuleVO rule = + new FirewallRuleVO("rule1", 1, 80, "TCP", 1, 2, 1, + FirewallRule.Purpose.Firewall, null, null, null, null); + ruleList.add(rule); + FirewallManagerImpl firewallMgr = (FirewallManagerImpl)ComponentLocator.getCurrentLocator().getManager(FirewallManager.class); + VirtualRouterElement virtualRouter = + mock(VirtualRouterElement.class); + VpcVirtualRouterElement vpcVirtualRouter = + mock(VpcVirtualRouterElement.class); + ComponentInfo c1 = + new ComponentInfo("VirtualRouter", + VirtualRouterElement.class, virtualRouter); + ComponentInfo c2 = + new ComponentInfo("VpcVirtualRouter", + VpcVirtualRouterElement.class, vpcVirtualRouter); + List> adapters = + new ArrayList>(); + adapters.add(c1); + adapters.add(c2); + Adapters fwElements = + new Adapters("firewalElements", adapters); + firewallMgr._firewallElements = fwElements; + + try { + when( + virtualRouter.applyFWRules(any(Network.class), any(List.class)) + ).thenReturn(false); + when( + vpcVirtualRouter.applyFWRules(any(Network.class), any(List.class)) + ).thenReturn(true); + //Network network, Purpose purpose, List rules + firewallMgr.applyRules(mock(Network.class), Purpose.Firewall, ruleList); + verify(vpcVirtualRouter).applyFWRules(any(Network.class), any(List.class)); + verify(virtualRouter).applyFWRules(any(Network.class), any(List.class)); + + + } catch (ResourceUnavailableException e) { + Assert.fail("Unreachable code"); + } + } }