Merge pull request #296 from docker-java/issue-288 · docker-java/docker-java@118be67
@@ -10,15 +10,13 @@
10101111import java.io.File;
1212import java.io.FileInputStream;
13-import java.io.IOException;
1413import java.io.InputStream;
1514import java.lang.reflect.Method;
1615import java.util.Collection;
1716import java.util.UUID;
18171918import org.apache.commons.io.FileUtils;
2019import org.apache.commons.io.filefilter.TrueFileFilter;
21-import org.apache.commons.lang.StringUtils;
2220import org.testng.ITestResult;
2321import org.testng.annotations.AfterMethod;
2422import org.testng.annotations.AfterTest;
@@ -31,7 +29,11 @@
3129import com.github.dockerjava.api.command.CreateContainerResponse;
3230import com.github.dockerjava.api.command.InspectContainerResponse;
3331import com.github.dockerjava.api.command.InspectImageResponse;
34-import com.github.dockerjava.api.model.BuildResponseItem;
32+import com.github.dockerjava.api.model.AuthConfig;
33+import com.github.dockerjava.api.model.AuthConfigurations;
34+import com.github.dockerjava.api.model.ExposedPort;
35+import com.github.dockerjava.api.model.PortBinding;
36+import com.github.dockerjava.api.model.Ports;
3537import com.github.dockerjava.client.AbstractDockerClientTest;
3638import com.github.dockerjava.core.CompressArchiveUtil;
3739@@ -225,17 +227,59 @@ public void testAddAndCopySubstitution() throws Exception {
225227String response = dockerfileBuild(baseDir);
226228assertThat(response, containsString("testENVSubstitution successfully completed"));
227229 }
228-230+229231@Test
230-public void testBuilderPerformance() throws Exception {
231-File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("nginx").getFile());
232+public void testBuildFromPrivateRegistry() throws Exception {
233+File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("privateRegistry").getFile());
232234233235String imageId = buildImage(baseDir);
234236235237InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
236238assertThat(inspectImageResponse, not(nullValue()));
237239LOG.info("Image Inspect: {}", inspectImageResponse.toString());
238240239-assertThat(inspectImageResponse.getAuthor(), equalTo("Guillaume J. Charmes \"guillaume@dotcloud.com\""));
241+dockerClient.tagImageCmd(imageId, "testregistry", "2").withForce().exec();
242+243+// see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth
244+CreateContainerResponse testregistry = dockerClient
245+ .createContainerCmd("testregistry:2")
246+ .withName("registry")
247+ .withPortBindings(new PortBinding(new Ports.Binding(5000), ExposedPort.tcp(5000)))
248+ .withEnv("REGISTRY_AUTH=htpasswd", "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm",
249+"REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd", "REGISTRY_LOG_LEVEL=debug",
250+"REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt", "REGISTRY_HTTP_TLS_KEY=/certs/domain.key")
251+ .exec();
252+253+dockerClient.startContainerCmd(testregistry.getId()).exec();
254+255+AuthConfig authConfig = new AuthConfig();
256+257+// credentials as configured in /auth/htpasswd
258+authConfig.setUsername("testuser");
259+authConfig.setPassword("testpassword");
260+authConfig.setEmail("foo@bar.de");
261+authConfig.setServerAddress("localhost:5000");
262+263+dockerClient.authCmd().withAuthConfig(authConfig).exec();
264+dockerClient.tagImageCmd("busybox:latest", "localhost:5000/testuser/busybox", "latest").withForce().exec();
265+266+dockerClient.pushImageCmd("localhost:5000/testuser/busybox").withTag("latest").withAuthConfig(authConfig)
267+ .exec(new PushImageResultCallback()).awaitSuccess();
268+269+dockerClient.removeImageCmd("localhost:5000/testuser/busybox").withForce().exec();
270+271+baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testBuildFromPrivateRegistry")
272+ .getFile());
273+274+AuthConfigurations authConfigurations = new AuthConfigurations();
275+authConfigurations.addConfig(authConfig);
276+277+imageId = dockerClient.buildImageCmd(baseDir).withNoCache().withBuildAuthConfigs(authConfigurations)
278+ .exec(new BuildImageResultCallback()).awaitImageId();
279+280+inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
281+assertThat(inspectImageResponse, not(nullValue()));
282+LOG.info("Image Inspect: {}", inspectImageResponse.toString());
283+240284 }
241285}