From cad593b9ac989bcb747924bd5fd7464489261d04 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Sat, 12 Mar 2016 20:34:07 +0100 Subject: [PATCH] integration-cli: add tests for case a) and d) in #21054 - add test for pull from private registry with no credentials - add test for push to docker hub with no credentials Signed-off-by: Antonio Murdaca Signed-off-by: Antonio Murdaca Signed-off-by: Antonio Murdaca Upstream-commit: 6d23c3c57a733436d902b7883f2f0b00846df9e2 Component: engine --- .../engine/integration-cli/docker_cli_pull_test.go | 9 +++++++++ .../engine/integration-cli/docker_cli_push_test.go | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/components/engine/integration-cli/docker_cli_pull_test.go b/components/engine/integration-cli/docker_cli_pull_test.go index 43369c8ed6..8722405a43 100644 --- a/components/engine/integration-cli/docker_cli_pull_test.go +++ b/components/engine/integration-cli/docker_cli_pull_test.go @@ -254,3 +254,12 @@ func (s *DockerHubPullSuite) TestPullClientDisconnect(c *check.C) { _, err = s.CmdWithError("inspect", repoName) c.Assert(err, checker.NotNil, check.Commentf("image was pulled after client disconnected")) } + +func (s *DockerRegistryAuthSuite) TestPullNoCredentialsNotFound(c *check.C) { + // we don't care about the actual image, we just want to see image not found + // because that means v2 call returned 401 and we fell back to v1 which usually + // gives a 404 (in this case the test registry doesn't handle v1 at all) + out, _, err := dockerCmdWithError("pull", privateRegistryURL+"/busybox") + c.Assert(err, check.NotNil, check.Commentf(out)) + c.Assert(out, checker.Contains, "Error: image busybox not found") +} diff --git a/components/engine/integration-cli/docker_cli_push_test.go b/components/engine/integration-cli/docker_cli_push_test.go index 8c05342d27..a7e10badb9 100644 --- a/components/engine/integration-cli/docker_cli_push_test.go +++ b/components/engine/integration-cli/docker_cli_push_test.go @@ -535,3 +535,13 @@ func (s *DockerRegistryAuthSuite) TestPushNoCredentialsNoRetry(c *check.C) { c.Assert(out, check.Not(checker.Contains), "Retrying") c.Assert(out, checker.Contains, "no basic auth credentials") } + +// This may be flaky but it's needed not to regress on unauthorized push, see #21054 +func (s *DockerSuite) TestPushToCentralRegistryUnauthorized(c *check.C) { + testRequires(c, Network) + repoName := "test/busybox" + dockerCmd(c, "tag", "busybox", repoName) + out, _, err := dockerCmdWithError("push", repoName) + c.Assert(err, check.NotNil, check.Commentf(out)) + c.Assert(out, checker.Contains, "unauthorized: access to the requested resource is not authorized") +}