| package main | |
| import ( | |
| "bytes" | |
| "context" | |
| "os/exec" | |
| "strings" | |
| "testing" | |
| "github.com/docker/docker/integration-cli/cli" | |
| "gotest.tools/v3/assert" | |
| ) | |
| type DockerCLILoginSuite struct { | |
| ds *DockerSuite | |
| } | |
| func (s *DockerCLILoginSuite) TearDownTest(ctx context.Context, c *testing.T) { | |
| s.ds.TearDownTest(ctx, c) | |
| } | |
| func (s *DockerCLILoginSuite) OnTimeout(c *testing.T) { | |
| s.ds.OnTimeout(c) | |
| } | |
| func (s *DockerCLILoginSuite) TestLoginWithoutTTY(c *testing.T) { | |
| 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 non nil 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, strings.Contains(out, "401 Unauthorized")) | |
| // now it's fine | |
| cli.DockerCmd(c, "login", "-u", s.reg.Username(), "-p", s.reg.Password(), privateRegistryURL) | |
| } |