From 12a984d70f5bdcdb33d752233031e5208daba863 Mon Sep 17 00:00:00 2001 From: yxxhero <11087727+yxxhero@users.noreply.github.com> Date: Thu, 1 Jun 2023 13:41:45 +0800 Subject: [PATCH] feat: set RepositorySpec.PassCredentials var type to bool (#878) * feat: set RepositorySpec.PassCredentials var type to bool Signed-off-by: yxxhero --- pkg/app/app_test.go | 2 +- pkg/exectest/helm.go | 4 +- pkg/helmexec/exec.go | 4 +- pkg/helmexec/exec_test.go | 24 ++++----- pkg/helmexec/helmexec.go | 2 +- pkg/state/state.go | 4 +- pkg/state/state_test.go | 110 ++++++++++++++++++-------------------- pkg/testutil/mocks.go | 2 +- 8 files changed, 72 insertions(+), 80 deletions(-) diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index bd2f9137..8c5292b5 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -2469,7 +2469,7 @@ func (helm *mockHelmExec) SetEnableLiveOutput(enableLiveOutput bool) { func (helm *mockHelmExec) SetDisableForceUpdate(forceUpdate bool) { } -func (helm *mockHelmExec) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error { +func (helm *mockHelmExec) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error { helm.repos = append(helm.repos, mockRepo{Name: name}) return nil } diff --git a/pkg/exectest/helm.go b/pkg/exectest/helm.go index 6019a429..ca54bcc4 100644 --- a/pkg/exectest/helm.go +++ b/pkg/exectest/helm.go @@ -94,8 +94,8 @@ func (helm *Helm) SetEnableLiveOutput(enableLiveOutput bool) { } func (helm *Helm) SetDisableForceUpdate(forceUpdate bool) { } -func (helm *Helm) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error { - helm.Repo = []string{name, repository, cafile, certfile, keyfile, username, password, managed, passCredentials, fmt.Sprintf("%v", skipTLSVerify)} +func (helm *Helm) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error { + helm.Repo = []string{name, repository, cafile, certfile, keyfile, username, password, managed, fmt.Sprintf("%v", passCredentials), fmt.Sprintf("%v", skipTLSVerify)} return nil } func (helm *Helm) UpdateRepo() error { diff --git a/pkg/helmexec/exec.go b/pkg/helmexec/exec.go index 1215d1db..2e527243 100644 --- a/pkg/helmexec/exec.go +++ b/pkg/helmexec/exec.go @@ -148,7 +148,7 @@ func (helm *execer) SetDisableForceUpdate(forceUpdate bool) { helm.options.DisableForceUpdate = forceUpdate } -func (helm *execer) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error { +func (helm *execer) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error { var args []string var out []byte var err error @@ -181,7 +181,7 @@ func (helm *execer) AddRepo(name, repository, cafile, certfile, keyfile, usernam if username != "" && password != "" { args = append(args, "--username", username, "--password", password) } - if passCredentials == "true" { + if passCredentials { args = append(args, "--pass-credentials") } if skipTLSVerify { diff --git a/pkg/helmexec/exec_test.go b/pkg/helmexec/exec_test.go index b52f5506..e8069141 100644 --- a/pkg/helmexec/exec_test.go +++ b/pkg/helmexec/exec_test.go @@ -114,7 +114,7 @@ func Test_AddRepo_Helm_3_3_2(t *testing.T) { kubeContext: "dev", runner: &mockRunner{}, } - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", "", false) + err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) expected := `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --force-update --cert-file cert.pem --key-file key.pem ` @@ -138,7 +138,7 @@ func Test_AddRepo_Helm_3_3_2_NoForceUpdate(t *testing.T) { kubeContext: "dev", runner: &mockRunner{}, } - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", "", false) + err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) expected := `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem ` @@ -155,7 +155,7 @@ func Test_AddRepo(t *testing.T) { var buffer bytes.Buffer logger := NewLogger(&buffer, "debug") helm := MockExecer(logger, "dev") - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", "", false) + err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) expected := `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem ` @@ -168,7 +168,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --cert-f } buffer.Reset() - err = helm.AddRepo("myRepo", "https://repo.example.com/", "ca.crt", "", "", "", "", "", "", false) + err = helm.AddRepo("myRepo", "https://repo.example.com/", "ca.crt", "", "", "", "", "", false, false) expected = `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --ca-file ca.crt ` @@ -181,7 +181,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --ca-fil } buffer.Reset() - err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "", "", "", "", false) + err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "", "", "", false, false) expected = `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ ` @@ -194,7 +194,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ } buffer.Reset() - err = helm.AddRepo("acrRepo", "", "", "", "", "", "", "acr", "", false) + err = helm.AddRepo("acrRepo", "", "", "", "", "", "", "acr", false, false) expected = `Adding repo acrRepo (acr) exec: az acr helm repo add --name acrRepo exec: az acr helm repo add --name acrRepo: @@ -208,7 +208,7 @@ exec: az acr helm repo add --name acrRepo: } buffer.Reset() - err = helm.AddRepo("otherRepo", "", "", "", "", "", "", "unknown", "", false) + err = helm.AddRepo("otherRepo", "", "", "", "", "", "", "unknown", false, false) expected = `ERROR: unknown type 'unknown' for repository otherRepo ` if err != nil { @@ -219,7 +219,7 @@ exec: az acr helm repo add --name acrRepo: } buffer.Reset() - err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", "", false) + err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", false, false) expected = `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --username example_user --password example_password ` @@ -231,7 +231,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --userna } buffer.Reset() - err = helm.AddRepo("", "https://repo.example.com/", "", "", "", "", "", "", "", false) + err = helm.AddRepo("", "https://repo.example.com/", "", "", "", "", "", "", false, false) expected = `empty field name ` @@ -243,7 +243,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --userna } buffer.Reset() - err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", "true", false) + err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", true, false) expected = `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --username example_user --password example_password --pass-credentials ` @@ -255,7 +255,7 @@ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --userna } buffer.Reset() - err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "", "", "", "", true) + err = helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "", "", "", false, true) expected = `Adding repo myRepo https://repo.example.com/ exec: helm --kube-context dev repo add myRepo https://repo.example.com/ --insecure-skip-tls-verify ` @@ -856,7 +856,7 @@ func Test_LogLevels(t *testing.T) { buffer.Reset() logger := NewLogger(&buffer, logLevel) helm := MockExecer(logger, "") - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", "", false) + err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "", "", "example_user", "example_password", "", false, false) if err != nil { t.Errorf("unexpected error: %v", err) } diff --git a/pkg/helmexec/helmexec.go b/pkg/helmexec/helmexec.go index d2f096b2..0ced7c3a 100644 --- a/pkg/helmexec/helmexec.go +++ b/pkg/helmexec/helmexec.go @@ -16,7 +16,7 @@ type Interface interface { SetEnableLiveOutput(enableLiveOutput bool) SetDisableForceUpdate(forceUpdate bool) - AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error + AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error UpdateRepo() error RegistryLogin(name string, username string, password string) error BuildDeps(name, chart string, flags ...string) error diff --git a/pkg/state/state.go b/pkg/state/state.go index 8eb812ed..1ec70e9c 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -209,7 +209,7 @@ type RepositorySpec struct { Password string `yaml:"password,omitempty"` Managed string `yaml:"managed,omitempty"` OCI bool `yaml:"oci,omitempty"` - PassCredentials string `yaml:"passCredentials,omitempty"` + PassCredentials bool `yaml:"passCredentials,omitempty"` SkipTLSVerify bool `yaml:"skipTLSVerify,omitempty"` } @@ -499,7 +499,7 @@ func (st *HelmState) ApplyOverrides(spec *ReleaseSpec) { type RepoUpdater interface { IsHelm3() bool - AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error + AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error UpdateRepo() error RegistryLogin(name string, username string, password string) error } diff --git a/pkg/state/state_test.go b/pkg/state/state_test.go index 7202306c..3e3d2c27 100644 --- a/pkg/state/state_test.go +++ b/pkg/state/state_test.go @@ -1073,7 +1073,6 @@ func Test_normalizeChart(t *testing.T) { } // mocking helmexec.Interface - func TestHelmState_SyncRepos(t *testing.T) { tests := []struct { name string @@ -1086,17 +1085,16 @@ func TestHelmState_SyncRepos(t *testing.T) { name: "normal repository", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "", - KeyFile: "", - Username: "", - Password: "", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CertFile: "", + KeyFile: "", + Username: "", + Password: "", }, }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "", "", "", "", "", "", "false"}, + want: []string{"name", "http://example.com/", "", "", "", "", "", "", "false", "false"}, }, { name: "ACR hosted repository", @@ -1107,54 +1105,51 @@ func TestHelmState_SyncRepos(t *testing.T) { }, }, helm: &exectest.Helm{}, - want: []string{"name", "", "", "", "", "", "", "acr", "", "false"}, + want: []string{"name", "", "", "", "", "", "", "acr", "false", "false"}, }, { name: "repository with cert and key", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "certfile", - KeyFile: "keyfile", - Username: "", - Password: "", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CertFile: "certfile", + KeyFile: "keyfile", + Username: "", + Password: "", }, }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "certfile", "keyfile", "", "", "", "", "false"}, + want: []string{"name", "http://example.com/", "", "certfile", "keyfile", "", "", "", "false", "false"}, }, { name: "repository with ca file", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CaFile: "cafile", - Username: "", - Password: "", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CaFile: "cafile", + Username: "", + Password: "", }, }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "cafile", "", "", "", "", "", "", "false"}, + want: []string{"name", "http://example.com/", "cafile", "", "", "", "", "", "false", "false"}, }, { name: "repository with username and password", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "", - KeyFile: "", - Username: "example_user", - Password: "example_password", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CertFile: "", + KeyFile: "", + Username: "example_user", + Password: "example_password", }, }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "", "false"}, + want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "false", "false"}, }, { name: "repository with username and password and pass-credentials", @@ -1166,7 +1161,7 @@ func TestHelmState_SyncRepos(t *testing.T) { KeyFile: "", Username: "example_user", Password: "example_password", - PassCredentials: "true", + PassCredentials: true, }, }, helm: &exectest.Helm{}, @@ -1176,13 +1171,12 @@ func TestHelmState_SyncRepos(t *testing.T) { name: "repository without username and password and environment with username and password", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "", - KeyFile: "", - Username: "", - Password: "", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CertFile: "", + KeyFile: "", + Username: "", + Password: "", }, }, envs: map[string]string{ @@ -1190,19 +1184,18 @@ func TestHelmState_SyncRepos(t *testing.T) { "NAME_PASSWORD": "example_password", }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "", "false"}, + want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "false", "false"}, }, { name: "repository with username and password and environment with username and password", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "", - KeyFile: "", - Username: "example_user1", - Password: "example_password1", - PassCredentials: "", + Name: "name", + URL: "http://example.com/", + CertFile: "", + KeyFile: "", + Username: "example_user1", + Password: "example_password1", }, }, envs: map[string]string{ @@ -1210,24 +1203,23 @@ func TestHelmState_SyncRepos(t *testing.T) { "NAME_PASSWORD": "example_password2", }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "", "", "example_user1", "example_password1", "", "", "false"}, + want: []string{"name", "http://example.com/", "", "", "", "example_user1", "example_password1", "", "false", "false"}, }, { name: "repository with skip-tls-verify", repos: []RepositorySpec{ { - Name: "name", - URL: "http://example.com/", - CertFile: "", - KeyFile: "", - Username: "", - Password: "", - PassCredentials: "", - SkipTLSVerify: true, + Name: "name", + URL: "http://example.com/", + CertFile: "", + KeyFile: "", + Username: "", + Password: "", + SkipTLSVerify: true, }, }, helm: &exectest.Helm{}, - want: []string{"name", "http://example.com/", "", "", "", "", "", "", "", "true"}, + want: []string{"name", "http://example.com/", "", "", "", "", "", "", "false", "true"}, }, } for i := range tests { diff --git a/pkg/testutil/mocks.go b/pkg/testutil/mocks.go index 9c0fd74e..be79e3cc 100644 --- a/pkg/testutil/mocks.go +++ b/pkg/testutil/mocks.go @@ -77,7 +77,7 @@ func (helm *noCallHelmExec) SetDisableForceUpdate(forceUpdate bool) { helm.doPanic() } -func (helm *noCallHelmExec) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials string, skipTLSVerify bool) error { +func (helm *noCallHelmExec) AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string, passCredentials, skipTLSVerify bool) error { helm.doPanic() return nil }