package org.ovirt.engine.core.bll.storage.connection.iscsibond;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.bll.AbstractQueryTest;
import org.ovirt.engine.core.common.businessentities.IscsiBond;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.IscsiBondDao;
@RunWith(MockitoJUnitRunner.class)
public class GetIscsiBondByIdQueryTest extends
AbstractQueryTest<IdQueryParameters, GetIscsiBondByIdQuery<IdQueryParameters>> {
@Mock
private IscsiBondDao iscsiBondDao;
Guid iscsiBondId = Guid.newGuid();
@Test
public void testExecuteQueryCommand() {
IscsiBond iscsiBond = mockIscsiBond();
when(getQueryParameters().getId()).thenReturn(iscsiBondId);
when(iscsiBondDao.get(iscsiBondId)).thenReturn(iscsiBond);
// Mock Networks and Storage Server Connections
List<Guid> networks = new ArrayList<>();
List<String> storageServerConnections = new ArrayList<>();
mockNetworksAndStorages(iscsiBondId, networks, storageServerConnections);
getQuery().executeQueryCommand();
IscsiBond result = getQuery().getQueryReturnValue().getReturnValue();
assertNotNull(result);
assertNotNull(iscsiBond.getNetworkIds());
assertEquals(0, iscsiBond.getNetworkIds().size());
assertNotNull(iscsiBond.getStorageConnectionIds());
assertEquals(0, iscsiBond.getStorageConnectionIds().size());
}
@Test
public void testExecuteQueryWithStoragesAndNetworksCommand() {
IscsiBond iscsiBond = mockIscsiBond();
when(getQueryParameters().getId()).thenReturn(iscsiBondId);
when(iscsiBondDao.get(iscsiBondId)).thenReturn(iscsiBond);
// Mock Networks and Storage Server Connections
List<Guid> networks = new ArrayList<>();
Guid networkId = Guid.newGuid();
networks.add(networkId);
List<String> storageServerConnections = new ArrayList<>();
String connectionId = Guid.newGuid().toString();
storageServerConnections.add(connectionId);
mockNetworksAndStorages(iscsiBondId, networks, storageServerConnections);
getQuery().executeQueryCommand();
IscsiBond result = getQuery().getQueryReturnValue().getReturnValue();
assertNotNull(result);
assertNotNull(iscsiBond.getNetworkIds());
assertEquals(1, iscsiBond.getNetworkIds().size());
assertEquals(iscsiBond.getNetworkIds().get(0), networkId);
assertNotNull(iscsiBond.getStorageConnectionIds());
assertEquals(1, iscsiBond.getStorageConnectionIds().size());
assertEquals(iscsiBond.getStorageConnectionIds().get(0), connectionId);
}
@Test
public void testExecuteQueryWithNotExistingIscsiBond() {
when(getQueryParameters().getId()).thenReturn(iscsiBondId);
getQuery().executeQueryCommand();
IscsiBond result = getQuery().getQueryReturnValue().getReturnValue();
assertNull(result);
}
private IscsiBond mockIscsiBond() {
IscsiBond iscsiBond = new IscsiBond();
iscsiBond.setId(iscsiBondId);
return iscsiBond;
}
private void mockNetworksAndStorages(Guid iscsiBondId, List<Guid> networks, List<String> storageServerConnections) {
when(iscsiBondDao.getNetworkIdsByIscsiBondId(iscsiBondId)).thenReturn(networks);
when(iscsiBondDao.getStorageConnectionIdsByIscsiBondId(iscsiBondId)).thenReturn(storageServerConnections);
}
}