|
|
@@ -34,6 +34,7 @@ const (
|
|
|
errTestFetchCredentialsSecret = "test could not fetch Credentials secret failed"
|
|
|
errTestAuthValue = "test failed key didn't match expected value"
|
|
|
errSomethingWentWrong = "Something went wrong"
|
|
|
+ errExpectedErr = "wanted error got nil"
|
|
|
)
|
|
|
|
|
|
type fakeClient struct {
|
|
|
@@ -261,6 +262,98 @@ func TestKubernetesSecretManagerSetAuth(t *testing.T) {
|
|
|
t.Error(errTestAuthValue)
|
|
|
}
|
|
|
}
|
|
|
+func TestValidateStore(t *testing.T) {
|
|
|
+ p := ProviderKubernetes{}
|
|
|
+ store := &esv1beta1.SecretStore{
|
|
|
+ Spec: esv1beta1.SecretStoreSpec{
|
|
|
+ Provider: &esv1beta1.SecretStoreProvider{
|
|
|
+ Kubernetes: &esv1beta1.KubernetesProvider{},
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+ secretName := "my-secret-name"
|
|
|
+ secretKey := "my-secert-key"
|
|
|
+ err := p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "a CABundle or CAProvider is required" {
|
|
|
+ t.Errorf("service CA test failed, got %v", err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ bundle := []byte("ca-bundle")
|
|
|
+ store.Spec.Provider.Kubernetes.Server.CABundle = bundle
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "an Auth type must be specified" {
|
|
|
+ t.Errorf("empty Auth test failed")
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth = esv1beta1.KubernetesAuth{Cert: &esv1beta1.CertAuth{}}
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "ClientCert.Name cannot be empty" {
|
|
|
+ t.Errorf("KeySelector test failed: expected clientCert name is required, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Cert.ClientCert.Name = secretName
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "ClientCert.Key cannot be empty" {
|
|
|
+ t.Errorf("KeySelector test failed: expected clientCert Key is required, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Cert.ClientCert.Key = secretKey
|
|
|
+ ns := "ns-one"
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Cert.ClientCert.Namespace = &ns
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "namespace not allowed with namespaced SecretStore" {
|
|
|
+ t.Errorf("KeySelector test failed: expected namespace not allowed, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth = esv1beta1.KubernetesAuth{Token: &esv1beta1.TokenAuth{}}
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "BearerToken.Name cannot be empty" {
|
|
|
+ t.Errorf("KeySelector test failed: expected bearer token name is required, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Token.BearerToken.Name = secretName
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "BearerToken.Key cannot be empty" {
|
|
|
+ t.Errorf("KeySelector test failed: expected bearer token key is required, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Token.BearerToken.Key = secretKey
|
|
|
+ store.Spec.Provider.Kubernetes.Auth.Token.BearerToken.Namespace = &ns
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "namespace not allowed with namespaced SecretStore" {
|
|
|
+ t.Errorf("KeySelector test failed: expected namespace not allowed, got %v", err)
|
|
|
+ }
|
|
|
+ store.Spec.Provider.Kubernetes.Auth = esv1beta1.KubernetesAuth{
|
|
|
+ Cert: &esv1beta1.CertAuth{
|
|
|
+ ClientCert: v1.SecretKeySelector{
|
|
|
+ Name: secretName,
|
|
|
+ Key: secretKey,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ Token: &esv1beta1.TokenAuth{
|
|
|
+ BearerToken: v1.SecretKeySelector{
|
|
|
+ Name: secretName,
|
|
|
+ Key: secretKey,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = p.ValidateStore(store)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf(errExpectedErr)
|
|
|
+ } else if err.Error() != "only one authentication method is allowed" {
|
|
|
+ t.Errorf("KeySelector test failed: expected only one auth method allowed, got %v", err)
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
func ErrorContains(out error, want string) bool {
|
|
|
if out == nil {
|