/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.embedded.ssh.internal; import java.io.IOException; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Test; import de.rcenvironment.core.configuration.ConfigurationException; import de.rcenvironment.core.configuration.ConfigurationSegment; import de.rcenvironment.core.configuration.testutils.ConfigurationSegmentUtils; import de.rcenvironment.core.utils.common.TempFileServiceAccess; /** * Test for the class SshConfiguration. * * @author Sebastian Holtappels (validation) * @author Robert Mischke (new JSON loading) */ public class SshConfigurationTest extends TestCase { private static final String TEST_FILE_HOST_VALUE = "127.0.0.2"; private static final int TEST_FILE_PORT_VALUE = 31007; private Log logger = LogFactory.getLog(SshConfigurationTest.class); /** * Tests default values when using the default constructor. * * @throws IOException on uncaught exceptions */ @Test public void testDefaultConstructor() throws IOException { SshConfiguration configuration = new SshConfiguration(); verifyDefaultValues(configuration); } /** * Tests default values when providing an empty {@link ConfigurationSegment}. * * @throws IOException on uncaught exceptions * @throws ConfigurationException on configuraion exceptions */ @Test public void testEmptyConfiguration() throws IOException, ConfigurationException { ConfigurationSegment configurationSegment = ConfigurationSegmentUtils.createEmptySegment(); SshConfiguration configuration = new SshConfiguration(configurationSegment); verifyDefaultValues(configuration); } /** * Tests loading a test configuration file. * * @throws IOException on uncaught exceptions * @throws ConfigurationException on configuraion exceptions.*/ @Test public void testLoading() throws IOException, ConfigurationException { TempFileServiceAccess.setupUnitTestEnvironment(); ConfigurationSegment configurationSegment = ConfigurationSegmentUtils.readTestConfigurationFromStream(getClass().getResourceAsStream("/sample1.json")); SshConfiguration configuration = new SshConfiguration(configurationSegment); assertEquals(true, configuration.isEnabled()); assertEquals(TEST_FILE_PORT_VALUE, configuration.getPort()); assertEquals(TEST_FILE_HOST_VALUE, configuration.getHost()); assertEquals(4, configuration.getAccounts().size()); } /** Test. */ @Test public void testValidationPositive() { SshConfiguration validConfig = SshTestUtils.getValidConfig(); assertTrue("SshConfiguration.validateConfiguration returned false but true was expected", validConfig.validateConfiguration(logger)); } /** Test. */ @Test public void testValidationPortnumber() { SshConfiguration config = SshTestUtils.getValidConfig(); config.setPort(Integer.MIN_VALUE); assertFalse("SshConfiguration.validateConfiguration returned true but false was expected", config.validateConfiguration(logger)); config.setPort(Integer.MAX_VALUE); assertFalse("SshConfiguration.validateConfiguration returned true but false was expected", config.validateConfiguration(logger)); } /** Test. */ @Test public void testValidationNoUsers() { SshConfiguration config = SshTestUtils.getValidConfig(); config.setAccounts(null); assertFalse("SshConfiguration.validateConfiguration() returned true but false was expected", config.validateConfiguration(logger)); config.setAccounts(new ArrayList<SshAccountImpl>()); assertFalse("SshConfiguration.validateConfiguration() returned true but false was expected", config.validateConfiguration(logger)); } /** Test. */ @Test public void testValidationDuplicateUsers() { SshConfiguration config = SshTestUtils.getValidConfig(); List<SshAccountImpl> users = config.getAccounts(); if (users.addAll(users)) { config.setAccounts(users); assertFalse("SshConfiguration.validateConfiguration() returned true but false was expected.", config.validateConfiguration(logger)); } else { fail("Could not create duplicates for users"); } } private void verifyDefaultValues(SshConfiguration configuration) { assertEquals(false, configuration.isEnabled()); assertEquals(SshConfiguration.DEFAULT_PORT, configuration.getPort()); assertEquals(SshConfiguration.DEFAULT_HOST, configuration.getHost()); assertEquals(0, configuration.getAccounts().size()); } }