Files
podman/libpod/container_internal_linux_test.go
Matt Heon 1916da5962 Fix a potential UID/GID collision in unit tests
The tests for generating username/passwd entries assume that
UID/GID 123/456 do not exist, which is not a safe assumption on
Debian. If a /etc/passwd entry with that UID/GID already exists,
the test will not add a new one with the same UID/GID, and will
fail. Change UID and GID to be 6 digits, because we're a lot less
likely to collide with UIDs and GIDs in use on the system that
way. Could also go further and randomly generate the UID/GID, but
that feels like overkill.

Fixes #17366

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-02-07 09:34:15 -05:00

64 lines
1.3 KiB
Go

//go:build linux
// +build linux
package libpod
import (
"testing"
spec "github.com/opencontainers/runtime-spec/specs-go"
"github.com/stretchr/testify/assert"
)
func TestGenerateUserPasswdEntry(t *testing.T) {
c := Container{
config: &ContainerConfig{
Spec: &spec.Spec{},
ContainerSecurityConfig: ContainerSecurityConfig{
User: "123456:456789",
},
},
state: &ContainerState{
Mountpoint: "/does/not/exist/tmp/",
},
}
user, err := c.generateUserPasswdEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, user, "123456:*:123456:456789:container user:/:/bin/sh\n")
c.config.User = "567890"
user, err = c.generateUserPasswdEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, user, "567890:*:567890:0:container user:/:/bin/sh\n")
}
func TestGenerateUserGroupEntry(t *testing.T) {
c := Container{
config: &ContainerConfig{
Spec: &spec.Spec{},
ContainerSecurityConfig: ContainerSecurityConfig{
User: "123456:456789",
},
},
state: &ContainerState{
Mountpoint: "/does/not/exist/tmp/",
},
}
group, err := c.generateUserGroupEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, group, "456789:x:456789:123456\n")
c.config.User = "567890"
group, err = c.generateUserGroupEntry(0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, group, "567890:x:567890:567890\n")
}