Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/test/configs/updateUID/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
6 changes: 3 additions & 3 deletions src/test/configs/updateUIDOnly/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM debian:latest

ARG LOCAL_GID
RUN addgroup --gid $LOCAL_GID bar || true
RUN groupadd -g $LOCAL_GID bar || true

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
4 changes: 2 additions & 2 deletions src/test/configs/updateUIDamd64-platform-option/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
4 changes: 2 additions & 2 deletions src/test/configs/updateUIDamd64/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM --platform=linux/amd64 debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
4 changes: 2 additions & 2 deletions src/test/configs/updateUIDarm64-platform-option/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
4 changes: 2 additions & 2 deletions src/test/configs/updateUIDarm64/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM --platform=linux/arm64 debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
4 changes: 2 additions & 2 deletions src/test/configs/updateUIDarm64v8/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM --platform=linux/arm64/v8 debian:latest

RUN addgroup --gid 4321 foo
RUN adduser --uid 1234 --gid 4321 foo
RUN groupadd -g 4321 foo
RUN useradd -m -u 1234 -g 4321 foo
17 changes: 10 additions & 7 deletions src/test/getEntPasswd.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,25 @@ describe('getEntPasswdShellCommand', function () {
{
image: 'busybox',
getentPath: undefined,
addUserOptions: '-D -h',
addUserCommand: 'adduser -D -h /home/foo foo\\\\bar',
userName: 'foo\\bar',
homeFolder: '/home/foo',
},
{
image: 'debian',
getentPath: '/usr/bin/getent',
addUserOptions: '--disabled-password --allow-all-names --gecos "" --home',
addUserCommand: 'useradd -m -d /home/foo --badname foo\\\\bar',
userName: 'foo\\bar',
homeFolder: '/home/foo',
},
{
image: 'alpine',
getentPath: '/usr/bin/getent',
addUserOptions: '-D -h',
addUserCommand: 'adduser -D -h /home/foo foo_bar',
userName: 'foo_bar', // Alpine doesn't support backslash in user names.
homeFolder: '/home/foo',
},
].forEach(({ image, getentPath, addUserOptions, userName }) => {
].forEach(({ image, getentPath, addUserCommand, userName, homeFolder }) => {
it(`should work with ${image} ${getentPath ? 'with' : 'without'} getent command`, async () => {
const res = await shellExec(`docker run -d ${image} sleep inf`);
const containerId = res.stdout.trim();
Expand All @@ -48,17 +51,17 @@ describe('getEntPasswdShellCommand', function () {
.catch(() => undefined);
assert.strictEqual(which?.stdout.trim(), getentPath);

await shellServer.exec(`adduser ${addUserOptions} /home/foo ${userName.replaceAll('\\', '\\\\')}`);
await shellServer.exec(addUserCommand);

const userByName = await getUserFromPasswdDB(shellServer, userName);
assert.ok(userByName);
assert.strictEqual(userByName.name, userName);
assert.strictEqual(userByName.home, '/home/foo');
assert.strictEqual(userByName.home, homeFolder);

const userById = await getUserFromPasswdDB(shellServer, userByName.uid);
assert.ok(userById);
assert.strictEqual(userById.name, userName);
assert.strictEqual(userById.home, '/home/foo');
assert.strictEqual(userById.home, homeFolder);

const nonexistentUser = await getUserFromPasswdDB(shellServer, '123456');
assert.strictEqual(undefined, nonexistentUser);
Expand Down
Loading