package org.openstack.atlas.api.mgmt.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.Cluster;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.ClusterStatus;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.DataCenter;
import org.openstack.atlas.api.mgmt.validation.validators.ClusterValidator;
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.validation.context.HttpRequestType.POST;
import static org.openstack.atlas.api.validation.context.HttpRequestType.PUT;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@RunWith(Enclosed.class)
public class ClusterValidatorTest {
public static class WhenValidatingPost {
private ClusterValidator cTest;
private Cluster cluster;
@Before
public void standUp() {
cTest = new ClusterValidator();
cluster = new Cluster();
cluster.setDescription("a-new-cluster");
cluster.setName("a-cluster-name");
cluster.setDataCenter(DataCenter.DFW);
cluster.setUsername("username");
cluster.setPassword("password");
cluster.setStatus(ClusterStatus.ACTIVE);
}
@Test
public void shouldAcceptValidCluster() {
ValidatorResult result = cTest.validate(cluster, POST);
assertTrue(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullCluster() {
ValidatorResult result = cTest.validate(null, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullName() {
cluster.setName(null);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullDescription() {
cluster.setDescription(null);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullDataCenter() {
cluster.setDataCenter(null);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectId() {
cluster.setId(2);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectHostMachines() {
cluster.setNumberOfHostMachines(2);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectLbConfigs() {
cluster.setNumberOfLoadBalancingConfigurations(2);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectUniqueCustomers() {
cluster.setNumberOfUniqueCustomers(2);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectUtiliztation() {
cluster.setUtilization("1%");
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
}
public static class WhenValidatingPut {
private ClusterValidator cTest;
private Cluster cluster;
@Before
public void setUpValidObject() {
cTest = new ClusterValidator();
cluster = new Cluster();
cluster.setDescription("a-desc");
cluster.setName("aName");
}
@Test
public void shouldAcceptValidCluster() {
ValidatorResult result = cTest.validate(cluster, PUT);
assertTrue(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectNullCluster() {
ValidatorResult result = cTest.validate(null, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectNullName() {
cluster.setName(null);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectNullDescription() {
cluster.setDescription(null);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectDataCenter() {
cluster.setDataCenter(DataCenter.LON);
ValidatorResult result = cTest.validate(cluster, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectHostMachines() {
cluster.setNumberOfHostMachines(2);
ValidatorResult result = cTest.validate(cluster, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectLbConfigs() {
cluster.setNumberOfLoadBalancingConfigurations(2);
ValidatorResult result = cTest.validate(cluster, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectUniqueCustomers() {
cluster.setNumberOfUniqueCustomers(2);
ValidatorResult result = cTest.validate(cluster, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectUtiliztation() {
cluster.setUtilization("1%");
ValidatorResult result = cTest.validate(cluster, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectId() {
cluster.setId(2);
ValidatorResult result = cTest.validate(cluster, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
}
}