From da3f89113caafe5800c559e6087150f96fd2b6e9 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Mon, 14 Feb 2022 07:28:30 -0500 Subject: [PATCH] Do not leak `AuthConfig` into `CreateContainerCmd`'s JSON --- .../core/command/CreateContainerCmdImpl.java | 17 ++++++++--------- .../dockerjava/cmd/CreateContainerCmdIT.java | 17 +++++++++++++++++ .../com/github/dockerjava/core/DockerRule.java | 8 +++++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java index d4cd05a63..65839a658 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java @@ -1,6 +1,6 @@ package com.github.dockerjava.core.command; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.api.command.CreateContainerCmd; import com.github.dockerjava.api.command.CreateContainerResponse; @@ -30,6 +30,13 @@ * Creates a new container. * `/containers/create` */ +@JsonAutoDetect( + fieldVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.NONE, + isGetterVisibility = JsonAutoDetect.Visibility.NONE, + creatorVisibility = JsonAutoDetect.Visibility.NONE +) public class CreateContainerCmdImpl extends AbstrDockerCmd implements CreateContainerCmd { @@ -122,13 +129,10 @@ public class CreateContainerCmdImpl extends AbstrDockerCmd aliases = null; private AuthConfig authConfig; @@ -151,7 +155,6 @@ public CreateContainerCmd withAuthConfig(AuthConfig authConfig) { } @Override - @JsonIgnore public List getAliases() { return aliases; } @@ -256,7 +259,6 @@ public CreateContainerCmd withEnv(List env) { } @Override - @JsonIgnore public ExposedPort[] getExposedPorts() { return exposedPorts.getExposedPorts(); } @@ -277,7 +279,6 @@ public CreateContainerCmd withExposedPorts(List exposedPorts) { /** * @see #stopSignal */ - @JsonIgnore @Override public String getStopSignal() { return stopSignal; @@ -326,7 +327,6 @@ public CreateContainerCmd withImage(String image) { } @Override - @JsonIgnore public Map getLabels() { return labels; } @@ -430,7 +430,6 @@ public CreateContainerCmd withAttachStdout(Boolean attachStdout) { } @Override - @JsonIgnore public Volume[] getVolumes() { return volumes.getVolumes(); } diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java index 3eb63770f..c8c755a54 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java @@ -1,6 +1,9 @@ package com.github.dockerjava.cmd; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.github.dockerjava.api.async.ResultCallback; +import com.github.dockerjava.api.command.CreateContainerCmd; import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.CreateNetworkResponse; import com.github.dockerjava.api.command.CreateVolumeResponse; @@ -70,6 +73,7 @@ import static org.hamcrest.Matchers.emptyString; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.startsWith; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; @@ -1108,4 +1112,17 @@ public void overrideHostConfigWithRawValues() { assertThat(inspectContainerResponse.getHostConfig().getNanoCPUs(), is(500_000_000L)); } + + @Test + public void shouldNotEncodeAuth() { + CreateContainerCmd cmd = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) + .withAuthConfig(new AuthConfig().withEmail("test@test.com")) + .withCmd("sleep", "9999"); + + ObjectMapper objectMapper = dockerRule.getConfig().getObjectMapper(); + + ObjectNode jsonNode = objectMapper.valueToTree(cmd); + + assertThat(jsonNode.get("authConfig"), nullValue()); + } } diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java index 98050d934..3fc5c40d7 100644 --- a/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java +++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java @@ -37,8 +37,10 @@ public class DockerRule extends ExternalResource { private final Set createdVolumeNames = new HashSet<>(); + private final DefaultDockerClientConfig config = config(); + public DockerClient newClient() { - DockerClientImpl dockerClient = CmdIT.createDockerClient(config()); + DockerClientImpl dockerClient = CmdIT.createDockerClient(config); dockerClient.withDockerCmdExecFactory( new DockerCmdExecFactoryDelegate(dockerClient.dockerCmdExecFactory) { @@ -82,6 +84,10 @@ protected DockerClient getDockerClient() { }; } + public DefaultDockerClientConfig getConfig() { + return config; + } + public DockerClient getClient() { if (dockerClient != null) { return dockerClient;