package com.sequenceiq.cloudbreak.controller.validation;
import javax.validation.ConstraintValidatorContext;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.BDDMockito;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.sequenceiq.cloudbreak.validation.SubnetValidator;
import com.sequenceiq.cloudbreak.validation.ValidSubnet;
@RunWith(MockitoJUnitRunner.class)
public class SubnetValidatorTest extends AbstractValidatorTest {
@InjectMocks
private SubnetValidator underTest;
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Mock
private ValidSubnet validSubnet;
@Before
public void setUp() {
underTest.initialize(validSubnet);
BDDMockito.given(constraintValidatorContext.buildConstraintViolationWithTemplate(Matchers.anyString())).willReturn(getConstraintViolationBuilder());
}
@Test
public void validSubnet10Per8ReturnTrue() {
Assert.assertTrue(underTest.isValid("10.0.0.0/8", constraintValidatorContext));
}
@Test
public void validSubnet172Dot16Per12ReturnTrue() {
Assert.assertTrue(underTest.isValid("172.16.0.0/12", constraintValidatorContext));
}
@Test
public void validSubnet192Dot168Per16ReturnTrue() {
Assert.assertTrue(underTest.isValid("192.168.0.0/16", constraintValidatorContext));
}
@Test
public void validSubnetNullReturnTrue() {
Assert.assertTrue(underTest.isValid(null, constraintValidatorContext));
}
@Test
public void inValidSubnetEmptyReturnFalse() {
Assert.assertFalse(underTest.isValid("", constraintValidatorContext));
}
@Test
public void inValidSubnetNetmaskMissingWillReturnFalse() {
Assert.assertFalse(underTest.isValid("0.0.0.0", constraintValidatorContext));
}
@Test
public void inValidSubnetNonRfc1918WillReturnFalse() {
Assert.assertFalse(underTest.isValid("172.32.0.0/12", constraintValidatorContext));
}
@Test
public void inValidSubnetNetmaskHighWillReturnFalse() {
Assert.assertFalse(underTest.isValid("0.0.0.0/42", constraintValidatorContext));
}
}