package org.ovirt.engine.core.bll;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.ovirt.engine.core.common.action.WatchdogParameters;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmDevice;
import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType;
import org.ovirt.engine.core.common.businessentities.VmWatchdog;
import org.ovirt.engine.core.common.businessentities.VmWatchdogAction;
import org.ovirt.engine.core.common.businessentities.VmWatchdogType;
import org.ovirt.engine.core.common.osinfo.OsRepository;
import org.ovirt.engine.core.common.utils.SimpleDependencyInjector;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.VmDao;
import org.ovirt.engine.core.dao.VmDeviceDao;
public class UpdateWatchdogCommandTest extends BaseCommandTest {
private VmWatchdogType vmWatchdogType = VmWatchdogType.i6300esb;
private static final Set<VmWatchdogType> WATCHDOG_MODELS = Collections.singleton(VmWatchdogType.i6300esb);
@Mock
private VmDao vmDaoMock;
@Mock
private VmDeviceDao vmDeviceDaoMock;
@InjectMocks
private UpdateWatchdogCommand command = new UpdateWatchdogCommand(new WatchdogParameters(), null);
@BeforeClass
public static void setUpOsRepository() {
OsRepository osRepository = mock(OsRepository.class);
SimpleDependencyInjector.getInstance().bind(OsRepository.class, osRepository);
when(osRepository.getVmWatchdogTypes(anyInt(), any())).thenReturn(WATCHDOG_MODELS);
}
@Test
public void getSpecParams() {
command.getParameters().setAction(VmWatchdogAction.RESET);
command.getParameters().setModel(vmWatchdogType);
HashMap<String, Object> specParams = command.getSpecParams();
assertNotNull(specParams);
assertEquals("i6300esb", specParams.get("model"));
assertEquals("reset", specParams.get("action"));
}
@Test
public void testValidateNoVM() {
command.getParameters().setId(new Guid("a09f57b1-5739-4352-bf88-a6f834ed46db"));
command.getParameters().setAction(VmWatchdogAction.PAUSE);
command.getParameters().setModel(vmWatchdogType);
assertFalse(command.validate());
}
@Test
public void testValidate() {
Guid vmGuid = new Guid("a09f57b1-5739-4352-bf88-a6f834ed46db");
command.getParameters().setId(vmGuid);
command.getParameters().setAction(VmWatchdogAction.PAUSE);
command.getParameters().setModel(vmWatchdogType);
when(vmDaoMock.get(vmGuid)).thenReturn(new VM());
when(vmDeviceDaoMock.getVmDeviceByVmIdAndType(vmGuid, VmDeviceGeneralType.WATCHDOG)).thenReturn(Collections.singletonList(new VmDevice()));
VmWatchdog vmWatchdog = spy(new VmWatchdog());
when(vmWatchdog.getModel()).thenReturn(vmWatchdogType);
assertTrue(command.validate());
}
}