package org.ovirt.engine.core.vdsbroker.storage;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
import org.ovirt.engine.core.common.businessentities.storage.StorageServerConnectionExtension;
import org.ovirt.engine.core.common.utils.Pair;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StorageServerConnectionExtensionDao;
@RunWith(MockitoJUnitRunner.class)
public class StorageConnectionHelperTest {
@Mock
private StorageServerConnectionExtensionDao connExtDaoMock;
@InjectMocks
private StorageConnectionHelper helper;
@Test
public void testCredentialsWithNoConnectionExtension() {
StorageServerConnections conn = createConnectionWithCredentials("target1");
Pair<String, String> credentials = helper.getStorageConnectionCredentialsForhost(Guid.newGuid(), conn);
assertCredentials(credentials, conn.getUserName(), conn.getPassword());
}
@Test
public void testCredentialsWithConnectionExtension() {
StorageServerConnections conn = createConnectionWithCredentials("target1");
StorageServerConnectionExtension connExt = createConnectionExtension(Guid.newGuid());
when(connExtDaoMock.getByHostIdAndTarget(connExt.getHostId(), connExt.getIqn())).thenReturn(connExt);
Pair<String, String> credentials = helper.getStorageConnectionCredentialsForhost(connExt.getHostId(), conn);
assertCredentials(credentials, connExt.getUserName(), connExt.getPassword());
}
@Test
public void testCredentialsWithConnectionExtensionSameHostDifferentTarget() {
StorageServerConnections conn = createConnectionWithCredentials("target2");
StorageServerConnectionExtension connExt = createConnectionExtension(Guid.newGuid());
Pair<String, String> credentials = helper.getStorageConnectionCredentialsForhost(connExt.getHostId(), conn);
assertCredentials(credentials, conn.getUserName(), conn.getPassword());
}
@Test
public void testCredentialsWithConnectionExtensionDifferentHostSameTarget() {
StorageServerConnections conn = createConnectionWithCredentials("target1");
StorageServerConnectionExtension connExt = createConnectionExtension(Guid.newGuid());
Pair<String, String> credentials = helper.getStorageConnectionCredentialsForhost(connExt.getHostId(), conn);
assertCredentials(credentials, conn.getUserName(), conn.getPassword());
}
private static StorageServerConnections createConnectionWithCredentials(String target) {
StorageServerConnections conn = new StorageServerConnections();
conn.setIqn(target);
conn.setUserName("userConn");
conn.setPassword("pwdConn");
return conn;
}
private static StorageServerConnectionExtension createConnectionExtension(Guid hostId) {
StorageServerConnectionExtension connExt = new StorageServerConnectionExtension();
connExt.setHostId(hostId);
connExt.setIqn("target1");
connExt.setUserName("userConnExt");
connExt.setPassword("pwdConnExt");
return connExt;
}
private static void assertCredentials(Pair<String, String> credentials, String userName, String password) {
assertEquals(userName, credentials.getFirst());
assertEquals(password, credentials.getSecond());
}
}