package org.ovirt.engine.ui.uicommonweb.validation;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.ovirt.engine.ui.uicommonweb.validation.ValidationResult.fail;
import static org.ovirt.engine.ui.uicommonweb.validation.ValidationResult.ok;
import org.junit.Test;
public class HostAddressValidationTest {
private static final String TEST_VIOLATION_MESSAGE = "test violation message"; //$NON-NLS-1$
@Test
public void testEmptyNotAllowed() {
doTest("", false, false, false); //$NON-NLS-1$
}
@Test
public void testEmptyNotAllowedByDefault() {
doTest("", false); //$NON-NLS-1$
}
@Test
public void testEmptyAllowed() {
doTest("", true, true, false); //$NON-NLS-1$
}
@Test
public void testNull() {
doTest(null, false);
}
@Test
public void testNullAllowed() {
doTest(null, true, true, false);
}
@Test
public void testInvalidAddress() {
doTest("123,abc", false); //$NON-NLS-1$
}
@Test
public void testTrailingSpace() {
doTest("1.2.3.4 ", true); //$NON-NLS-1$
}
@Test
public void testLeadingSpace() {
doTest(" 1.2.3.4", true); //$NON-NLS-1$
}
@Test
public void testIpv4Address() {
doTest("1.2.3.4", true); //$NON-NLS-1$
}
@Test
public void testStdIpv6AddressAllowed() {
doTest("1111:2222:3333:4444:0555:6:aaaa:ffff", true); //$NON-NLS-1$
}
@Test
public void testStdIpv6AddressNotAllowed() {
doTest("1111:2222:3333:4444:0555:6:aaaa:ffff", false, false, false); //$NON-NLS-1$
}
@Test
public void testStdIpv6AddressWitSubnetPrefix() {
doTest("1111:2222:3333:4444:0555:6:aaaa:ffff/64", false); //$NON-NLS-1$
}
@Test
public void testLeadingZeroesInAnIpv6Block() {
doTest("2001:db8::2:0001", true); //$NON-NLS-1$
}
@Test
public void testCompressed1Ipv6AddressAllowed() {
doTest("::", true); //$NON-NLS-1$
}
@Test
public void testCompressed2Ipv6AddressAllowed() {
doTest("1::2", true); //$NON-NLS-1$
}
@Test
public void testCompressed1Ipv6AddressNotAllowed() {
doTest("::", false, false, false); //$NON-NLS-1$
}
@Test
public void testCompressed2Ipv6AddressNotAllowed() {
doTest("1::2", false, true, false); //$NON-NLS-1$
}
@Test
public void testCompressedIpv6AddressWitSubnetPrefix() {
doTest("::/128", false); //$NON-NLS-1$
}
@Test
public void testHostname() {
doTest("test.host.name", true); //$NON-NLS-1$
}
private void doTest(String value, boolean valid) {
doTest(value, valid, new MyHostAddressValidation());
}
private void doTest(String value, boolean valid, boolean acceptEmpty, boolean acceptIpv6) {
doTest(value, valid, new MyHostAddressValidation(acceptEmpty, acceptIpv6));
}
private void doTest(String value, boolean valid, HostAddressValidation underTest) {
assertThat(underTest.validate(value), is(valid ? ok() : fail(TEST_VIOLATION_MESSAGE)));
}
private static class MyHostAddressValidation extends HostAddressValidation {
private MyHostAddressValidation() {
super(TEST_VIOLATION_MESSAGE);
}
private MyHostAddressValidation(boolean acceptEmptyInput, boolean supportIpv6) {
super(acceptEmptyInput, supportIpv6, TEST_VIOLATION_MESSAGE);
}
}
}