package org.ovirt.engine.core.bll.storage.repoimage; import static org.mockito.Mockito.when; import java.util.Collections; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.core.bll.ValidateTestUtils; import org.ovirt.engine.core.common.action.ExportRepoImageParameters; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.storage.ImageStatus; import org.ovirt.engine.core.common.businessentities.storage.LunDisk; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.DiskDao; import org.ovirt.engine.core.dao.VmDao; /** A test case for {@link ExportRepoImageCommand} */ @RunWith(MockitoJUnitRunner.class) public class ExportRepoImageCommandTest extends ImportExportRepoImageCommandTest { @Mock private VmDao vmDao; @Mock private DiskDao diskDao; @InjectMocks protected ExportRepoImageCommand<ExportRepoImageParameters> cmd = new ExportRepoImageCommand<>(new ExportRepoImageParameters(diskImageGroupId, repoStorageDomainId), null); protected VM vm; @Override @Before public void setUp() { super.setUp(); vm = new VM(); vm.setStatus(VMStatus.Down); when(vmDao.getVmsListForDisk(diskImageId, Boolean.FALSE)).thenReturn(Collections.singletonList(vm)); when(diskDao.get(diskImageGroupId)).thenReturn(diskImage); } @Test public void testValidateSuccess() { ValidateTestUtils.runAndAssertValidateSuccess(cmd); } @Test public void testValidateLunDisk() { when(diskDao.get(diskImageGroupId)).thenReturn(new LunDisk()); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_NOT_SUPPORTED_DISK_STORAGE_TYPE); } @Test public void testValidateImageDoesNotExist() { when(diskDao.get(diskImageGroupId)).thenReturn(null); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_DISK_NOT_EXIST); } @Test public void testValidateDomainInMaintenance() { diskStorageDomain.setStatus(StorageDomainStatus.Maintenance); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL2); } @Test public void testValidateImageHasParent() { diskImage.setParentId(Guid.newGuid()); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_DISK_CONFIGURATION_NOT_SUPPORTED); } @Test public void testValidateVmRunning() { vm.setStatus(VMStatus.Up); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_VM_IS_RUNNING); } @Test public void testValidateImageLocked() { diskImage.setImageStatus(ImageStatus.LOCKED); ValidateTestUtils.runAndAssertValidateFailure(cmd, EngineMessage.ACTION_TYPE_FAILED_DISKS_LOCKED); } }