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.Mask; @RunWith(Parameterized.class) public class MaskAnnotationTest { @Parameterized.Parameter(0) public String mask; @Parameterized.Parameter(1) public boolean isValidMaskFormat; @Parameterized.Parameter(2) public boolean isValidMaskValue; private Validator validator; @Before public void setup() throws Exception { validator = ValidationUtils.getValidator(); } @Test public void checkCidrFormatAnnotation() { MaskContainer container = new MaskContainer(mask); Set<ConstraintViolation<MaskContainer>> result = validator.validate(container); if (!isValidMaskValue && isValidMaskFormat) { assertEquals("Failed to validate mask's error format: " + container.getMask(), EngineMessage.UPDATE_NETWORK_ADDR_IN_SUBNET_BAD_VALUE.name(), result.iterator().next().getMessage()); } else if (!isValidMaskFormat) { assertEquals("Failed to validate mask's error format: " + container.getMask(), EngineMessage.UPDATE_NETWORK_ADDR_IN_SUBNET_BAD_FORMAT.name(), result.iterator().next().getMessage()); } else { assertEquals("Failed to validate mask's format: " + container.getMask(), isValidMaskFormat, result.isEmpty()); } } @Test public void checkCidrNetworkAddressAnnotation() { MaskContainer container = new MaskContainer(mask); Set<ConstraintViolation<MaskContainer>> result = validator.validate(container); if (!isValidMaskFormat) { assertEquals("Failed to validate mask's network address error: " + container.getMask(), EngineMessage.UPDATE_NETWORK_ADDR_IN_SUBNET_BAD_FORMAT.name(), result.iterator().next().getMessage()); } else if (!isValidMaskValue) { assertEquals("Failed to validate mask's network address error: " + container.getMask(), EngineMessage.UPDATE_NETWORK_ADDR_IN_SUBNET_BAD_VALUE.name(), result.iterator().next().getMessage()); } else { assertEquals("Failed to validate mask's network address: " + container.getMask(), isValidMaskValue, result.isEmpty()); } } @Parameterized.Parameters public static Object[][] namesParams() { return new Object[][] { // Bad Format { "a.a.a.a", false, false }, { "//32", false, false }, { "33", false, false }, // Not A Valid Mask { "253.0.0.32", true, false }, // valid mask { "255.255.255.0", true, true }, { "15", true, true } }; } private static class MaskContainer { @Mask private final String mask; public MaskContainer(String mask) { this.mask = mask; } public String getMask() { return mask; } } }