package org.ovirt.engine.core.bll.network.cluster; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid; import java.util.Collections; import org.hamcrest.Matcher; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner.Strict; import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.errors.EngineMessage; @RunWith(Strict.class) public class AttachNetworkClusterValidatorTest extends NetworkClusterValidatorTestBase<AttachNetworkClusterValidator> { @Override protected AttachNetworkClusterValidator createValidator() { return new AttachNetworkClusterValidator(interfaceDao, networkDao, vdsDao, networkCluster); } @Test public void managementNetworkChangeValidNoChangeNonEmptyCluster() { testManagementNetworkChange(false, false, isValid()); } @Test public void managementNetworkChangeValidNoChangeEmptyCluster() { testManagementNetworkChange(false, true, isValid()); } @Test public void managementNetworkChangeValidEmptyCluster() { testManagementNetworkChange(true, true, isValid()); } @Test public void managementNetworkChangeInvalidNonEmptyCluster() { testManagementNetworkChange( true, false, failsWith(EngineMessage.ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_CANNOT_BE_CHANGED)); } private void testManagementNetworkChange(boolean managementAfter, boolean emptyCluster, Matcher<ValidationResult> expectedResult) { networkCluster.setManagement(managementAfter); when(vdsDao.getAllForCluster(TEST_CLUSTER_ID)).thenReturn(emptyCluster ? Collections.emptyList() : Collections.singletonList(null)); assertThat(validator.managementNetworkChange(), expectedResult); } }