From a1c4a0f9e8ccc99b239db35597e507e00148538e Mon Sep 17 00:00:00 2001 From: Jon Johnson Date: Wed, 2 Oct 2019 12:41:50 -0700 Subject: [PATCH] Allow username/password in config file Signed-off-by: Jon Johnson (cherry picked from commit 37e9cabf1158977f2ab3528a31140cc21723ff3a) Signed-off-by: Sebastiaan van Stijn --- cli/config/configfile/file.go | 8 +++++--- cli/config/configfile/file_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/cli/config/configfile/file.go b/cli/config/configfile/file.go index 67ae655b0b..388a5d54d6 100644 --- a/cli/config/configfile/file.go +++ b/cli/config/configfile/file.go @@ -123,9 +123,11 @@ func (configFile *ConfigFile) LoadFromReader(configData io.Reader) error { } var err error for addr, ac := range configFile.AuthConfigs { - ac.Username, ac.Password, err = decodeAuth(ac.Auth) - if err != nil { - return err + if ac.Auth != "" { + ac.Username, ac.Password, err = decodeAuth(ac.Auth) + if err != nil { + return err + } } ac.Auth = "" ac.ServerAddress = addr diff --git a/cli/config/configfile/file_test.go b/cli/config/configfile/file_test.go index dc00572677..dc4831ea3a 100644 --- a/cli/config/configfile/file_test.go +++ b/cli/config/configfile/file_test.go @@ -2,6 +2,7 @@ package configfile import ( "bytes" + "encoding/json" "io/ioutil" "os" "testing" @@ -380,6 +381,33 @@ func TestGetAllCredentialsCredHelperOverridesDefaultStore(t *testing.T) { assert.Check(t, is.Equal(0, testCredHelper.(*mockNativeStore).GetAllCallCount)) } +func TestLoadFromReaderWithUsernamePassword(t *testing.T) { + configFile := New("test-load") + defer os.Remove("test-load") + + want := types.AuthConfig{ + Username: "user", + Password: "pass", + } + cf := ConfigFile{ + AuthConfigs: map[string]types.AuthConfig{ + "example.com/foo": want, + }, + } + + b, err := json.Marshal(cf) + assert.NilError(t, err) + + err = configFile.LoadFromReader(bytes.NewReader(b)) + assert.NilError(t, err) + + got, err := configFile.GetAuthConfig("example.com/foo") + assert.NilError(t, err) + + assert.Check(t, is.DeepEqual(want.Username, got.Username)) + assert.Check(t, is.DeepEqual(want.Password, got.Password)) +} + func TestCheckKubernetesConfigurationRaiseAnErrorOnInvalidValue(t *testing.T) { testCases := []struct { name string