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.v1.VipType; import org.openstack.atlas.api.mgmt.validation.validators.VirtualIpValidator; import org.openstack.atlas.api.validation.results.ValidatorResult; import org.junit.Before; 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 VirtualIpValidatorTest { public static class WhenValidatingPost { private VirtualIpValidator cTest; private VirtualIp vip; @Before public void standUp() { cTest = new VirtualIpValidator(); vip = new VirtualIp(); vip.setAddress("127.0.0.1"); vip.setType(VipType.SERVICENET); } @Test public void shouldAcceptValidClusterVip() { ValidatorResult result = cTest.validate(vip, POST); assertTrue(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectClusterId() { vip.setClusterId(12); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectNullType() { vip.setType(null); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectNullAddress() { vip.setAddress(null); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectEmptyAddress() { vip.setAddress(""); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectLbId() { vip.setLoadBalancerId(2); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } @Test public void shouldRejectVipId() { vip.setId(2); ValidatorResult result = cTest.validate(vip, POST); assertFalse(resultMessage(result, POST), result.passedValidation()); } } public static class WhenValidatingLoadBalancerVIPPOST { private VirtualIpValidator lbvipvalidator; private VirtualIp vip; private Ticket ticket; @Before public void standUp() { lbvipvalidator = new VirtualIpValidator(); vip = new VirtualIp(); vip.setType(VipType.SERVICENET); ticket = new Ticket(); ticket.setTicketId("1234"); ticket.setComment("My first comment!"); vip.setTicket(ticket); } @Test public void shouldAcceptValidVip() { ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertTrue(result.passedValidation()); } @Test public void shouldRejectWhenIdAndTypeAreBothSet() { vip.setId(1234); ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertFalse(result.passedValidation()); } @Test public void shouldRejectIdOnly() { VirtualIp vip = new VirtualIp(); vip.setId(1234); ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertFalse(result.passedValidation()); } @Test public void shouldRejectWhenTicketIsMissing() { vip.setTicket(null); ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertFalse(result.passedValidation()); } @Test public void shouldRejectAddress() { vip.setAddress("127.0.0.1"); ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertFalse(result.passedValidation()); } @Test public void shouldRejectWhenTicketIsInvalid() { vip.getTicket().setComment(null); ValidatorResult result = lbvipvalidator.validate(vip, VIPS_POST); assertFalse(result.passedValidation()); } } }