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.api.validation.context.HttpRequestType;
import org.openstack.atlas.api.validation.results.ValidatorResult;
import org.openstack.atlas.docs.loadbalancers.api.v1.Metadata;
import org.openstack.atlas.docs.loadbalancers.api.v1.Meta;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@RunWith(Enclosed.class)
public class NodeMetadataValidatorTest {
public static class WhenValidatingPost {
private MetadataValidator validator;
private Metadata metadata;
private Meta meta1;
@Before
public void setUpValidMetadataObject() {
validator = new MetadataValidator();
metadata = new Metadata();
meta1 = new Meta();
meta1.setKey("metaKey1");
meta1.setValue("metaValue1");
metadata.getMetas().add(meta1);
}
@Test
public void shouldAcceptValidMetadataObject() {
ValidatorResult result = validator.validate(metadata, HttpRequestType.POST);
assertTrue(result.passedValidation());
}
@Test
public void shouldRejectNullMetadataObject() {
assertFalse(validator.validate(null, HttpRequestType.POST).passedValidation());
}
@Test
public void shouldRejectMetadataObjectWithNoMetas() {
assertFalse(validator.validate(new Metadata(), HttpRequestType.POST).passedValidation());
}
@Test
public void shouldRejectWhenPassingInDuplicateKeys() {
Meta metaWithDuplicateKey = meta1;
metadata.getMetas().add(metaWithDuplicateKey);
assertFalse(validator.validate(metadata, HttpRequestType.POST).passedValidation());
}
}
}