package org.openstack.atlas.service.domain.services; import org.openstack.atlas.service.domain.entities.*; import org.openstack.atlas.service.domain.exceptions.EntityNotFoundException; import org.openstack.atlas.service.domain.repository.LoadBalancerRepository; import org.openstack.atlas.service.domain.repository.NodeRepository; import org.openstack.atlas.service.domain.services.impl.NodeServiceImpl; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import java.util.HashSet; import java.util.Set; import static org.mockito.Mockito.mock; @RunWith(Enclosed.class) public class NodeServiceImplTest { public static class NodeOperations { Integer accountId = 1234; LoadBalancerRepository lbRepository; NodeRepository nodeRepository; NodeServiceImpl nodeService; LoadBalancer lb; LoadBalancer lb2; LoadBalancerJoinVip lbjv; Set<LoadBalancerJoinVip> lbjvs; VirtualIp vip; Node node; Node node2; Set<Node> nodes; Set<Node> nodes2; @Before public void standUp() { lbRepository = mock(LoadBalancerRepository.class); nodeRepository = mock(NodeRepository.class); nodeService = new NodeServiceImpl(); nodeService.setNodeRepository(nodeRepository); nodeService.setLoadBalancerRepository(lbRepository); } @Before public void standUpObjects() { lb = new LoadBalancer(); lb2 = new LoadBalancer(); lbjv = new LoadBalancerJoinVip(); lbjvs = new HashSet<LoadBalancerJoinVip>(); vip = new VirtualIp(); node = new Node(); node2 = new Node(); nodes = new HashSet<Node>(); nodes2 = new HashSet<Node>(); node.setPort(12); node2.setPort(11); node.setId(12); node2.setId(10); node.setIpAddress("192.1.1.1"); node2.setIpAddress("193.1.1.1"); node.setCondition(NodeCondition.ENABLED); node2.setCondition(NodeCondition.DISABLED); nodes.add(node); nodes2.add(node2); lb.setNodes(nodes); lb2.setNodes(nodes2); vip.setIpAddress("192.3.3.3"); lbjv.setVirtualIp(vip); lbjvs.add(lbjv); lb.setLoadBalancerJoinVipSet(lbjvs); } @Test public void shouldReturnFalseWhenNoDuplicateNodesDetected() throws EntityNotFoundException { Assert.assertFalse(nodeService.detectDuplicateNodes(lb, lb2)); } @Test public void shouldReturnTrueWhenDuplicateNodesDetected() throws EntityNotFoundException { node2.setIpAddress("192.1.1.1"); node2.setPort(12); lb2.getNodes().add(node2); Assert.assertTrue(nodeService.detectDuplicateNodes(lb, lb2)); } @Test public void shouldAllowValidIps() { Assert.assertTrue(nodeService.areAddressesValidForUse(nodes, lb)); } @Test public void shouldNotAllowInvalidIps() { node2.setIpAddress("192.3.3.3"); nodes2.add(node2); Assert.assertFalse(nodeService.areAddressesValidForUse(nodes2, lb)); } @Test public void shouldReturnFalseIfLastActive() { Assert.assertFalse(nodeService.nodeToDeleteIsNotLastActive(lb, node)); } @Test public void shouldReturnTrueIfNotLastActive() { node2.setCondition(NodeCondition.ENABLED); lb.addNode(node2); Assert.assertTrue(nodeService.nodeToDeleteIsNotLastActive(lb, node)); } } }