moby/integration/image/pull_test.go

25 lines
729 B
Go
Raw Normal View History

Add regression tests for invalid platform status codes Before we handled containerd errors, using an invalid platform produced a 500 status: ```bash curl -v \ -X POST \ --unix-socket /var/run/docker.sock \ "http://localhost:2375/v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest" \ -H "Content-Type: application/json" ``` ``` * Connected to localhost (docker.sock) port 80 (#0) > POST /v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest HTTP/1.1 > Host: localhost:2375 > User-Agent: curl/7.54.0 > Accept: */* > Content-Type: application/json > < HTTP/1.1 500 Internal Server Error < Api-Version: 1.40 < Content-Length: 85 < Content-Type: application/json < Date: Mon, 15 Jul 2019 15:25:44 GMT < Docker-Experimental: true < Ostype: linux < Server: Docker/19.03.0-rc2 (linux) < {"message":"\"foobar\": unknown operating system or architecture: invalid argument"} ``` That problem is now fixed, and the API correctly returns a 4xx status: ```bash curl -v \ -X POST \ --unix-socket /var/run/docker.sock \ "http://localhost:2375/v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest" \ -H "Content-Type: application/json" ``` ``` * Connected to localhost (/var/run/docker.sock) port 80 (#0) > POST /v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest HTTP/1.1 > Host: localhost:2375 > User-Agent: curl/7.52.1 > Accept: */* > Content-Type: application/json > < HTTP/1.1 400 Bad Request < Api-Version: 1.41 < Content-Type: application/json < Docker-Experimental: true < Ostype: linux < Server: Docker/dev (linux) < Date: Mon, 15 Jul 2019 15:13:42 GMT < Content-Length: 85 < {"message":"\"foobar\": unknown operating system or architecture: invalid argument"} * Curl_http_done: called premature == 0 ``` This patch adds tests to validate the behaviour Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-07-15 16:19:31 +00:00
package image
import (
"context"
"testing"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/versions"
"github.com/docker/docker/errdefs"
"gotest.tools/v3/assert"
"gotest.tools/v3/skip"
Add regression tests for invalid platform status codes Before we handled containerd errors, using an invalid platform produced a 500 status: ```bash curl -v \ -X POST \ --unix-socket /var/run/docker.sock \ "http://localhost:2375/v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest" \ -H "Content-Type: application/json" ``` ``` * Connected to localhost (docker.sock) port 80 (#0) > POST /v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest HTTP/1.1 > Host: localhost:2375 > User-Agent: curl/7.54.0 > Accept: */* > Content-Type: application/json > < HTTP/1.1 500 Internal Server Error < Api-Version: 1.40 < Content-Length: 85 < Content-Type: application/json < Date: Mon, 15 Jul 2019 15:25:44 GMT < Docker-Experimental: true < Ostype: linux < Server: Docker/19.03.0-rc2 (linux) < {"message":"\"foobar\": unknown operating system or architecture: invalid argument"} ``` That problem is now fixed, and the API correctly returns a 4xx status: ```bash curl -v \ -X POST \ --unix-socket /var/run/docker.sock \ "http://localhost:2375/v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest" \ -H "Content-Type: application/json" ``` ``` * Connected to localhost (/var/run/docker.sock) port 80 (#0) > POST /v1.40/images/create?fromImage=hello-world&platform=foobar&tag=latest HTTP/1.1 > Host: localhost:2375 > User-Agent: curl/7.52.1 > Accept: */* > Content-Type: application/json > < HTTP/1.1 400 Bad Request < Api-Version: 1.41 < Content-Type: application/json < Docker-Experimental: true < Ostype: linux < Server: Docker/dev (linux) < Date: Mon, 15 Jul 2019 15:13:42 GMT < Content-Length: 85 < {"message":"\"foobar\": unknown operating system or architecture: invalid argument"} * Curl_http_done: called premature == 0 ``` This patch adds tests to validate the behaviour Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-07-15 16:19:31 +00:00
)
func TestImagePullPlatformInvalid(t *testing.T) {
skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "experimental in older versions")
defer setupTest(t)()
client := testEnv.APIClient()
ctx := context.Background()
_, err := client.ImagePull(ctx, "docker.io/library/hello-world:latest", types.ImagePullOptions{Platform: "foobar"})
assert.Assert(t, err != nil)
assert.ErrorContains(t, err, "unknown operating system or architecture")
assert.Assert(t, errdefs.IsInvalidParameter(err))
}