package org.ovirt.engine.core.bll.storage.connection;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.bll.BaseCommandTest;
import org.ovirt.engine.core.bll.ValidationResult;
import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase;
import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
import org.ovirt.engine.core.common.businessentities.storage.StorageType;
import org.ovirt.engine.core.common.errors.EngineMessage;
public class ConnectStorageToVdsCommandTest extends BaseCommandTest {
private ConnectStorageToVdsCommand command;
private StorageServerConnectionParametersBase params;
@Before
public void prepareCommand() {
params = new StorageServerConnectionParametersBase();
command = new ConnectStorageToVdsCommand(params, null);
}
private StorageServerConnections createConnection(StorageType storageType, String mountOptions) {
StorageServerConnections conn = new StorageServerConnections();
conn.setStorageType(storageType);
conn.setMountOptions(mountOptions);
return conn;
}
@Test
public void testNfsConnectionWithInvalidMountOptionsNotLowerCase() {
testConnectionMountOptionsValidations(StorageType.NFS, "TImeo=30, nfsVERS=4", false);
}
@Test
public void testNfsConnectionWithInvalidMountOptions() {
testConnectionMountOptionsValidations(StorageType.NFS, "timeo=30, nfsvers=4", false);
}
@Test
public void testPosixConnectionWithInvalidMountOptions() {
testConnectionMountOptionsValidations(StorageType.POSIXFS, "timeo=30, vfs_type=nfs", false);
}
@Test
public void testPosixConnectionWithValidMountOptions() {
testConnectionMountOptionsValidations(StorageType.POSIXFS, "timeo=30, validoption=666", true);
}
@Test
public void testNfsConnectionWithValidMountOptions() {
testConnectionMountOptionsValidations(StorageType.NFS, "validoption=30, anothervalidoption=666", true);
}
private void testConnectionMountOptionsValidations(StorageType storageType, String mountOptions, boolean shouldSucceed) {
StorageServerConnections newPosixConnection = createConnection(storageType, mountOptions);
params.setStorageServerConnection(newPosixConnection);
ValidationResult result = command.validateMountOptions();
if (shouldSucceed) {
assertTrue(result.isValid());
}
else {
assertThat(result, failsWith(EngineMessage.VALIDATION_STORAGE_CONNECTION_MOUNT_OPTIONS_CONTAINS_MANAGED_PROPERTY));
}
}
}