package org.ovirt.engine.core.bll.provider.network;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
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.bll.provider.ProviderProxyFactory;
import org.ovirt.engine.core.common.businessentities.Provider;
import org.ovirt.engine.core.common.businessentities.Provider.AdditionalProperties;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StoragePoolDao;
import org.ovirt.engine.core.dao.provider.ProviderDao;
@RunWith(MockitoJUnitRunner.class)
public class GetAllExternalNetworksOnProviderQueryTest
extends AbstractQueryTest<IdQueryParameters, GetAllExternalNetworksOnProviderQuery<IdQueryParameters>> {
@Mock
private Provider<AdditionalProperties> networkProvider;
@Mock
private ProviderDao providerDao;
@Mock
private StoragePoolDao dcDao;
@Mock
private ProviderProxyFactory providerProxyFactory;
@Mock
private NetworkProviderProxy client;
@Test
@SuppressWarnings("unchecked")
public void testExecuteQueryCommand() {
when(params.getId()).thenReturn(mock(Guid.class));
when((Provider<AdditionalProperties>) providerDao.get(any(Guid.class))).thenReturn(networkProvider);
when(getQuery().getProviderProxyFactory()).thenReturn(providerProxyFactory);
when(providerProxyFactory.create(networkProvider)).thenReturn(client);
Network network = mock(Network.class);
ProviderNetwork providerNetwork = mock(ProviderNetwork.class);
when(client.getAll()).thenReturn(Collections.singletonList(network));
when(network.getProvidedBy()).thenReturn(providerNetwork);
when(providerNetwork.getExternalId()).thenReturn("");
Guid id = mock(Guid.class);
when(dcDao.getDcIdByExternalNetworkId(anyString())).thenReturn(Collections.singletonList(id));
Map<Network, Set<Guid>> expected = new HashMap<>();
expected.put(network, Collections.singleton(id));
GetAllExternalNetworksOnProviderQuery<IdQueryParameters> query = getQuery();
query.executeQueryCommand();
assertEquals("Wrong result returned", expected, getQuery().getQueryReturnValue().getReturnValue());
}
}