package org.ovirt.engine.core.common.utils;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.ovirt.engine.core.common.validation.annotation.ValidNetworkLabelFormat;
@RunWith(Parameterized.class)
public class NetworkLabelFormatValidatorTest {
private Validator validator = ValidationUtils.getValidator();
@Parameterized.Parameter(1)
public boolean expectedResult;
@Parameterized.Parameter(0)
public Set<String> labels;
@Test
public void checkNetworkLabelFormat() {
NetworkLabelContainer labelContainer = new NetworkLabelContainer(labels);
Set<ConstraintViolation<NetworkLabelContainer>> validate = validator.validate(labelContainer);
assertEquals("Failed to validate " + labelContainer.getLabels(), expectedResult, validate.isEmpty());
}
@Parameterized.Parameters
public static Object[] ipAddressParams() {
return new Object[][] {
{ Collections.emptySet(), true },
{ null, true },
{ Collections.singleton("abc"), true },
{ new HashSet<>(Arrays.asList("abc", "xyz")), true },
{ Collections.singleton("abc-_sc"), true },
{ Collections.singleton(""), false },
{ Collections.singleton(" "), false },
{ Collections.singleton("abc*"), false },
{ new HashSet<>(Arrays.asList("aaa", "abc*")), false }
};
}
private static class NetworkLabelContainer {
@ValidNetworkLabelFormat
private Set<String> labels;
public NetworkLabelContainer(Set<String> labels) {
this.labels = labels;
}
public Set<String> getLabels() {
return labels;
}
}
}