Skip to content

Commit daf8543

Browse files
committed
test fix - run test container as non-root.
1 parent b830f92 commit daf8543

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.nio.file.Path;
1717
import java.nio.file.Paths;
1818
import java.util.concurrent.TimeUnit;
19+
import java.util.regex.Matcher;
20+
import java.util.regex.Pattern;
1921

2022
import static org.hamcrest.MatcherAssert.assertThat;
2123
import static org.hamcrest.Matchers.containsString;
@@ -158,10 +160,11 @@ public void copyFileWithUIDGID() throws Exception {
158160
Path without = Files.createFile(Files.createTempDirectory("copyFileWithUIDGID").resolve("uidgid.without"));
159161
Files.write(without, "with".getBytes());
160162

161-
String containerCmd = "while [ ! -f /home/uidgid.with ]; do true; done && stat -c %n:%u /home/uidgid.with /home/uidgid.without";
163+
String containerCmd = "while [ ! -f /home/uidgid.with ]; do true; done && echo uid=$(id -u) && stat -c %n:%u /home/uidgid.with /home/uidgid.without";
162164
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox")
163165
.withName("copyFileWithUIDGID")
164166
.withCmd("/bin/sh", "-c", containerCmd)
167+
.withUser("sync")
165168
.exec();
166169
// start the container
167170
dockerRule.getClient().startContainerCmd(container.getId()).exec();
@@ -192,11 +195,18 @@ public void copyFileWithUIDGID() throws Exception {
192195
.exec(loggingCallback);
193196

194197
loggingCallback.awaitCompletion(3, TimeUnit.SECONDS);
195-
assertThat(loggingCallback.toString(), containsString("/home/uidgid.with:0"));
198+
String containerOutput = loggingCallback.toString();
199+
200+
Matcher uidMatcher = Pattern.compile("uid=(\\d+)").matcher(containerOutput);
201+
assertThat(String.format("cannot read effective uid on container from '%s'", containerOutput), uidMatcher.find(), equalTo(true));
202+
assertThat(String.format("cannot read effective uid on container from '%s'", containerOutput), uidMatcher.groupCount(), equalTo(1));
203+
Long containerEffectiveUid = Long.parseLong(uidMatcher.group(1));
204+
205+
assertThat(containerOutput, containsString(String.format("/home/uidgid.with:%d", containerEffectiveUid)));
196206

197207
Long hostUid = getHostUidIfPossible();
198208
assumeThat("could not get the uid on host platform", hostUid, notNullValue(Long.class));
199-
assertThat(loggingCallback.toString(), containsString(String.format("/home/uidgid.without:%d", hostUid)));
209+
assertThat(containerOutput, containsString(String.format("/home/uidgid.without:%d", hostUid)));
200210
}
201211

202212
private static Long getHostUidIfPossible() {

0 commit comments

Comments
 (0)