Merge pull request #296 from docker-java/issue-288 · docker-java/docker-java@118be67

@@ -10,15 +10,13 @@

10101111

import java.io.File;

1212

import java.io.FileInputStream;

13-

import java.io.IOException;

1413

import java.io.InputStream;

1514

import java.lang.reflect.Method;

1615

import java.util.Collection;

1716

import java.util.UUID;

18171918

import org.apache.commons.io.FileUtils;

2019

import org.apache.commons.io.filefilter.TrueFileFilter;

21-

import org.apache.commons.lang.StringUtils;

2220

import org.testng.ITestResult;

2321

import org.testng.annotations.AfterMethod;

2422

import org.testng.annotations.AfterTest;

@@ -31,7 +29,11 @@

3129

import com.github.dockerjava.api.command.CreateContainerResponse;

3230

import com.github.dockerjava.api.command.InspectContainerResponse;

3331

import 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;

3537

import com.github.dockerjava.client.AbstractDockerClientTest;

3638

import com.github.dockerjava.core.CompressArchiveUtil;

3739

@@ -225,17 +227,59 @@ public void testAddAndCopySubstitution() throws Exception {

225227

String response = dockerfileBuild(baseDir);

226228

assertThat(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());

232234233235

String imageId = buildImage(baseDir);

234236235237

InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();

236238

assertThat(inspectImageResponse, not(nullValue()));

237239

LOG.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

}