package redact

import (
	"encoding/json"
	"testing"
)

func TestPasswordFieldsRedactsAPIKeys(t *testing.T) {
	req := map[string]interface{}{
		"datadog_api_key":  "dd-secret",
		"newrelic_api_key": "nr-secret",
		"apiKey":           "camel-secret",
		"cluster_id":       "123",
	}

	payload, err := RedactKeysToJSON(PasswordFields, req)
	if err != nil {
		t.Fatalf("RedactKeysToJSON() error = %v", err)
	}

	var got map[string]interface{}
	if err := json.Unmarshal(payload, &got); err != nil {
		t.Fatalf("json.Unmarshal() error = %v", err)
	}

	for _, key := range []string{"datadog_api_key", "newrelic_api_key", "apiKey"} {
		if got[key] != "redacted" {
			t.Fatalf("%s = %v, want redacted", key, got[key])
		}
	}
	if got["cluster_id"] != "123" {
		t.Fatalf("cluster_id = %v, want 123", got["cluster_id"])
	}
}
