package org.ovirt.engine.core.common.utils; import static org.junit.Assert.assertEquals; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validator; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.common.validation.annotation.Cidr; @RunWith(Parameterized.class) public class CidrAnnotationTest { @Parameterized.Parameter(0) public String cidr; @Parameterized.Parameter(1) public boolean validCidrFormatExpectedResult; @Parameterized.Parameter(2) public boolean validNetworkAddressExpectedResult; private Validator validator; @Before public void setup() throws Exception { validator = ValidationUtils.getValidator(); } @Test public void checkCidrFormatAnnotation() { CidrContainer container = new CidrContainer(cidr); Set<ConstraintViolation<CidrContainer>> result = validator.validate(container); if (!validNetworkAddressExpectedResult && validCidrFormatExpectedResult) { assertEquals("Failed to validate CIDR's error format: " + container.getCidr(), EngineMessage.CIDR_NOT_NETWORK_ADDRESS.name(), result.iterator().next().getMessage()); } else if (!validCidrFormatExpectedResult) { assertEquals("Failed to validate CIDR's error format: " + container.getCidr(), EngineMessage.BAD_CIDR_FORMAT.name(), result.iterator().next().getMessage()); } else { assertEquals("Failed to validate CIDR's format: " + container.getCidr(), validCidrFormatExpectedResult, result.isEmpty()); } } @Test public void checkCidrNetworkAddressAnnotation() { CidrContainer container = new CidrContainer(cidr); Set<ConstraintViolation<CidrContainer>> result = validator.validate(container); if (!validCidrFormatExpectedResult) { assertEquals("Failed to validate CIDR's network address error: " + container.getCidr(), EngineMessage.BAD_CIDR_FORMAT.name(), result.iterator().next().getMessage()); } else if (!validNetworkAddressExpectedResult) { assertEquals("Failed to validate CIDR's network address error: " + container.getCidr(), EngineMessage.CIDR_NOT_NETWORK_ADDRESS.name(), result.iterator().next().getMessage()); } else { assertEquals("Failed to validate CIDR's network address: " + container.getCidr(), validNetworkAddressExpectedResult, result.isEmpty()); } } @Parameterized.Parameters public static Object[][] namesParams() { return new Object[][] { // Bad Format { "a.a.a.a", false, false }, // Not A Network address { "253.0.0.32/26", true, false }, // valid CIDR { "255.255.255.255/32", true, true }, }; } private static class CidrContainer { @Cidr private final String cidr; public CidrContainer(String cidr) { this.cidr = cidr; } public String getCidr() { return cidr; } } }