package org.ovirt.engine.api.restapi.resource; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.Image; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.core.common.action.ImportRepoImageParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.storage.ImageFileType; import org.ovirt.engine.core.common.businessentities.storage.RepoImage; import org.ovirt.engine.core.common.queries.GetImageByIdParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendStorageDomainImageResourceTest extends AbstractBackendSubResourceTest<Image, RepoImage, BackendStorageDomainImageResource> { protected static final Guid DOMAIN_ID = GUIDS[0]; protected static final Guid IMAGE_ID = GUIDS[1]; protected static final Guid STORAGE_POOL_ID = GUIDS[2]; protected static final Guid DESTINATION_DOMAIN_ID = GUIDS[3]; public BackendStorageDomainImageResourceTest() { super(new BackendStorageDomainImageResource(IMAGE_ID.toString(), new BackendStorageDomainImagesResource(DOMAIN_ID))); } @Test public void testGet() { setUriInfo(setUpBasicUriExpectations()); setUpEntityQueryExpectations(VdcQueryType.GetImageById, GetImageByIdParameters.class, new String[]{"StorageDomainId", "RepoImageId"}, new Object[]{DOMAIN_ID, IMAGE_ID.toString()}, getEntity(1)); Image image = resource.get(); verifyModelSpecific(image, 1); verifyLinks(image); } @Test public void testImport() throws Exception { setUpEntityQueryExpectations(VdcQueryType.GetStoragePoolsByStorageDomainId, IdQueryParameters.class, new String[]{"Id"}, new Object[]{DESTINATION_DOMAIN_ID}, getStoragePoolList()); setUriInfo(setUpActionExpectations(VdcActionType.ImportRepoImage, ImportRepoImageParameters.class, new String[]{"SourceRepoImageId", "SourceStorageDomainId", "StoragePoolId", "StorageDomainId"}, new Object[]{IMAGE_ID.toString(), DOMAIN_ID, STORAGE_POOL_ID, DESTINATION_DOMAIN_ID}, true, true, null, null, true)); Action action = new Action(); action.setStorageDomain(new StorageDomain()); action.getStorageDomain().setId(DESTINATION_DOMAIN_ID.toString()); verifyActionResponse(resource.doImport(action), "storagedomains/" + DOMAIN_ID + "/images/" + IMAGE_ID, false); } public static List<StoragePool> getStoragePoolList() { return new ArrayList<StoragePool>() { private static final long serialVersionUID = 4817230014440543623L; { StoragePool storagePool = new StoragePool(); storagePool.setId(STORAGE_POOL_ID); add(storagePool); } }; } @Override protected RepoImage getEntity(int index) { RepoImage entity = new RepoImage(); entity.setRepoImageId(GUIDS[index].toString()); entity.setFileType(ImageFileType.Disk); entity.setRepoImageName("RepoImage " + entity.getRepoImageId()); return entity; } @Override protected void verifyModel(Image model, int index) { verifyModelSpecific(model, index); verifyLinks(model); } static void verifyModelSpecific(Image model, int index) { assertEquals(GUIDS[index].toString(), model.getId()); } }