package org.ovirt.engine.core.common.validation; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.core.common.validation.annotation.Ipv6; @RunWith(MockitoJUnitRunner.class) public class Ipv6ConstraintTest { @Test public void testStandardIsValid() { doTest("0123:1234:7:8:12CD:0ABC:ABcd:cdef", true); } @Test public void testHexCompressedIsValid() { doTest("1234::cdef", true); } @Test public void testNullIsValid() { doTest(null, true); } @Test public void testIpv4IsInvalid() { doTest("1.2.3.4", false); } @Test public void testEmptyStringIsInvalid() { doTest("", false); } //TODO MM: Dear code reviewer! To keep test and make it more reliable, we're not testing one constraint, but usage of such constraint. private void doTest(String input, boolean expectedResult) { Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); Set<ConstraintViolation<TestObject>> validationResult = validator.validate(new TestObject(input)); boolean valid = validationResult.isEmpty(); assertThat(valid, is(expectedResult)); } public static class TestObject { @Ipv6 private final String address; public TestObject(String address) { this.address = address; } public String getAddress() { return address; } } }