package org.ovirt.engine.core.bll; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VdsStatic; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.RandomUtils; /** A test case for the {@link VdsHandler} class. */ public class VdsHandlerTest { private VdsHandler vdsHandler = new VdsHandler(); @Before public void setUp() { vdsHandler.init(); } @Test public void testValidUpdateOfEditableFieldOnRunningHost() { // Given VdsStatic src = new VdsStatic(); src.setName(RandomUtils.instance().nextString(10)); VdsStatic dest = new VdsStatic(); dest.setName(RandomUtils.instance().nextString(10)); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Up); // Then assertTrue("Update should be valid for different names", updateIsValid); } @Test public void testInvalidUpdateOfNonEditableFieldOnRunningHost() { // Given VdsStatic src = new VdsStatic(); src.setServerSslEnabled(true); VdsStatic dest = new VdsStatic(); dest.setServerSslEnabled(false); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Up); // Then assertFalse("Update should not be valid for different server SSL enabled states", updateIsValid); } @Test public void testInvalidUpdateOfStatusRestrictedEditableFieldOnRunningHost() { // Given VdsStatic src = new VdsStatic(); src.setClusterId(Guid.newGuid()); VdsStatic dest = new VdsStatic(); dest.setClusterId(Guid.newGuid()); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Up); // Then assertFalse("Update should not be valid for different cluster IDs on a running host", updateIsValid); } @Test public void testValidUpdateOfStatusRestrictedEditableFieldOnDownHost() { // Given int srcSshPort = 22; int destSshPort = 23; VdsStatic src = new VdsStatic(); src.setSshPort(srcSshPort); VdsStatic dest = new VdsStatic(); dest.setSshPort(destSshPort); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Down); // Then assertTrue("Update should be valid for different SSH ports in Down status", updateIsValid); } @Test public void testValidUpdateOfEditableFieldOnDownHost() { // Given VdsStatic src = new VdsStatic(); src.setName(RandomUtils.instance().nextString(10)); VdsStatic dest = new VdsStatic(); dest.setName(RandomUtils.instance().nextString(10)); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Down); // Then assertTrue("Update should be valid for different names in down status", updateIsValid); } @Test public void testUpdateNonEditableFieldOnDownHost() { // Given VdsStatic src = new VdsStatic(); src.setServerSslEnabled(true); VdsStatic dest = new VdsStatic(); dest.setServerSslEnabled(false); // When boolean updateIsValid = vdsHandler.isUpdateValid(src, dest, VDSStatus.Down); // Then assertFalse("Update should not be valid for different server SSL enabled states", updateIsValid); } }