cli/command/registry: login: add unit test for flag validation

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2025-04-25 16:37:08 +02:00
parent aadd7879c9
commit 8845ccd60f
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C

View File

@ -4,6 +4,7 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"io"
"path/filepath" "path/filepath"
"testing" "testing"
"time" "time"
@ -539,3 +540,51 @@ func TestIsOauthLoginDisabled(t *testing.T) {
assert.Equal(t, disabled, tc.disabled) assert.Equal(t, disabled, tc.disabled)
} }
} }
func TestLoginValidateFlags(t *testing.T) {
for _, tc := range []struct {
name string
args []string
expectedErr string
}{
{
name: "--password-stdin without --username",
args: []string{"--password-stdin"},
expectedErr: `Must provide --username with --password-stdin`,
},
{
name: "--password-stdin with empty --username",
args: []string{"--password-stdin", "--username", ""},
expectedErr: `Must provide --username with --password-stdin`,
},
{
name: "--username without value",
args: []string{"--username"},
expectedErr: `flag needs an argument: --username`,
},
{
name: "conflicting options --password-stdin and --password",
args: []string{"--password-stdin", "--password", ""},
expectedErr: `Must provide --username with --password-stdin`,
},
{
name: "--password without value",
args: []string{"--password"},
expectedErr: `flag needs an argument: --password`,
},
} {
t.Run(tc.name, func(t *testing.T) {
cmd := NewLoginCommand(test.NewFakeCli(&fakeClient{}))
cmd.SetOut(io.Discard)
cmd.SetErr(io.Discard)
cmd.SetArgs(tc.args)
err := cmd.Execute()
if tc.expectedErr != "" {
assert.Check(t, is.ErrorContains(err, tc.expectedErr))
} else {
assert.Check(t, is.Nil(err))
}
})
}
}