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.VmEntityType; import org.ovirt.engine.core.common.businessentities.VmTemplate; 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 GetUnregisteredVmTemplatesQuery} class. */ public class GetUnregisteredVmTemplatesQueryTest extends AbstractQueryTest<IdQueryParameters, GetUnregisteredVmTemplatesQuery<? extends IdQueryParameters>> { @Mock private UnregisteredOVFDataDao unregisteredOVFDataDaoMock; Guid storageDomainId = Guid.newGuid(); VmEntityType entityType = VmEntityType.TEMPLATE; Guid newVmTemplateGuid = Guid.newGuid(); Guid newVmTemplateGuid2 = 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<VmTemplate> result = getQuery().getQueryReturnValue().getReturnValue(); assertEquals("Wrong number of Templates 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 VmTemplate VmTemplateReturnForOvf = new VmTemplate(); VmTemplateReturnForOvf.setId(newVmTemplateGuid); VmTemplateReturnForOvf.setName("Name"); String ovfData = new String("OVF data for the first Template"); OvfEntityData ovfEntityData = new OvfEntityData(VmTemplateReturnForOvf.getId(), VmTemplateReturnForOvf.getName(), VmEntityType.TEMPLATE, null, null, storageDomainId, ovfData, null); List<OvfEntityData> expectedResult = new ArrayList<>(); List<OvfEntityData> expectedResultQuery1 = new ArrayList<>(); expectedResultQuery1.add(ovfEntityData); expectedResult.add(ovfEntityData); VmTemplate VmTemplateReturnForOvf2 = new VmTemplate(); VmTemplateReturnForOvf2.setId(newVmTemplateGuid2); VmTemplateReturnForOvf2.setName("Name2"); String ovfData2 = new String("OVF data for the second Template"); OvfEntityData ovfEntityData2 = new OvfEntityData(VmTemplateReturnForOvf2.getId(), VmTemplateReturnForOvf2.getName(), VmEntityType.TEMPLATE, 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(newVmTemplateGuid, storageDomainId)).thenReturn(expectedResultQuery1); when(unregisteredOVFDataDaoMock.getByEntityIdAndStorageDomain(newVmTemplateGuid2, storageDomainId)).thenReturn(expectedResultQuery2); // Mock OVF when(ovfHelperMock.readVmTemplateFromOvf(ovfData)).thenReturn(VmTemplateReturnForOvf); when(ovfHelperMock.readVmTemplateFromOvf(ovfData2)).thenReturn(VmTemplateReturnForOvf2); } }