package org.ovirt.engine.core.bll;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.ovirt.engine.core.bll.storage.ovfstore.OvfHelper;
import org.ovirt.engine.core.common.businessentities.OvfEntityData;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmEntityType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.UnregisteredOVFDataDao;
import org.ovirt.engine.core.utils.ovf.OvfReaderException;
/** A test case for the {@link GetUnregisteredVmsQuery} class. */
public class GetUnregisteredVmsQueryTest extends AbstractQueryTest<IdQueryParameters, GetUnregisteredVmsQuery<? extends IdQueryParameters>> {
@Mock
private UnregisteredOVFDataDao unregisteredOVFDataDaoMock;
Guid storageDomainId = Guid.newGuid();
VmEntityType entityType = VmEntityType.VM;
Guid newVmGuid = Guid.newGuid();
Guid newVmGuid2 = Guid.newGuid();
@Mock
private OvfHelper ovfHelperMock;
@Before
@Override
public void setUp() throws Exception {
super.setUp();
mockQueryParameters();
setUpQueryEntities();
}
@Test
public void testExecuteQueryGetAllEntitiesCommand() throws OvfReaderException {
getQuery().executeQueryCommand();
@SuppressWarnings("unchecked")
List<VM> result = getQuery().getQueryReturnValue().getReturnValue();
assertEquals("Wrong number of VMs in result", 2, result.size());
}
private void mockQueryParameters() {
// Mock the Query Parameters
when(getQueryParameters().getId()).thenReturn(storageDomainId);
}
private void setUpQueryEntities() throws OvfReaderException {
// Set up the expected result
VM vmReturnForOvf = new VM();
vmReturnForOvf.setId(newVmGuid);
vmReturnForOvf.setName("Name");
String ovfData = new String("OVF data for the first VM");
OvfEntityData ovfEntityData =
new OvfEntityData(vmReturnForOvf.getId(),
vmReturnForOvf.getName(),
VmEntityType.VM,
null,
null,
storageDomainId,
ovfData,
null);
List<OvfEntityData> expectedResultQuery1 = new ArrayList<>();
expectedResultQuery1.add(ovfEntityData);
List<OvfEntityData> expectedResult = new ArrayList<>();
expectedResult.add(ovfEntityData);
VM vmReturnForOvf2 = new VM();
vmReturnForOvf2.setId(newVmGuid2);
vmReturnForOvf2.setName("Name2");
String ovfData2 = new String("OVF data for the second VM");
OvfEntityData ovfEntityData2 =
new OvfEntityData(vmReturnForOvf2.getId(),
vmReturnForOvf2.getName(),
VmEntityType.VM,
null,
null,
storageDomainId,
ovfData2,
null);
expectedResult.add(ovfEntityData2);
List<OvfEntityData> expectedResultQuery2 = new ArrayList<>();
expectedResultQuery2.add(ovfEntityData);
// Mock the Daos
when(unregisteredOVFDataDaoMock.getAllForStorageDomainByEntityType(storageDomainId, entityType)).thenReturn(expectedResult);
when(unregisteredOVFDataDaoMock.getByEntityIdAndStorageDomain(newVmGuid2, storageDomainId)).thenReturn(expectedResultQuery2);
when(unregisteredOVFDataDaoMock.getByEntityIdAndStorageDomain(newVmGuid, storageDomainId)).thenReturn(expectedResultQuery1);
// Mock OVF
when(ovfHelperMock.readVmFromOvf(ovfData)).thenReturn(vmReturnForOvf);
when(ovfHelperMock.readVmFromOvf(ovfData2)).thenReturn(vmReturnForOvf2);
}
}