package org.openstack.atlas.api.mgmt.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIp;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIps;
import org.openstack.atlas.docs.loadbalancers.api.v1.VipType;
import org.openstack.atlas.api.mgmt.validation.validators.VirtualIpsValidator;
import org.openstack.atlas.api.validation.results.ValidatorResult;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import static org.openstack.atlas.api.helpers.ResultMessage.resultMessage;
import static org.openstack.atlas.api.mgmt.validation.contexts.VirtualIpContext.POST;
import static org.openstack.atlas.api.mgmt.validation.contexts.VirtualIpContext.VIPS_POST;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@RunWith(Enclosed.class)
public class VirtualIpsValidatorTest {
public static class WhenValidatingPost {
private VirtualIpsValidator vipsValidator;
private VirtualIps vips;
private VirtualIp vip2;
@Before
public void setUpValidVipsObject() {
vipsValidator = new VirtualIpsValidator();
vips = new VirtualIps();
vip2 = new VirtualIp();
vip2.setType(VipType.PUBLIC);
vips.getVirtualIps().add(vip2);
}
@Test
public void shouldAcceptValidVipsObject() {
vip2.setAddress("0.0.0.0");
ValidatorResult result = vipsValidator.validate(vips, POST);
assertTrue(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullVipsObject() {
ValidatorResult result= vipsValidator.validate(null, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectVipsObjectWithNoVips() {
ValidatorResult result = vipsValidator.validate(new VirtualIps(), POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shoulRejectLoadBalancerId() {
vip2.setLoadBalancerId(80);
ValidatorResult result = vipsValidator.validate(vips, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectClusterId() {
vip2.setClusterId(80);
ValidatorResult result = vipsValidator.validate(vips, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectId() {
vip2.setId(12);
ValidatorResult result = vipsValidator.validate(vips, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
}
public static class WhenValidatingVipsPost {
private VirtualIpsValidator vipsValidator;
private VirtualIps vips;
private VirtualIp vip2;
@Before
public void setUpValidVipsObject() {
vipsValidator = new VirtualIpsValidator();
vips = new VirtualIps();
vip2 = new VirtualIp();
vip2.setType(VipType.PUBLIC);
Ticket ticket = new Ticket();
ticket.setTicketId("1234");
ticket.setComment("My first comment!");
vip2.setTicket(ticket);
vips.getVirtualIps().add(vip2);
}
@Test
public void shouldAcceptValidVipsPOSTObject() {
ValidatorResult result = vipsValidator.validate(vips, VIPS_POST);
assertTrue(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Test
public void shouldRejectNullVipsObject() {
ValidatorResult result = vipsValidator.validate(null, VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Test
public void shouldRejectVipsObjectWithNoVips() {
ValidatorResult result = vipsValidator.validate(new VirtualIps(), VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Ignore
@Test
public void shoulRejectLoadBalancerId() {
vip2.setLoadBalancerId(80);
ValidatorResult result = vipsValidator.validate(vips, VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Ignore
@Test
public void shouldRejectClusterId() {
vip2.setClusterId(80);
ValidatorResult result = vipsValidator.validate(vips, VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Test
public void shouldRejectIdIfTypeIsSet() {
vip2.setId(12);
ValidatorResult result = vipsValidator.validate(vips, VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
@Ignore
@Test
public void shouldRejectVipsAddress() {
ValidatorResult result = vipsValidator.validate(vips, VIPS_POST);
assertFalse(resultMessage(result, VIPS_POST), result.passedValidation());
}
}
}