package org.ovirt.engine.core.bll.snapshots;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.ovirt.engine.core.bll.BaseCommandTest;
import org.ovirt.engine.core.bll.ValidateTestUtils;
import org.ovirt.engine.core.common.action.TryBackToAllSnapshotsOfVmParameters;
import org.ovirt.engine.core.common.businessentities.Snapshot;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VMStatus;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.SnapshotDao;
import org.ovirt.engine.core.dao.VmDao;
/** A test case for the {@link TryBackToAllSnapshotsOfVmCommand} class. */
public class TryBackToAllSnapshotsOfVmCommandTest extends BaseCommandTest {
@Spy
@InjectMocks
private TryBackToAllSnapshotsOfVmCommand<TryBackToAllSnapshotsOfVmParameters> cmd =
new TryBackToAllSnapshotsOfVmCommand<>(
new TryBackToAllSnapshotsOfVmParameters(Guid.newGuid(), Guid.newGuid()), null);
@Mock
private SnapshotDao snapshotDao;
@Mock
private VmDao vmDao;
private VM vm;
@Before
public void setUp() {
vm = new VM();
vm.setId(cmd.getParameters().getVmId());
when(vmDao.get(cmd.getParameters().getVmId())).thenReturn(vm);
Snapshot snapshot = new Snapshot();
snapshot.setId(cmd.getParameters().getDstSnapshotId());
snapshot.setVmId(cmd.getParameters().getVmId());
when(snapshotDao.get(cmd.getParameters().getDstSnapshotId())).thenReturn(snapshot);
doNothing().when(cmd).updateVmDisksFromDb();
}
@Test
public void testValidateVmNotDown() {
vm.setStatus(VMStatus.Up);
ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_VM_IS_NOT_DOWN);
}
@Test
public void testValidateWithEmptySnapshotGuid() {
cmd.getParameters().setDstSnapshotId(Guid.Empty);
ValidateTestUtils.runAndAssertValidateFailure(cmd,
EngineMessage.ACTION_TYPE_FAILED_CORRUPTED_VM_SNAPSHOT_ID);
}
}