/*******************************************************************************
* Copyright (c) 2016 Red Hat.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat - Initial Contribution
*******************************************************************************/
package org.eclipse.linuxtools.internal.docker.core;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Properties;
import org.eclipse.linuxtools.docker.core.IDockerConnectionSettings;
import org.eclipse.linuxtools.docker.core.IDockerConnectionSettings.BindingType;
import org.junit.Test;
/**
* Testing the {@link DefaultDockerConnectionSettingsFinder} class
*/
public class DefaultDockerConnectionSettingsFinderSWTBotTest {
@Test
public void shouldCreateSecuredConnectionSettingsFromProperties() {
// given
final Properties properties = new Properties();
properties.setProperty(DefaultDockerConnectionSettingsFinder.DOCKER_HOST, "tcp://foo");
properties.setProperty(DefaultDockerConnectionSettingsFinder.DOCKER_CERT_PATH, "/path/to/certs");
// actually, the DOCKER_TLS_VERIFY is not used. If DOCKER_CERT_PATH is set, the we assume that DOCKER_TLS_VERIFY is '1'
//properties.setProperty(DefaultDockerConnectionSettingsFinder.DOCKER_TLS_VERIFY, "1");
// when
final IDockerConnectionSettings connectionSettings = ShellConnectionSettingsProvider.createDockerConnectionSettings(properties);
// then
assertThat(connectionSettings.isSettingsResolved()).isFalse();
assertThat(connectionSettings.getType()).isEqualTo(BindingType.TCP_CONNECTION);
assertThat(((TCPConnectionSettings)connectionSettings).getHost()).isEqualTo("https://foo");
assertThat(((TCPConnectionSettings)connectionSettings).getPathToCertificates()).isEqualTo("/path/to/certs");
Object[] connectionProperties = ((TCPConnectionSettings)connectionSettings).getProperties();
assertThat(connectionProperties.length == 3);
Object[] firstProperty = (Object[])connectionProperties[0];
assertThat(((String)firstProperty[0]).equals("Type"));
assertThat(((String)firstProperty[1]).equals("TCP_CONNECTION"));
Object[] secondProperty = (Object[]) connectionProperties[1];
assertThat(((String) secondProperty[0]).equals("Host"));
assertThat(((String) secondProperty[1]).equals("https://foo"));
Object[] thirdProperty = (Object[]) connectionProperties[2];
assertThat(((String) thirdProperty[0]).equals("Certificates"));
assertThat(((String) thirdProperty[1]).equals("/path/to/certs"));
assertThat(((TCPConnectionSettings)connectionSettings).isTlsVerify()).isTrue();
}
@Test
public void shouldNotCreateConnectionSettingsWhenMissingHost() {
// given
final Properties properties = new Properties();
properties.setProperty(DefaultDockerConnectionSettingsFinder.DOCKER_CERT_PATH, "/path/to/certs");
// actually, the DOCKER_TLS_VERIFY is not used. If DOCKER_CERT_PATH is set, the we assume that DOCKER_TLS_VERIFY is '1'
//properties.setProperty(DefaultDockerConnectionSettingsFinder.DOCKER_TLS_VERIFY, "1");
// when
final IDockerConnectionSettings connectionSettings = ShellConnectionSettingsProvider.createDockerConnectionSettings(properties);
// then
assertThat(connectionSettings).isNull();
}
}