Преглед на файлове

Feat: ValidateStore for GitLab provider

Signed-off-by: Gustavo Carvalho <gustavo.carvalho@container-solutions.com>
William Young преди 4 години
родител
ревизия
35610a5a39
променени са 3 файла, в които са добавени 41 реда и са изтрити 0 реда
  1. 2 0
      pkg/controllers/externalsecret/suite_test.go
  2. 7 0
      pkg/provider/gitlab/gitlab.go
  3. 32 0
      pkg/provider/gitlab/gitlab_test.go

+ 2 - 0
pkg/controllers/externalsecret/suite_test.go

@@ -20,6 +20,8 @@ import (
 	"testing"
 	"testing"
 	"time"
 	"time"
 
 
+	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
+
 	. "github.com/onsi/ginkgo/v2"
 	. "github.com/onsi/ginkgo/v2"
 	. "github.com/onsi/gomega"
 	. "github.com/onsi/gomega"
 	"go.uber.org/zap/zapcore"
 	"go.uber.org/zap/zapcore"

+ 7 - 0
pkg/provider/gitlab/gitlab.go

@@ -237,5 +237,12 @@ func (g *Gitlab) Validate() (esv1beta1.ValidationResult, error) {
 }
 }
 
 
 func (g *Gitlab) ValidateStore(store esv1beta1.GenericStore) error {
 func (g *Gitlab) ValidateStore(store esv1beta1.GenericStore) error {
+	storeSpec := store.GetSpec()
+	gitlabSpec := storeSpec.Provider.Gitlab
+	accessToken := gitlabSpec.Auth.SecretRef.AccessToken
+	err := utils.ValidateSecretSelector(store, accessToken)
+	if err != nil {
+		return err
+	}
 	return nil
 	return nil
 }
 }

+ 32 - 0
pkg/provider/gitlab/gitlab_test.go

@@ -24,6 +24,7 @@ import (
 	gitlab "github.com/xanzy/go-gitlab"
 	gitlab "github.com/xanzy/go-gitlab"
 
 
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
 	esv1beta1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
+	v1 "github.com/external-secrets/external-secrets/apis/meta/v1"
 	fakegitlab "github.com/external-secrets/external-secrets/pkg/provider/gitlab/fake"
 	fakegitlab "github.com/external-secrets/external-secrets/pkg/provider/gitlab/fake"
 )
 )
 
 
@@ -230,3 +231,34 @@ func ErrorContains(out error, want string) bool {
 	}
 	}
 	return strings.Contains(out.Error(), want)
 	return strings.Contains(out.Error(), want)
 }
 }
+
+func TestValidateStore(t *testing.T) {
+	p := Gitlab{}
+	bing := "bing"
+	store := &esv1beta1.SecretStore{
+		Spec: esv1beta1.SecretStoreSpec{
+			Provider: &esv1beta1.SecretStoreProvider{
+				Gitlab: &esv1beta1.GitlabProvider{
+					Auth: esv1beta1.GitlabAuth{
+						SecretRef: esv1beta1.GitlabSecretRef{
+							AccessToken: v1.SecretKeySelector{
+								Name:      "Foo",
+								Key:       "Baa",
+								Namespace: &bing,
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+	err := p.ValidateStore(store)
+	if err == nil {
+		t.Errorf("want err got nil")
+	}
+	store.Spec.Provider.Gitlab.Auth.SecretRef.AccessToken.Namespace = nil
+	err = p.ValidateStore(store)
+	if err != nil {
+		t.Errorf("want nil got err: %v", err)
+	}
+}