package org.ovirt.engine.core.common.utils;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.common.validation.MaskValidator;
@RunWith(MockitoJUnitRunner.class)
public class SubnetUtilsTest {
private static final String VALID_PREFIX = "VALID_PREFIX";
private static final String DIFFERENT_PREFIX = "DIFFERENT_PREFIX";
private static final String VALID_NETMASK_FORMAT = "VALID_NETMASK_FORMAT";
private static final String INVALID_NETMASK_FORMAT = "INVALID_NETMASK_FORMAT";
@Spy
private SubnetUtils underTest = SubnetUtils.getInstance();
@Mock
private MaskValidator mockedMaskValidator;
@Mock
private IPAddressConverter mockIpAddressConverter;
@Before
public void setup() {
when(underTest.getMaskValidator()).thenReturn(mockedMaskValidator);
when(underTest.getIpAddressConverter()).thenReturn(mockIpAddressConverter);
}
@Test
public void checkEqualNetmaskRepresentation(){
assertTrue(underTest.equalSubnet("255.255.255.255", "255.255.255.255"));
}
@Test
public void checkEqualPrefixRepresentation(){
assertTrue(underTest.equalSubnet("8", "8"));
}
@Test
public void checkNullSubnet() {
assertTrue(underTest.equalSubnet(null, null));
}
@Test
public void checkEqualSubnetStringAndIntegerRepresentation() {
when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true);
when(mockedMaskValidator.isPrefixValid(VALID_PREFIX)).thenReturn(true);
when(mockIpAddressConverter.convertPrefixToNetmask(VALID_PREFIX)).thenReturn(VALID_NETMASK_FORMAT);
assertTrue(underTest.equalSubnet(VALID_NETMASK_FORMAT, VALID_PREFIX));
}
@Test
public void checkDifferentSubnetStringAndIntegerRepresentation() {
when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true);
when(mockedMaskValidator.isPrefixValid(DIFFERENT_PREFIX)).thenReturn(true);
when(mockIpAddressConverter.convertPrefixToNetmask(DIFFERENT_PREFIX)).thenReturn(INVALID_NETMASK_FORMAT);
assertFalse(underTest.equalSubnet(VALID_NETMASK_FORMAT, DIFFERENT_PREFIX));
}
@Test
public void checkEqualSubnetIntegerAndStringRepresentation() {
when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true);
when(mockedMaskValidator.isPrefixValid(VALID_PREFIX)).thenReturn(true);
when(mockIpAddressConverter.convertPrefixToNetmask(VALID_PREFIX)).thenReturn(VALID_NETMASK_FORMAT);
assertTrue(underTest.equalSubnet(VALID_PREFIX, VALID_NETMASK_FORMAT));
}
@Test
public void checkDifferentSubnetIntegerAndStringRepresentation() {
when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true);
when(mockedMaskValidator.isPrefixValid(DIFFERENT_PREFIX)).thenReturn(true);
when(mockIpAddressConverter.convertPrefixToNetmask(DIFFERENT_PREFIX)).thenReturn(INVALID_NETMASK_FORMAT);
assertFalse(underTest.equalSubnet(DIFFERENT_PREFIX, VALID_NETMASK_FORMAT));
}
}