Browse Source

fix: nil check parameters (#2321)

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
Moritz Johner 2 years ago
parent
commit
bbddc6f902
2 changed files with 40 additions and 3 deletions
  1. 5 3
      pkg/generator/vault/vault.go
  2. 35 0
      pkg/generator/vault/vault_test.go

+ 5 - 3
pkg/generator/vault/vault.go

@@ -83,9 +83,11 @@ func (g *Generator) generate(ctx context.Context, c *provider.Connector, jsonSpe
 		result, err = cl.Logical().DeleteWithContext(ctx, res.Spec.Path)
 	} else {
 		params := make(map[string]interface{})
-		err = json.Unmarshal(res.Spec.Parameters.Raw, &params)
-		if err != nil {
-			return nil, err
+		if res.Spec.Parameters != nil {
+			err = json.Unmarshal(res.Spec.Parameters.Raw, &params)
+			if err != nil {
+				return nil, err
+			}
 		}
 		result, err = cl.Logical().WriteWithContext(ctx, res.Spec.Path, params)
 	}

+ 35 - 0
pkg/generator/vault/vault_test.go

@@ -127,6 +127,41 @@ spec:
 				err: fmt.Errorf("unable to get dynamic secret: empty response from Vault"),
 			},
 		},
+		"EmptyVaultPOST": {
+			reason: "Fail on empty response from Vault.",
+			args: args{
+				corev1: utilfake.NewCreateTokenMock().WithToken("ok"),
+				jsonSpec: &apiextensions.JSON{
+					Raw: []byte(`apiVersion: generators.external-secrets.io/v1alpha1
+kind: VaultDynamicSecret
+spec:
+  provider:
+    auth:
+      kubernetes:
+        role: test
+        serviceAccountRef:
+          name: "testing"
+  method: POST
+  parameters:
+    foo: "bar"
+  path: "github/token/example"`),
+				},
+				kube: clientfake.NewClientBuilder().WithObjects(&corev1.ServiceAccount{
+					ObjectMeta: metav1.ObjectMeta{
+						Name:      "testing",
+						Namespace: "testing",
+					},
+					Secrets: []corev1.ObjectReference{
+						{
+							Name: "test",
+						},
+					},
+				}).Build(),
+			},
+			want: want{
+				err: fmt.Errorf("unable to get dynamic secret: empty response from Vault"),
+			},
+		},
 	}
 
 	for name, tc := range cases {