package org.ovirt.engine.api.restapi.resource; import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.Response; import org.junit.Test; import org.ovirt.engine.api.model.Vm; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.scheduling.parameters.AffinityGroupCRUDParameters; import org.ovirt.engine.core.compat.Guid; public class BackendAffinityGroupVmsResourceTest extends AbstractBackendCollectionResourceTest<Vm, org.ovirt.engine.core.common.businessentities.VM, BackendAffinityGroupVmsResource> { private static final Guid AFFINITY_GROUP_ID = Guid.newGuid(); public BackendAffinityGroupVmsResourceTest() { super(new BackendAffinityGroupVmsResource(AFFINITY_GROUP_ID), null, ""); } @Override protected void setUpQueryExpectations(String query) throws Exception { assertEquals("", query); setUpGetEntityExpectations(true); } /** * Overriding this as the affinity groups collection doesn't support search queries */ @Override @Test public void testQuery() throws Exception { testList(); } @Test public void testAddVMToAffinityGroup() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpGetEntityExpectations(false); setUriInfo(setUpActionExpectations(VdcActionType.EditAffinityGroup, AffinityGroupCRUDParameters.class, new String[] {}, new Object[] {}, true, true)); Vm vm = new Vm(); vm.setId(GUIDS[0].toString()); Response response = collection.add(vm); assertEquals(200, response.getStatus()); } private void setUpGetEntityExpectations(boolean withVms) throws Exception { setUpGetEntityExpectations(VdcQueryType.GetAffinityGroupById, IdQueryParameters.class, new String[] { "Id" }, new Object[] { AFFINITY_GROUP_ID }, getAffinityGroup(withVms)); } private org.ovirt.engine.core.common.scheduling.AffinityGroup getAffinityGroup(boolean withVms) { org.ovirt.engine.core.common.scheduling.AffinityGroup affinityGroup = new org.ovirt.engine.core.common.scheduling.AffinityGroup(); affinityGroup.setVmIds(new ArrayList<>()); affinityGroup.setVmEntityNames(new ArrayList<>()); if (withVms) { for (int i = 0; i < NAMES.length; i++) { org.ovirt.engine.core.common.businessentities.VM entity = getEntity(i); affinityGroup.getVmIds().add(entity.getId()); affinityGroup.getVmEntityNames().add(entity.getName()); } } return affinityGroup; } @Override protected List<Vm> getCollection() { return collection.list().getVms(); } @Override protected void setUpQueryExpectations(String query, Object failure) throws Exception { setUpEntityQueryExpectations(VdcQueryType.GetAffinityGroupById, IdQueryParameters.class, new String[] {}, new Object[] {}, null, failure); } @Override protected void verifyModel(Vm model, int index) { assertEquals(GUIDS[index].toString(), model.getId()); assertEquals(NAMES[index], model.getName()); // overriding since vm doesn't has description //assertEquals(DESCRIPTIONS[index], model.getDescription()); verifyLinks(model); } @Override protected org.ovirt.engine.core.common.businessentities.VM getEntity(int index) { org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); vm.setId(GUIDS[index]); vm.setName(NAMES[index]); return vm; } }