mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
Merge pull request #51228 from thaJeztah/move_some_integration_cli_tests
integration-cli: move some tests to integration
This commit is contained in:
@@ -644,105 +644,6 @@ func (s *DockerAPISuite) TestContainerAPIVerifyHeader(c *testing.T) {
|
||||
_ = body.Close()
|
||||
}
|
||||
|
||||
// Issue 14230. daemon should return 500 for invalid port syntax
|
||||
func (s *DockerAPISuite) TestContainerAPIInvalidPortSyntax(c *testing.T) {
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"NetworkMode": "default",
|
||||
"PortBindings": {
|
||||
"19039;1230": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
res, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, res.StatusCode, http.StatusBadRequest)
|
||||
|
||||
b, err := request.ReadBody(body)
|
||||
assert.NilError(c, err)
|
||||
assert.Assert(c, is.Contains(string(b[:]), "invalid port"))
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestContainerAPIRestartPolicyInvalidPolicyName(c *testing.T) {
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"RestartPolicy": {
|
||||
"Name": "something",
|
||||
"MaximumRetryCount": 0
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
res, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, res.StatusCode, http.StatusBadRequest)
|
||||
|
||||
b, err := request.ReadBody(body)
|
||||
assert.NilError(c, err)
|
||||
assert.Assert(c, is.Contains(string(b[:]), "invalid restart policy"))
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestContainerAPIRestartPolicyRetryMismatch(c *testing.T) {
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"RestartPolicy": {
|
||||
"Name": "always",
|
||||
"MaximumRetryCount": 2
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
res, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, res.StatusCode, http.StatusBadRequest)
|
||||
|
||||
b, err := request.ReadBody(body)
|
||||
assert.NilError(c, err)
|
||||
assert.Assert(c, is.Contains(string(b[:]), "invalid restart policy: maximum retry count can only be used with 'on-failure'"))
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestContainerAPIRestartPolicyNegativeRetryCount(c *testing.T) {
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"RestartPolicy": {
|
||||
"Name": "on-failure",
|
||||
"MaximumRetryCount": -2
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
res, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, res.StatusCode, http.StatusBadRequest)
|
||||
|
||||
b, err := request.ReadBody(body)
|
||||
assert.NilError(c, err)
|
||||
assert.Assert(c, is.Contains(string(b[:]), "maximum retry count cannot be negative"))
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestContainerAPIRestartPolicyDefaultRetryCount(c *testing.T) {
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"RestartPolicy": {
|
||||
"Name": "on-failure",
|
||||
"MaximumRetryCount": 0
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
res, _, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, res.StatusCode, http.StatusCreated)
|
||||
}
|
||||
|
||||
// Issue 7941 - test to make sure a "null" in JSON is just ignored.
|
||||
// W/o this fix a null in JSON would be parsed into a string var as "null"
|
||||
func (s *DockerAPISuite) TestContainerAPIPostCreateNull(c *testing.T) {
|
||||
@@ -789,26 +690,6 @@ func (s *DockerAPISuite) TestContainerAPIPostCreateNull(c *testing.T) {
|
||||
assert.Equal(c, outMemorySwap, "0")
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestCreateWithTooLowMemoryLimit(c *testing.T) {
|
||||
// TODO Windows: Port once memory is supported
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
"CpuShares": 100,
|
||||
"Memory": 524287
|
||||
}
|
||||
}`
|
||||
|
||||
res, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.RawString(config), request.JSON)
|
||||
assert.NilError(c, err)
|
||||
b, err2 := request.ReadBody(body)
|
||||
assert.NilError(c, err2)
|
||||
|
||||
assert.Equal(c, res.StatusCode, http.StatusBadRequest)
|
||||
assert.Assert(c, is.Contains(string(b), "Minimum memory limit allowed is 6MB"))
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestContainerAPIKill(c *testing.T) {
|
||||
const name = "test-api-kill"
|
||||
runSleepingContainer(c, "-i", "--name", name)
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
"github.com/moby/moby/v2/internal/testutil"
|
||||
"github.com/moby/moby/v2/internal/testutil/request"
|
||||
"gotest.tools/v3/assert"
|
||||
is "gotest.tools/v3/assert/cmp"
|
||||
)
|
||||
|
||||
type DockerAPISuite struct {
|
||||
@@ -40,13 +39,3 @@ func (s *DockerAPISuite) TestAPIGetEnabledCORS(c *testing.T) {
|
||||
// assert.Equal(c, res.Header.Get("Access-Control-Allow-Origin"), "*")
|
||||
// assert.Equal(c, res.Header.Get("Access-Control-Allow-Headers"), "Origin, X-Requested-With, Content-Type, Accept, X-Registry-Auth")
|
||||
}
|
||||
|
||||
func (s *DockerAPISuite) TestAPIErrorJSON(c *testing.T) {
|
||||
httpResp, body, err := request.Post(testutil.GetContext(c), "/containers/create", request.JSONBody(struct{}{}))
|
||||
assert.NilError(c, err)
|
||||
assert.Equal(c, httpResp.StatusCode, http.StatusBadRequest)
|
||||
assert.Assert(c, is.Contains(httpResp.Header.Get("Content-Type"), "application/json"))
|
||||
b, err := request.ReadBody(body)
|
||||
assert.NilError(c, err)
|
||||
assert.Check(c, is.Contains(getErrorMessage(c, b), "config cannot be empty"))
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"bufio"
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -11,6 +12,7 @@ import (
|
||||
|
||||
containerd "github.com/containerd/containerd/v2/client"
|
||||
cerrdefs "github.com/containerd/errdefs"
|
||||
"github.com/moby/moby/api/types/common"
|
||||
"github.com/moby/moby/api/types/container"
|
||||
"github.com/moby/moby/api/types/network"
|
||||
"github.com/moby/moby/api/types/versions"
|
||||
@@ -20,6 +22,7 @@ import (
|
||||
testContainer "github.com/moby/moby/v2/integration/internal/container"
|
||||
net "github.com/moby/moby/v2/integration/internal/network"
|
||||
"github.com/moby/moby/v2/internal/testutil"
|
||||
"github.com/moby/moby/v2/internal/testutil/request"
|
||||
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
"gotest.tools/v3/assert"
|
||||
is "gotest.tools/v3/assert/cmp"
|
||||
@@ -658,6 +661,79 @@ func TestCreateInvalidHostConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateValidation(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
body string
|
||||
skipOn string
|
||||
expStatus int
|
||||
expError string
|
||||
}{
|
||||
{
|
||||
name: "empty body",
|
||||
body: ``,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `invalid JSON: EOF`, // TODO(thaJeztah): this could use a nicer error message.
|
||||
},
|
||||
{
|
||||
name: "empty config",
|
||||
body: `{}`,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `config cannot be empty in order to create a container`,
|
||||
},
|
||||
{
|
||||
name: "invalid port syntax", // issue https://github.com/moby/moby/issues/14230 for invalid port syntax
|
||||
body: `{"Image": "busybox", "HostConfig": {"NetworkMode": "default", "PortBindings": {"19039;1230": [{}]}}}`,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `invalid JSON: invalid port '19039;1230': invalid syntax`,
|
||||
},
|
||||
{
|
||||
name: "invalid memory-limit: value too low",
|
||||
body: `{"Image": "busybox", "HostConfig": {"CpuShares": 100, "Memory": 524287}}`,
|
||||
skipOn: "windows", // TODO Windows: Port once memory is supported
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `Minimum memory limit allowed is 6MB`,
|
||||
},
|
||||
{
|
||||
name: "invalid restart policy name",
|
||||
body: `{"Image": "busybox", "HostConfig": {"RestartPolicy": {"Name": "something", "MaximumRetryCount": 0}}}`,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `invalid restart policy: unknown policy 'something'`,
|
||||
},
|
||||
{
|
||||
name: "invalid restart policy: retry not allowed",
|
||||
body: `{"Image": "busybox", "HostConfig": {"RestartPolicy": {"Name": "always", "MaximumRetryCount": 2}}}`,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `invalid restart policy: maximum retry count can only be used with 'on-failure'`,
|
||||
},
|
||||
{
|
||||
name: "invalid restart policy: retry negative",
|
||||
body: `{"Image": "busybox", "HostConfig": {"RestartPolicy": {"Name": "on-failure", "MaximumRetryCount": -2}}}`,
|
||||
expStatus: http.StatusBadRequest,
|
||||
expError: `invalid restart policy: maximum retry count cannot be negative`,
|
||||
},
|
||||
{
|
||||
name: "restart policy: default retry count",
|
||||
body: `{"Image": "busybox", "HostConfig": {"RestartPolicy": {"Name": "on-failure", "MaximumRetryCount": 0}}}`,
|
||||
expStatus: http.StatusCreated,
|
||||
},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
skip.If(t, testEnv.DaemonInfo.OSType == tc.skipOn)
|
||||
res, _, err := request.Post(testutil.GetContext(t), "/containers/create", request.RawString(tc.body), request.JSON)
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, res.StatusCode, tc.expStatus)
|
||||
|
||||
if tc.expError != "" {
|
||||
var respErr common.ErrorResponse
|
||||
assert.NilError(t, request.ReadJSONResponse(res, &respErr))
|
||||
assert.ErrorContains(t, respErr, tc.expError)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateWithMultipleEndpointSettings(t *testing.T) {
|
||||
ctx := setupTest(t)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user