From 63688e056a569e8426a65880cbf5b383c1b7c2f7 Mon Sep 17 00:00:00 2001 From: Marcus Linke Date: Sat, 15 Aug 2015 19:09:06 +0200 Subject: [PATCH 1/4] Format sources --- .../dockerjava/core/CertificateUtils.java | 5 +++-- .../dockerjava/core/CompressArchiveUtil.java | 4 ++-- .../dockerjava/core/DockerClientConfig.java | 9 ++++----- .../core/async/ResultCallbackTemplate.java | 3 ++- .../dockerjava/jaxrs/AbstrDockerCmdExec.java | 3 ++- .../jaxrs/DockerCmdExecFactoryImpl.java | 4 ++-- .../client/AbstractDockerClientTest.java | 4 ++-- .../dockerjava/core/DockerClientImplTest.java | 2 +- .../command/AttachContainerCmdImplTest.java | 4 ++-- .../core/command/LogContainerCmdImplTest.java | 1 - .../core/command/PushImageCmdImplTest.java | 8 ++------ .../DockerfileAddMultipleFilesTest.java | 4 +++- .../dockerfile/DockerfileStatementAddTest.java | 18 ++++++++---------- 13 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/CertificateUtils.java b/src/main/java/com/github/dockerjava/core/CertificateUtils.java index 13482b0a1..465b06460 100644 --- a/src/main/java/com/github/dockerjava/core/CertificateUtils.java +++ b/src/main/java/com/github/dockerjava/core/CertificateUtils.java @@ -49,7 +49,7 @@ public static KeyStore createKeyStore(final String dockerCertPath) throws NoSuch keyStore.load(null); keyStore.setKeyEntry("docker", keyPair.getPrivate(), "docker".toCharArray(), - privateCertificates.toArray(new Certificate[privateCertificates.size()]) ); + privateCertificates.toArray(new Certificate[privateCertificates.size()])); return keyStore; } @@ -82,7 +82,8 @@ public static KeyStore createTrustStore(final String dockerCertPath) throws IOEx } - private static List loadCertificates(final String dockerCertPath) throws IOException, CertificateException { + private static List loadCertificates(final String dockerCertPath) throws IOException, + CertificateException { File certificate = new File(dockerCertPath, "cert.pem"); BufferedReader reader = new BufferedReader(new FileReader(certificate)); PEMParser pemParser = null; diff --git a/src/main/java/com/github/dockerjava/core/CompressArchiveUtil.java b/src/main/java/com/github/dockerjava/core/CompressArchiveUtil.java index 0a93af3d8..59dec59ef 100644 --- a/src/main/java/com/github/dockerjava/core/CompressArchiveUtil.java +++ b/src/main/java/com/github/dockerjava/core/CompressArchiveUtil.java @@ -18,8 +18,8 @@ public static File archiveTARFiles(File base, Iterable files, String archi throws IOException { File tarFile = new File(FileUtils.getTempDirectoryPath(), archiveNameWithOutExtension + ".tar"); tarFile.deleteOnExit(); - try(TarArchiveOutputStream tos = new TarArchiveOutputStream(new GZIPOutputStream( - new BufferedOutputStream(new FileOutputStream(tarFile))))) { + try (TarArchiveOutputStream tos = new TarArchiveOutputStream(new GZIPOutputStream(new BufferedOutputStream( + new FileOutputStream(tarFile))))) { tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU); for (File file : files) { TarArchiveEntry tarEntry = new TarArchiveEntry(file); diff --git a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java index 800ed5772..ae8156748 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java @@ -177,8 +177,8 @@ private static Properties overrideDockerPropertiesWithSystemProperties(Propertie for (String key : new String[] { DOCKER_IO_URL_PROPERTY, DOCKER_IO_VERSION_PROPERTY, DOCKER_IO_USERNAME_PROPERTY, DOCKER_IO_PASSWORD_PROPERTY, DOCKER_IO_EMAIL_PROPERTY, - DOCKER_IO_SERVER_ADDRESS_PROPERTY, - DOCKER_IO_DOCKER_CERT_PATH_PROPERTY, DOCKER_IO_DOCKER_CFG_PATH_PROPERTY, }) { + DOCKER_IO_SERVER_ADDRESS_PROPERTY, DOCKER_IO_DOCKER_CERT_PATH_PROPERTY, + DOCKER_IO_DOCKER_CFG_PATH_PROPERTY, }) { if (systemProperties.containsKey(key)) { overriddenProperties.setProperty(key, systemProperties.getProperty(key)); } @@ -337,8 +337,7 @@ public int hashCode() { public String toString() { return "DockerClientConfig{" + "uri=" + uri + ", version='" + version + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", serverAddress='" + serverAddress - + '\'' + ", dockerCfgPath='" + dockerCfgPath + '\'' + ", sslConfig='" + sslConfig + '\'' - + '}'; + + '\'' + ", dockerCfgPath='" + dockerCfgPath + '\'' + ", sslConfig='" + sslConfig + '\'' + '}'; } public static class DockerClientConfigBuilder { @@ -415,7 +414,7 @@ public final DockerClientConfigBuilder withSSLConfig(SSLConfig config) { public DockerClientConfig build() { return new DockerClientConfig(uri, version, username, password, email, serverAddress, dockerCfgPath, - sslConfig); + sslConfig); } } diff --git a/src/main/java/com/github/dockerjava/core/async/ResultCallbackTemplate.java b/src/main/java/com/github/dockerjava/core/async/ResultCallbackTemplate.java index 857ca9177..b5387ede0 100644 --- a/src/main/java/com/github/dockerjava/core/async/ResultCallbackTemplate.java +++ b/src/main/java/com/github/dockerjava/core/async/ResultCallbackTemplate.java @@ -38,7 +38,8 @@ public void onStart(Closeable stream) { @Override public void onError(Throwable throwable) { - if(closed) return; + if (closed) + return; try { LOGGER.error("Error during callback", throwable); diff --git a/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java index cd23dd8b1..4c0d36eaa 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java +++ b/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java @@ -35,7 +35,8 @@ protected String registryAuth(AuthConfig authConfig) { protected String registryConfigs(AuthConfigurations authConfigs) { try { - return Base64.encodeBase64String(new ObjectMapper().writeValueAsString(authConfigs).getBytes()); + String json = new ObjectMapper().writeValueAsString(authConfigs.getConfigs()); + return Base64.encodeBase64String(json.getBytes()); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java b/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java index f3ad427f5..ef8d4e4fb 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java +++ b/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java @@ -124,8 +124,8 @@ public void init(DockerClientConfig dockerClientConfig) { if (clientRequestFilters != null) { for (ClientRequestFilter clientRequestFilter : clientRequestFilters) { - if(clientRequestFilter != null) - clientConfig.register(clientRequestFilter); + if (clientRequestFilter != null) + clientConfig.register(clientRequestFilter); } } diff --git a/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java b/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java index 8ed9164da..e8dfa9bd7 100644 --- a/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java +++ b/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java @@ -186,8 +186,8 @@ public static void assertContainerHasVolumes(InspectContainerResponse inspectCon } protected String containerLog(String containerId) throws Exception { - return dockerClient.logContainerCmd(containerId).withStdOut() - .exec(new LogContainerTestCallback()).awaitCompletion().toString(); + return dockerClient.logContainerCmd(containerId).withStdOut().exec(new LogContainerTestCallback()) + .awaitCompletion().toString(); } public static class LogContainerTestCallback extends LogContainerResultCallback { diff --git a/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java b/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java index 8a9879470..c5a1e841c 100644 --- a/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java +++ b/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java @@ -10,7 +10,7 @@ public class DockerClientImplTest { @Test public void configuredInstanceAuthConfig() throws Exception { // given a config with null serverAddress - DockerClientConfig dockerClientConfig = new DockerClientConfig(null, null, "", "", "", null, null,null); + DockerClientConfig dockerClientConfig = new DockerClientConfig(null, null, "", "", "", null, null, null); DockerClientImpl dockerClient = DockerClientImpl.getInstance(dockerClientConfig); // when we get the auth config diff --git a/src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java index 8fa5b2269..11a65aa14 100644 --- a/src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java @@ -94,8 +94,8 @@ public void onNext(Frame frame) { }; }; - dockerClient.attachContainerCmd(container.getId()).withStdErr().withStdOut().withFollowStream() - .exec(callback).awaitCompletion(15, TimeUnit.SECONDS).close(); + dockerClient.attachContainerCmd(container.getId()).withStdErr().withStdOut().withFollowStream().exec(callback) + .awaitCompletion(15, TimeUnit.SECONDS).close(); System.out.println("log: " + callback.toString()); diff --git a/src/test/java/com/github/dockerjava/core/command/LogContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/LogContainerCmdImplTest.java index 6d887f359..2e2dedb45 100644 --- a/src/test/java/com/github/dockerjava/core/command/LogContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/LogContainerCmdImplTest.java @@ -135,5 +135,4 @@ public void asyncMultipleLogContainer() throws Exception { assertTrue(loggingCallback.toString().contains(snippet)); } - } diff --git a/src/test/java/com/github/dockerjava/core/command/PushImageCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/PushImageCmdImplTest.java index bb42d5b4b..2f7e1c391 100644 --- a/src/test/java/com/github/dockerjava/core/command/PushImageCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/PushImageCmdImplTest.java @@ -65,18 +65,14 @@ public void pushLatest() throws Exception { LOG.info("Removing image: {}", imageId); dockerClient.removeImageCmd(imageId).exec(); - dockerClient.pullImageCmd(username + "/busybox") - .exec(new PullImageResultCallback()).awaitSuccess(); + dockerClient.pullImageCmd(username + "/busybox").exec(new PullImageResultCallback()).awaitSuccess(); } @Test(expectedExceptions = DockerClientException.class) public void pushNonExistentImage() throws Exception { - dockerClient.pushImageCmd(username + "/xxx").exec(new PushImageResultCallback()) - .awaitSuccess(); - + dockerClient.pushImageCmd(username + "/xxx").exec(new PushImageResultCallback()).awaitSuccess(); } - } diff --git a/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileAddMultipleFilesTest.java b/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileAddMultipleFilesTest.java index 65af93774..0752aded5 100644 --- a/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileAddMultipleFilesTest.java +++ b/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileAddMultipleFilesTest.java @@ -17,6 +17,7 @@ public class DockerfileAddMultipleFilesTest extends TestCase { private static final Logger log = LoggerFactory.getLogger(DockerfileAddMultipleFilesTest.class); + private static final Function TO_FILE_NAMES = new Function() { @Override public String apply(File file) { @@ -26,7 +27,8 @@ public String apply(File file) { @Test public void testAddMultipleFiles() throws IOException { - File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testAddMultipleFiles").getFile()); + File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testAddMultipleFiles") + .getFile()); Dockerfile dockerfile = new Dockerfile(new File(baseDir, "Dockerfile")); Dockerfile.ScannedResult result = dockerfile.parse(); Collection filesToAdd = transform(result.filesToAdd, TO_FILE_NAMES); diff --git a/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileStatementAddTest.java b/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileStatementAddTest.java index 691137afd..133ed2eae 100644 --- a/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileStatementAddTest.java +++ b/src/test/java/com/github/dockerjava/core/dockerfile/DockerfileStatementAddTest.java @@ -20,16 +20,14 @@ public class DockerfileStatementAddTest extends TestCase { @DataProvider(name = "valid scenarios") public Object[][] validScenarios() { - return new Object[][] { - {"ADD src dest", contains("src"), "dest"}, - {"ADD \"src file\" \"dest\"", contains("src file"), "dest"}, - {"ADD src\"file dest", contains("src\"file"), "dest"}, - {"ADD src1 src2 dest", containsInAnyOrder("src1", "src2"), "dest"}, - {"COPY src dest", contains("src"), "dest"}, - {"COPY \"src file\" \"dest\"", contains("src file"), "dest"}, - {"COPY src\"file dest", contains("src\"file"), "dest"}, - {"COPY src1 src2 dest", containsInAnyOrder("src1", "src2"), "dest"} - }; + return new Object[][] { { "ADD src dest", contains("src"), "dest" }, + { "ADD \"src file\" \"dest\"", contains("src file"), "dest" }, + { "ADD src\"file dest", contains("src\"file"), "dest" }, + { "ADD src1 src2 dest", containsInAnyOrder("src1", "src2"), "dest" }, + { "COPY src dest", contains("src"), "dest" }, + { "COPY \"src file\" \"dest\"", contains("src file"), "dest" }, + { "COPY src\"file dest", contains("src\"file"), "dest" }, + { "COPY src1 src2 dest", containsInAnyOrder("src1", "src2"), "dest" } }; } @Test(dataProvider = "valid scenarios") From e580ea81c8dcf6cddf79ece70b782b4fc1bffa09 Mon Sep 17 00:00:00 2001 From: Marcus Linke Date: Sat, 15 Aug 2015 19:09:33 +0200 Subject: [PATCH 2/4] Fix for issue #288 --- .../core/command/BuildImageCmdImplTest.java | 60 ++++++++++++++++--- src/test/resources/privateRegistry/Dockerfile | 3 + .../resources/privateRegistry/auth/htpasswd | 2 + .../privateRegistry/certs/README.txt | 2 + .../privateRegistry/certs/domain.crt | 35 +++++++++++ .../privateRegistry/certs/domain.key | 52 ++++++++++++++++ .../testBuildFromPrivateRegistry/Dockerfile | 1 + 7 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 src/test/resources/privateRegistry/Dockerfile create mode 100644 src/test/resources/privateRegistry/auth/htpasswd create mode 100644 src/test/resources/privateRegistry/certs/README.txt create mode 100644 src/test/resources/privateRegistry/certs/domain.crt create mode 100644 src/test/resources/privateRegistry/certs/domain.key create mode 100644 src/test/resources/testBuildFromPrivateRegistry/Dockerfile diff --git a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java index 5385287ef..2fcc22c94 100644 --- a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java @@ -10,7 +10,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.Collection; @@ -18,7 +17,6 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.TrueFileFilter; -import org.apache.commons.lang.StringUtils; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -31,7 +29,11 @@ import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.InspectContainerResponse; import com.github.dockerjava.api.command.InspectImageResponse; -import com.github.dockerjava.api.model.BuildResponseItem; +import com.github.dockerjava.api.model.AuthConfig; +import com.github.dockerjava.api.model.AuthConfigurations; +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.core.CompressArchiveUtil; @@ -225,10 +227,10 @@ public void testAddAndCopySubstitution() throws Exception { String response = dockerfileBuild(baseDir); assertThat(response, containsString("testENVSubstitution successfully completed")); } - + @Test - public void testBuilderPerformance() throws Exception { - File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("nginx").getFile()); + public void testBuildFromPrivateRegistry() throws Exception { + File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("privateRegistry").getFile()); String imageId = buildImage(baseDir); @@ -236,6 +238,50 @@ public void testBuilderPerformance() throws Exception { assertThat(inspectImageResponse, not(nullValue())); LOG.info("Image Inspect: {}", inspectImageResponse.toString()); - assertThat(inspectImageResponse.getAuthor(), equalTo("Guillaume J. Charmes \"guillaume@dotcloud.com\"")); + dockerClient.tagImageCmd(imageId, "testregistry", "2").withForce().exec(); + + // see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth + CreateContainerResponse testregistry = dockerClient + .createContainerCmd("testregistry:2") + .withName("registry") + .withPortBindings(new PortBinding(new Ports.Binding(5000), ExposedPort.tcp(5000))) + .withEnv("REGISTRY_AUTH=htpasswd", "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm", + "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd", "REGISTRY_LOG_LEVEL=debug", + "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt", "REGISTRY_HTTP_TLS_KEY=/certs/domain.key") + .exec(); + + dockerClient.startContainerCmd(testregistry.getId()).exec(); + + AuthConfig authConfig = new AuthConfig(); + + // credentials as configured in /auth/htpasswd + authConfig.setUsername("testuser"); + authConfig.setPassword("testpassword"); + authConfig.setEmail("foo@bar.de"); + authConfig.setServerAddress("localhost:5000"); + + dockerClient.authCmd().withAuthConfig(authConfig).exec(); + dockerClient.tagImageCmd("busybox:latest", "localhost:5000/testuser/busybox", "latest").withForce().exec(); + + dockerClient.pushImageCmd("localhost:5000/testuser/busybox").withTag("latest").withAuthConfig(authConfig) + .exec(new PushImageResultCallback()).awaitSuccess(); + + dockerClient.removeImageCmd("busybox:latest").withForce().exec(); + + dockerClient.removeImageCmd("localhost:5000/testuser/busybox").withForce().exec(); + + baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testBuildFromPrivateRegistry") + .getFile()); + + AuthConfigurations authConfigurations = new AuthConfigurations(); + authConfigurations.addConfig(authConfig); + + imageId = dockerClient.buildImageCmd(baseDir).withNoCache().withBuildAuthConfigs(authConfigurations) + .exec(new BuildImageResultCallback()).awaitImageId(); + + inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec(); + assertThat(inspectImageResponse, not(nullValue())); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); + } } diff --git a/src/test/resources/privateRegistry/Dockerfile b/src/test/resources/privateRegistry/Dockerfile new file mode 100644 index 000000000..35046d980 --- /dev/null +++ b/src/test/resources/privateRegistry/Dockerfile @@ -0,0 +1,3 @@ +FROM registry:2 +ADD auth/htpasswd /auth/htpasswd +ADD certs/* /certs/ \ No newline at end of file diff --git a/src/test/resources/privateRegistry/auth/htpasswd b/src/test/resources/privateRegistry/auth/htpasswd new file mode 100644 index 000000000..3835b5d08 --- /dev/null +++ b/src/test/resources/privateRegistry/auth/htpasswd @@ -0,0 +1,2 @@ +# testuser:testpasswd (see see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth) +testuser:$2y$05$gI1hyzOYeLU92o5/DjVtOOHtdGymYbkjqJipZNqPET.ChzXMsz2KS diff --git a/src/test/resources/privateRegistry/certs/README.txt b/src/test/resources/privateRegistry/certs/README.txt new file mode 100644 index 000000000..7e2abff9c --- /dev/null +++ b/src/test/resources/privateRegistry/certs/README.txt @@ -0,0 +1,2 @@ +This directory contains self signed certificate for docker registry with CN: "localhost". For testing purposes only. +See https://github.com/docker/distribution/blob/master/docs/insecure.md#using-self-signed-certificates diff --git a/src/test/resources/privateRegistry/certs/domain.crt b/src/test/resources/privateRegistry/certs/domain.crt new file mode 100644 index 000000000..159cd1cf8 --- /dev/null +++ b/src/test/resources/privateRegistry/certs/domain.crt @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGHzCCBAegAwIBAgIJALeUCTgohkuvMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD +VQQGEwJERTEQMA4GA1UECAwHSGFtYnVyZzEQMA4GA1UEBwwHSGFtYnVyZzEUMBIG +A1UECgwLZG9ja2VyLWphdmExFDASBgNVBAsMC2RvY2tlci1qYXZhMRIwEAYDVQQD +DAlsb2NhbGhvc3QxMjAwBgkqhkiG9w0BCQEWI2RvY2tlci1qYXZhLW1haW50YWlu +QGdvb2dsZW1haWwuY29tMB4XDTE1MDgxNDE3NDkyN1oXDTE2MDgxMzE3NDkyN1ow +gaUxCzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdIYW1idXJnMRAwDgYDVQQHDAdIYW1i +dXJnMRQwEgYDVQQKDAtkb2NrZXItamF2YTEUMBIGA1UECwwLZG9ja2VyLWphdmEx +EjAQBgNVBAMMCWxvY2FsaG9zdDEyMDAGCSqGSIb3DQEJARYjZG9ja2VyLWphdmEt +bWFpbnRhaW5AZ29vZ2xlbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQC/Y6Zn5H/K6nSfNDyNUL8Dl+h8/cLi4QAIRSTp5YIy1VtWbECPF5bj +2TnIB8GK0r40OMbc2c0KYPPNjmeP47pUKPawkoIFQCe+ErvpYqSKD0C6L3Gn2BOp +Cd/K6mgrsgAPaaGpm4p2+bBCLioLYSLFg3St3GSl+TkcylDzBlIDliWLyfqQletg +a7C01RoAfzgcXD551TD+ShbB9ybUWnhZuAhj10WN4YajCBpxv1jBbEHj3JQlnmkG +bOXLsA+nFrkFOyvyKTNz4Ncuj6FxmGs3eqP2FwWcowkAA8Eq2n2TSP4bVojlxWeX +qdBbaejEcWvItGTQ3GyzQ0+4mGwyfghDACdx1dT3HdaXzS+Y+oP17ijcVkDhbKCo +GFgwyN+t4fS2AsTaZ6LXfP9PXzwZd2usj6bMZ/DOMKgmVaK9eYXhP9vjwYYoQIiX +Vh4Lh+O94SG2j6AQPbixEj/3yJLf9owBkUUc/mgOCVgLSNgzBpTXKUlLASh35DSQ +xH6gJ87ljtHk+A8EVXFCDYf9T6b0y3okVBkbnliP/nr4TFbWr91+wHk/OyfTbZYY +uIc288HbC5d2qUGnDV7vMn5Rh8a1gqdZ8onbVuX65D9WQ7WtMMwbAEsMYihmj2WC +AzLHuWmDy6WBd8WRHSJLh+o5zqRi25YDJyNiKb/tXESf580OhqYL1QIDAQABo1Aw +TjAdBgNVHQ4EFgQUWQykHhTnePyTnsym33ex9u+6CKQwHwYDVR0jBBgwFoAUWQyk +HhTnePyTnsym33ex9u+6CKQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEAB9fdGw8lJ7tZWa54xcwUuAFiQJCpJ5D3arKv80Oy+uDWlp4+8ezUnytKj6u4 +G4T6jNFhgWM9GFaxeuKPIzx4WO0pFB6bSHQ6lXUOrcn8umFcPzzSyIAdzNYxIVv8 +HXvy450XQKVMZPp9EvTgKmF+cDGKrOXlHMpl4lDjUJTuoKFjNB/eA9ropLfD4mvY +uaerHfJRlPUOvKrg0BwRVpaqZdPxULWmnaM5tmYSgQ8gpQab71w8J7Sere6+x+jc +sI0pXVHvsSUOGWY8/Juc7yhV1uYmuA8FBgyn8p38HrErwQDyQJfw5YD9jY+oa+vK +r6qqR9reaJtEipMT9aVY81cH040hZEKjm9Y5U3G+1YKWiHZYRL7pettzEaAh/PW1 +1SBgBg611BRrscR4MZ1AAbVh+Wn895Vpa61ZDsA/jIvaGQ1+EmikzWawBiOo4voX +ftUK8nViSBtnwaZ1DwdcEtPKwD8YYWSoBC/tEc6ErjnVXjYBEZc+BaSu+LQUz12t +IK6WvJf6uA+CTUuU9WvVTZtBI98p09ikGNjqM7scaP9BiOeRZQskVNU0MfCblgn/ +FugrJHHUzCNyOQpRktl7L2bULDfaHgjlNCbLc9e2NmW/pTTxBShESWxtNyFmPGGY +eiv/xHjlgJzNvHAoHrFj7szAiDQOncRTYeW1k1fe4WVmli8= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/test/resources/privateRegistry/certs/domain.key b/src/test/resources/privateRegistry/certs/domain.key new file mode 100644 index 000000000..460a206e1 --- /dev/null +++ b/src/test/resources/privateRegistry/certs/domain.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +mNBmSA/sL18D7k8x9HykstMQh0O2ZurT +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/src/test/resources/testBuildFromPrivateRegistry/Dockerfile b/src/test/resources/testBuildFromPrivateRegistry/Dockerfile new file mode 100644 index 000000000..b3d914c6c --- /dev/null +++ b/src/test/resources/testBuildFromPrivateRegistry/Dockerfile @@ -0,0 +1 @@ +FROM localhost:5000/testuser/busybox:latest From b34135d388f7cadd9445384c4cf756ce57121385 Mon Sep 17 00:00:00 2001 From: Marcus Linke Date: Sat, 15 Aug 2015 19:13:03 +0200 Subject: [PATCH 3/4] Fix wrong comment --- src/test/resources/privateRegistry/auth/htpasswd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/resources/privateRegistry/auth/htpasswd b/src/test/resources/privateRegistry/auth/htpasswd index 3835b5d08..59a40620e 100644 --- a/src/test/resources/privateRegistry/auth/htpasswd +++ b/src/test/resources/privateRegistry/auth/htpasswd @@ -1,2 +1,2 @@ -# testuser:testpasswd (see see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth) +# testuser:testpassword (see see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth) testuser:$2y$05$gI1hyzOYeLU92o5/DjVtOOHtdGymYbkjqJipZNqPET.ChzXMsz2KS From 12818cc56f7659ff8912bffe2f3f14ea37c12bf9 Mon Sep 17 00:00:00 2001 From: Marcus Linke Date: Sun, 16 Aug 2015 12:31:11 +0200 Subject: [PATCH 4/4] Fix test --- .../github/dockerjava/core/command/BuildImageCmdImplTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java index 2fcc22c94..2fb1c545b 100644 --- a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java @@ -266,8 +266,6 @@ public void testBuildFromPrivateRegistry() throws Exception { dockerClient.pushImageCmd("localhost:5000/testuser/busybox").withTag("latest").withAuthConfig(authConfig) .exec(new PushImageResultCallback()).awaitSuccess(); - dockerClient.removeImageCmd("busybox:latest").withForce().exec(); - dockerClient.removeImageCmd("localhost:5000/testuser/busybox").withForce().exec(); baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testBuildFromPrivateRegistry")