| package main | |
| import ( | |
| "bytes" | |
| "context" | |
| "os/exec" | |
| "runtime" | |
| "testing" | |
| "github.com/moby/moby/v2/integration-cli/cli" | |
| "gotest.tools/v3/assert" | |
| is "gotest.tools/v3/assert/cmp" | |
| "gotest.tools/v3/skip" | |
| ) | |
| type DockerCLILoginSuite struct { | |
| ds *DockerSuite | |
| } | |
| func (s *DockerCLILoginSuite) TearDownTest(ctx context.Context, t *testing.T) { | |
| s.ds.TearDownTest(ctx, t) | |
| } | |
| func (s *DockerCLILoginSuite) OnTimeout(t *testing.T) { | |
| s.ds.OnTimeout(t) | |
| } | |
| func (s *DockerCLILoginSuite) TestLoginWithoutTTY(c *testing.T) { | |
| skip.If(c, runtime.GOOS == "windows", "FIXME: doesn't produce error without TTY with CLI v25.0") | |
| cmd := exec.Command(dockerBinary, "login") | |
| // Send to stdin so the process does not get the TTY | |
| cmd.Stdin = bytes.NewBufferString("buffer test string \n") | |
| // run the command and block until it's done | |
| err := cmd.Run() | |
| assert.ErrorContains(c, err, "", "Expected an err when logging in & TTY not available") | |
| } | |
| func (s *DockerRegistryAuthHtpasswdSuite) TestLoginToPrivateRegistry(c *testing.T) { | |
| // wrong credentials | |
| out, _, err := dockerCmdWithError("login", "-u", s.reg.Username(), "-p", "WRONGPASSWORD", privateRegistryURL) | |
| assert.ErrorContains(c, err, "", out) | |
| assert.Assert(c, is.Contains(out, "401 Unauthorized")) | |
| // now it's fine | |
| cli.DockerCmd(c, "login", "-u", s.reg.Username(), "-p", s.reg.Password(), privateRegistryURL) | |
| } |