package org.ovirt.engine.core.common.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; 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.businessentities.network.VmNic; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.common.validation.group.UpdateEntity; @RunWith(Parameterized.class) public class MacAddressPatternTest { private static final Class<?>[] ALL_GROUPS = { CreateEntity.class, UpdateEntity.class }; private static final Class<?>[] CREATE_GROUP = { CreateEntity.class }; private static final Class<?>[] UPDATE_GROUP = { UpdateEntity.class }; private Validator validator = ValidationUtils.getValidator(); @Parameterized.Parameter(0) public String address; @Parameterized.Parameter(1) public boolean validMacAddress; @Parameterized.Parameter(2) public Class<?>[] groups; @Parameterized.Parameter(3) public String message; @Test public void checkIPAdress() { Set<ConstraintViolation<VmNic>> validate = validator.validate(createVmNic(), groups); assertEquals(validMacAddress, validate.isEmpty()); if (validMacAddress) { assertTrue(validate.isEmpty()); } else { assertEquals(1, validate.size()); assertEquals(message, validate.iterator().next().getMessage()); } } private VmNic createVmNic() { VmNic nic = new VmNic(); nic.setName("nic1"); nic.setMacAddress(address); return nic; } @Parameterized.Parameters public static Object[][] ipAddressParams() { return new Object[][] { { "aa:aa:aa:aa:aa:aa", true, ALL_GROUPS, null }, { "AA:AA:AA:AA:AA:AA", true, ALL_GROUPS, null }, { "ff:ff:ff:ff:ff:ff", false, ALL_GROUPS, VmNic.VALIDATION_VM_NETWORK_MAC_ADDRESS_MULTICAST }, { "FF:FF:FF:FF:FF:FF", false, ALL_GROUPS, VmNic.VALIDATION_VM_NETWORK_MAC_ADDRESS_MULTICAST }, { "02:00:00:00:00:00", true, ALL_GROUPS, null }, { "", true, CREATE_GROUP, null }, { "", false, UPDATE_GROUP, VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID }, { "00:00:00:00:00:00", false, ALL_GROUPS, VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID }, { "100:00:00:00:00:00", false, ALL_GROUPS, VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID }, { "00:00:00:00:00:001", false, ALL_GROUPS, VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID }, { "01:00:00:00:00:00", false, ALL_GROUPS, VmNic.VALIDATION_VM_NETWORK_MAC_ADDRESS_MULTICAST }, { "02:00:00:00:XX:XX", false, ALL_GROUPS, VmNic.VALIDATION_MESSAGE_MAC_ADDRESS_INVALID }, }; } }