package org.openstack.atlas.api.resources; import junit.framework.Assert; import org.dozer.DozerBeanMapper; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.openstack.atlas.docs.loadbalancers.api.v1.Created; import org.openstack.atlas.docs.loadbalancers.api.v1.LoadBalancer; import org.openstack.atlas.docs.loadbalancers.api.v1.VipType; import org.openstack.atlas.service.domain.entities.LoadBalancerJoinVip; import org.openstack.atlas.service.domain.entities.VirtualIpType; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @RunWith(Enclosed.class) public class VirtualIpsResourceTest { public static class whenMappingVirtualIps { private DozerBeanMapper mapper; private LoadBalancer loadBalancer; private org.openstack.atlas.service.domain.entities.LoadBalancer domainLoadBalancer; @Before public void setUp() { List<String> mappingFiles = new ArrayList<String>(); mappingFiles.add("loadbalancing-dozer-mapping.xml"); mapper = new DozerBeanMapper(mappingFiles); loadBalancer = new LoadBalancer(); Created created = new Created(); created.setTime(new GregorianCalendar(2010, 10, 10)); loadBalancer.setCreated(created); loadBalancer.setId(100); loadBalancer.setName("LB 1"); loadBalancer.setPort(9999); org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp virtualIp1 = new org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp(); virtualIp1.setAddress("10.10.10.1"); virtualIp1.setId(2000); virtualIp1.setType(VipType.PUBLIC); List<org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp> virtualIps = new ArrayList<org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp>(); virtualIps.add(virtualIp1); loadBalancer.getVirtualIps().addAll(virtualIps); domainLoadBalancer = mapper.map(loadBalancer, org.openstack.atlas.service.domain.entities.LoadBalancer.class); } @Test public void should_map_virtualips_on_the_loadbalancer() { Assert.assertEquals(1, domainLoadBalancer.getLoadBalancerJoinVipSet().size()); } @Ignore // TODO : Temporary mitigation for SITESLB-1519 @Test public void should_map_correct_virtualip_elements_on_loadbalancer() { Assert.assertEquals(new Integer(100), domainLoadBalancer.getId()); for (LoadBalancerJoinVip loadBalancerJoinVip : domainLoadBalancer.getLoadBalancerJoinVipSet()) { if (loadBalancerJoinVip.getVirtualIp().getId() != 2000) Assert.fail("The id was not mapped correctly"); if (loadBalancerJoinVip.getVirtualIp().getIpAddress() != "10.10.10.1") Assert.fail("The ip address was not mapped correctly"); if (loadBalancerJoinVip.getVirtualIp().getVipType() != forTestPurposes(VipType.PUBLIC)) Assert.fail("The vipType was not mapped correctly"); } } public static class WhenRetrievingResources { private VirtualIpsResource virtualIpsResource; @Before public void setUp() { virtualIpsResource = new VirtualIpsResource(); } @Test public void shouldSetAccountIdLbIdAndVipIdForVirtualIpResource() { VirtualIpResource virtualIpResource = mock(VirtualIpResource.class); virtualIpsResource.setVirtualIpResource(virtualIpResource); virtualIpsResource.retrieveVirtualIpResource(anyInt()); verify(virtualIpResource).setAccountId(anyInt()); verify(virtualIpResource).setLoadBalancerId(anyInt()); verify(virtualIpResource).setId(anyInt()); } } public static VirtualIpType forTestPurposes(VipType virtualIpType) { org.openstack.atlas.service.domain.entities.VirtualIpType newIpType = null; if (virtualIpType == null) { return null; } switch (virtualIpType) { case PUBLIC: newIpType = org.openstack.atlas.service.domain.entities.VirtualIpType.PUBLIC; break; case SERVICENET: newIpType = org.openstack.atlas.service.domain.entities.VirtualIpType.SERVICENET; break; } return newIpType; } } }