package org.openstack.atlas.api.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.v1.Node;
import org.openstack.atlas.docs.loadbalancers.api.v1.NodeCondition;
import org.openstack.atlas.docs.loadbalancers.api.v1.Nodes;
import org.openstack.atlas.api.validation.context.HttpRequestType;
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.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@RunWith(Enclosed.class)
public class NodesValidatorTest {
public static class WhenValidatingPost {
private NodesValidator validator;
private Nodes nodes;
private Node node1;
@Before
public void setUpValidNodesObject() {
validator = new NodesValidator();
nodes = new Nodes();
node1 = new Node();
node1.setAddress("10.1.1.1");
node1.setPort(80);
node1.setCondition(NodeCondition.ENABLED);
nodes.getNodes().add(node1);
}
@Test
public void shouldAcceptValidNodesObject() {
ValidatorResult result = validator.validate(nodes, HttpRequestType.POST);
assertTrue(result.passedValidation());
}
@Test
public void shouldRejectNullNodesObject() {
assertFalse(validator.validate(null, HttpRequestType.POST).passedValidation());
}
@Test
public void shouldAcceptNodesObjectWithNoNodes() {
assertTrue(validator.validate(new Nodes(), HttpRequestType.POST).passedValidation());
}
@Test
public void shouldRejectWhenPassingInDuplicateNodes() {
Node duplicateNode = node1;
nodes.getNodes().add(duplicateNode);
assertFalse(validator.validate(nodes, HttpRequestType.POST).passedValidation());
}
}
}