Migrate TestCreateTmpfsMountsTarget test to api test
This fix migrates TestCreateTmpfsMountsTarget test to api test,
and removed integration-cli/docker_cli_create_unix_test.go
@@ -9,6 +9,7 @@ import (
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/integration/util/request"
"github.com/docker/docker/internal/testutil"
+ "github.com/gotestyourself/gotestyourself/skip"
)
func TestCreateFailsWhenIdentifierDoesNotExist(t *testing.T) {
@@ -91,3 +92,47 @@ func TestCreateWithInvalidEnv(t *testing.T) {
})
}
}
+
+// Test case for #30166 (target was not validated)
+func TestCreateTmpfsMountsTarget(t *testing.T) {
+ skip.If(t, testEnv.DaemonInfo.OSType != "linux")
+
+ defer setupTest(t)()
+ client := request.NewAPIClient(t)
+
+ testCases := []struct {
+ target string
+ expectedError string
+ }{
+ {
+ target: ".",
+ expectedError: "mount path must be absolute",
+ },
+ {
+ target: "foo",
+ expectedError: "mount path must be absolute",
+ },
+ {
+ target: "/",
+ expectedError: "destination can't be '/'",
+ },
+ {
+ target: "//",
+ expectedError: "destination can't be '/'",
+ },
+ }
+
+ for _, tc := range testCases {
+ _, err := client.ContainerCreate(context.Background(),
+ &container.Config{
+ Image: "busybox",
+ },
+ &container.HostConfig{
+ Tmpfs: map[string]string{tc.target: ""},
+ },
+ &network.NetworkingConfig{},
+ "",
+ )
+ testutil.ErrorContains(t, err, tc.expectedError)
+ }
+}
