package org.openstack.atlas.api.validation.validators;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.openstack.atlas.docs.loadbalancers.api.v1.Meta;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.openstack.atlas.api.validation.context.HttpRequestType.POST;
import static org.openstack.atlas.api.validation.context.HttpRequestType.PUT;
@RunWith(Enclosed.class)
public class LoadbalancerMetaValidatorTest {
private final static int MAX_KEY_LENGTH = 32;
private final static int MAX_VALUE_LENGTH = 256;
public static class WhenValidatingPost {
private Meta meta;
private MetaValidator validatorLoadbalancer;
@Before
public void standUp() {
validatorLoadbalancer = new MetaValidator();
meta = new Meta();
meta.setKey("metaKey1");
meta.setValue("metaValue1");
}
@Test
public void shouldAcceptValidLoadbalancerMeta() {
assertTrue(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenIdIsSet() {
meta.setId(1234);
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenKeyIsNull() {
meta.setKey(null);
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenKeyIsEmpty() {
meta.setKey("");
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenValueIsNull() {
meta.setValue(null);
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenValueIsEmpty() {
meta.setValue("");
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenKeyIsEqualToMaxLength() {
meta.setKey(createStringOfLength(MAX_KEY_LENGTH));
assertTrue(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenKeyIsLongerThanMaxLength() {
meta.setKey(createStringOfLength(MAX_KEY_LENGTH + 1));
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenValueIsEqualToMaxLength() {
meta.setValue(createStringOfLength(MAX_VALUE_LENGTH));
assertTrue(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
@Test
public void shouldRejectWhenValueIsLongerThanMaxLength() {
meta.setValue(createStringOfLength(MAX_VALUE_LENGTH + 1));
assertFalse(validatorLoadbalancer.validate(meta, POST).passedValidation());
}
}
public static class WhenValidatingPut {
private Meta meta;
private MetaValidator validatorLoadbalancer;
@Before
public void standUp() {
validatorLoadbalancer = new MetaValidator();
meta = new Meta();
meta.setValue("metaValue1");
}
@Test
public void shouldAcceptValidLoadbalancerMeta() {
assertTrue(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
@Test
public void shouldRejectWhenIdIsSet() {
meta.setId(1234);
assertFalse(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
@Test
public void shouldRejectWhenValueIsNull() {
meta.setValue(null);
assertFalse(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
@Test
public void shouldRejectWhenValueIsEmpty() {
meta.setValue("");
assertFalse(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
@Test
public void shouldRejectWhenValueIsEqualToMaxLength() {
meta.setValue(createStringOfLength(MAX_VALUE_LENGTH));
assertTrue(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
@Test
public void shouldRejectWhenValueIsLongerThanMaxLength() {
meta.setValue(createStringOfLength(MAX_VALUE_LENGTH + 1));
assertFalse(validatorLoadbalancer.validate(meta, PUT).passedValidation());
}
}
private static String createStringOfLength(int length) {
String string = new String();
for(int i=0; i < length; i++) {
string += "a";
}
return string;
}
}