blob: deb87087b045c096d163a9019919e79b7fba86ee [file] [log] [blame]
/*******************************************************************************
* 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 static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.List;
import org.eclipse.linuxtools.docker.core.DockerException;
import org.eclipse.linuxtools.docker.core.EnumDockerConnectionState;
import org.eclipse.linuxtools.docker.core.IDockerContainer;
import org.eclipse.linuxtools.docker.core.IDockerImage;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockContainerFactory;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockDockerClientFactory;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockDockerConnectionFactory;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockImageFactory;
import org.junit.Test;
import com.spotify.docker.client.DockerCertificateException;
import com.spotify.docker.client.DockerClient;
import com.spotify.docker.client.messages.Container;
import com.spotify.docker.client.messages.Image;
/**
* Testing the {@link DockerConnection} class.
*/
public class DockerConnectionTest {
@Test
public void shouldLoadContainers() throws DockerException {
// given
final Container fooContainer = MockContainerFactory.id("foo").build();
final Container barContainer = MockContainerFactory.id("bar").build();
final DockerClient client = MockDockerClientFactory.container(fooContainer).container(barContainer).build();
final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client).withDefaultTCPConnectionSettings();
dockerConnection.open(false);
// when
final List<IDockerContainer> containers = dockerConnection.getContainers();
// then
assertThat(containers).hasSize(2);
}
@Test
public void shouldLoadImages() throws DockerException {
// given
final Image fooImage = MockImageFactory.id("foo").build();
final Image barImage = MockImageFactory.id("bar").build();
final DockerClient client = MockDockerClientFactory.image(fooImage).image(barImage).build();
final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client).withDefaultTCPConnectionSettings();
dockerConnection.open(false);
// when
final List<IDockerImage> images = dockerConnection.getImages();
// then
assertThat(images).hasSize(2);
}
@Test
public void hasImageTest() throws DockerException {
// given
final Image fooImage = MockImageFactory.id("foo")
.name("foo", "foo:latest", "foo:1.0", "org/foo", "org/foo:1.0", "org/foo:latest").build();
final DockerClient client = MockDockerClientFactory.image(fooImage).build();
final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client)
.withDefaultTCPConnectionSettings();
dockerConnection.open(false);
// then
assertTrue(dockerConnection.hasImage("foo", null));
assertTrue(dockerConnection.hasImage("foo", "latest"));
assertTrue(dockerConnection.hasImage("foo", "1.0"));
assertTrue(dockerConnection.hasImage("org/foo", null));
assertTrue(dockerConnection.hasImage("org/foo", "latest"));
assertTrue(dockerConnection.hasImage("org/foo", "1.0"));
}
@Test
public void shouldBeClosedWhenInvalidPathToCerts() throws DockerException {
// given
final DockerConnection dockerConnection = new DockerConnection.Builder().name("foo")
.tcpConnection(new TCPConnectionSettings("https://1.2.3.4:1234", "/invalid/path"));
// when
try {
dockerConnection.open(false);
fail("Expected an exception since the path to certs is invalid");
} catch (DockerException e) {
assertThat(e.getCause()).isInstanceOf(DockerCertificateException.class);
}
// then connection state should be 'CLOSED' since the settings are wrong
assertThat(dockerConnection.getState()).isEqualTo(EnumDockerConnectionState.CLOSED);
}
}