package org.ovirt.engine.api.restapi.resource; import java.util.ArrayList; import java.util.List; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.junit.Test; import org.ovirt.engine.core.common.action.EditIscsiBondParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.IscsiBond; 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 BackendIscsiBondNetworkResourceTest extends AbstractBackendNetworkResourceTest<BackendIscsiBondNetworkResource> { protected static final Guid ISCSI_BOND_ID = GUIDS[1]; protected static final Guid NETWORK_ID = GUIDS[2]; public BackendIscsiBondNetworkResourceTest() { super(new BackendIscsiBondNetworkResource(GUIDS[2].toString(), new BackendIscsiBondNetworksResource(ISCSI_BOND_ID.toString()))); } @Test public void testGet() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpEntityQueryExpectations(1, getIscsiBondContainingNetwork()); setUpEntityQueryExpectations(VdcQueryType.GetNetworkById, IdQueryParameters.class, new String[] { "Id" }, new Object[] { NETWORK_ID }, getEntityList()); verifyModel(resource.get(), 0); } @Test public void testGetWithInvalidNetworkId() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpEntityQueryExpectations(1, getIscsiBondWithNoMatchingNetworks()); try { resource.get(); fail("expected WebApplicationException"); } catch (WebApplicationException wae) { verifyNotFoundException(wae); } } @Test public void testGetNetworkNotFound() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpEntityQueryExpectations(1, getIscsiBondContainingNetwork()); List<org.ovirt.engine.core.common.businessentities.network.Network> entities = new ArrayList<>(); setUpEntityQueryExpectations(VdcQueryType.GetNetworkById, IdQueryParameters.class, new String[] { "Id" }, new Object[] { NETWORK_ID }, entities); try { resource.get(); fail("expected WebApplicationException"); } catch (WebApplicationException wae) { verifyNotFoundException(wae); } } @Test public void testRemove() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpEntityQueryExpectations(2, getIscsiBondContainingNetwork()); setUpEntityQueryExpectations( VdcQueryType.GetNetworkById, IdQueryParameters.class, new String[] { "Id" }, new Object[] { NETWORK_ID }, getEntityList() ); setUpActionExpectations( VdcActionType.EditIscsiBond, EditIscsiBondParameters.class, new String[] { "IscsiBond" }, new Object[] { getIscsiBondWithNoNetworks() }, true, true, null ); Response response = resource.remove(); assertNotNull(response); assertEquals(200, response.getStatus()); } protected void setUpEntityQueryExpectations(int times, IscsiBond iscsiBond) throws Exception { while (times-- > 0) { setUpEntityQueryExpectations(VdcQueryType.GetIscsiBondById, IdQueryParameters.class, new String[]{"Id"}, new Object[]{ISCSI_BOND_ID}, iscsiBond); } } private org.ovirt.engine.core.common.businessentities.IscsiBond getIscsiBondContainingNetwork() { org.ovirt.engine.core.common.businessentities.IscsiBond iscsiBond = new org.ovirt.engine.core.common.businessentities.IscsiBond(); iscsiBond.setId(ISCSI_BOND_ID); iscsiBond.getNetworkIds().add(NETWORK_ID); return iscsiBond; } private org.ovirt.engine.core.common.businessentities.IscsiBond getIscsiBondWithNoMatchingNetworks() { org.ovirt.engine.core.common.businessentities.IscsiBond iscsiBond = new org.ovirt.engine.core.common.businessentities.IscsiBond(); iscsiBond.setId(ISCSI_BOND_ID); iscsiBond.getNetworkIds().add(GUIDS[0]); return iscsiBond; } private org.ovirt.engine.core.common.businessentities.IscsiBond getIscsiBondWithNoNetworks() { org.ovirt.engine.core.common.businessentities.IscsiBond iscsiBond = new org.ovirt.engine.core.common.businessentities.IscsiBond(); iscsiBond.setId(ISCSI_BOND_ID); return iscsiBond; } }