Browse Source

TIL you can range over nil slices in go

Willem Monsuwe 4 years ago
parent
commit
fe043ed8ed
2 changed files with 24 additions and 29 deletions
  1. 18 21
      pkg/provider/webhook/webhook.go
  2. 6 8
      pkg/provider/webhook/webhook_test.go

+ 18 - 21
pkg/provider/webhook/webhook.go

@@ -172,22 +172,21 @@ func (w *WebHook) GetSecretMap(ctx context.Context, ref esv1alpha1.ExternalSecre
 func (w *WebHook) getTemplateData(ctx context.Context, ref esv1alpha1.ExternalSecretDataRemoteRef, secrets []esv1alpha1.WebhookSecret) (map[string]map[string]string, error) {
 func (w *WebHook) getTemplateData(ctx context.Context, ref esv1alpha1.ExternalSecretDataRemoteRef, secrets []esv1alpha1.WebhookSecret) (map[string]map[string]string, error) {
 	data := map[string]map[string]string{
 	data := map[string]map[string]string{
 		"remoteRef": {
 		"remoteRef": {
-			"key":     url.QueryEscape(ref.Key),
-			"version": url.QueryEscape(ref.Version),
+			"key":      url.QueryEscape(ref.Key),
+			"version":  url.QueryEscape(ref.Version),
+			"property": url.QueryEscape(ref.Property),
 		},
 		},
 	}
 	}
-	if secrets != nil {
-		for _, secref := range secrets {
-			if _, ok := data[secref.Name]; !ok {
-				data[secref.Name] = make(map[string]string)
-			}
-			secret, err := w.getStoreSecret(ctx, secref.SecretRef)
-			if err != nil {
-				return nil, err
-			}
-			for sKey, sVal := range secret.Data {
-				data[secref.Name][sKey] = string(sVal)
-			}
+	for _, secref := range secrets {
+		if _, ok := data[secref.Name]; !ok {
+			data[secref.Name] = make(map[string]string)
+		}
+		secret, err := w.getStoreSecret(ctx, secref.SecretRef)
+		if err != nil {
+			return nil, err
+		}
+		for sKey, sVal := range secret.Data {
+			data[secref.Name][sKey] = string(sVal)
 		}
 		}
 	}
 	}
 	return data, nil
 	return data, nil
@@ -215,14 +214,12 @@ func (w *WebHook) getWebhookData(ctx context.Context, provider *esv1alpha1.Webho
 	if err != nil {
 	if err != nil {
 		return nil, fmt.Errorf("failed to create request: %w", err)
 		return nil, fmt.Errorf("failed to create request: %w", err)
 	}
 	}
-	if provider.Headers != nil {
-		for hKey, hValueTpl := range provider.Headers {
-			hValue, err := executeTemplateString(hValueTpl, data)
-			if err != nil {
-				return nil, fmt.Errorf("failed to parse header %s: %w", hKey, err)
-			}
-			req.Header.Add(hKey, hValue)
+	for hKey, hValueTpl := range provider.Headers {
+		hValue, err := executeTemplateString(hValueTpl, data)
+		if err != nil {
+			return nil, fmt.Errorf("failed to parse header %s: %w", hKey, err)
 		}
 		}
+		req.Header.Add(hKey, hValue)
 	}
 	}
 
 
 	client, err := w.getHTTPClient(provider)
 	client, err := w.getHTTPClient(provider)

+ 6 - 8
pkg/provider/webhook/webhook_test.go

@@ -281,14 +281,12 @@ func testGetSecretMap(tc testCase, t *testing.T, client provider.SecretsClient)
 	if (tc.Want.Err == "") != (errStr == "") || !strings.Contains(errStr, tc.Want.Err) {
 	if (tc.Want.Err == "") != (errStr == "") || !strings.Contains(errStr, tc.Want.Err) {
 		t.Errorf("%s: unexpected error: '%s' (expected '%s')", tc.Case, errStr, tc.Want.Err)
 		t.Errorf("%s: unexpected error: '%s' (expected '%s')", tc.Case, errStr, tc.Want.Err)
 	}
 	}
-	if err == nil {
-		for wantkey, wantval := range tc.Want.ResultMap {
-			gotval, ok := secretmap[wantkey]
-			if !ok {
-				t.Errorf("%s: unexpected response: wanted key '%s' not found", tc.Case, wantkey)
-			} else if string(gotval) != wantval {
-				t.Errorf("%s: unexpected response: key '%s' = '%s' (expected '%s')", tc.Case, wantkey, wantval, gotval)
-			}
+	for wantkey, wantval := range tc.Want.ResultMap {
+		gotval, ok := secretmap[wantkey]
+		if !ok {
+			t.Errorf("%s: unexpected response: wanted key '%s' not found", tc.Case, wantkey)
+		} else if string(gotval) != wantval {
+			t.Errorf("%s: unexpected response: key '%s' = '%s' (expected '%s')", tc.Case, wantkey, wantval, gotval)
 		}
 		}
 	}
 	}
 }
 }