package promconfig

import (
	"context"
	"net/http"
	"net/http/httptest"
	"testing"
)

func TestRemoteAddMetricsKeyBuildsRegionalExecutorPath(t *testing.T) {
	tests := []struct {
		name        string
		executorURL func(baseURL string) string
		wantPath    string
	}{
		{
			name: "adds missing metrics integration regional prefix",
			executorURL: func(baseURL string) string {
				return baseURL
			},
			wantPath: "/metrics-integration-regional/api/v1/metrics-key/create",
		},
		{
			name: "does not duplicate existing metrics integration regional prefix",
			executorURL: func(baseURL string) string {
				return baseURL + "/metrics-integration-regional"
			},
			wantPath: "/metrics-integration-regional/api/v1/metrics-key/create",
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
				if r.URL.Path != tt.wantPath {
					t.Fatalf("request path = %q, want %q", r.URL.Path, tt.wantPath)
				}
				if r.Method != http.MethodPost {
					t.Fatalf("request method = %q, want %q", r.Method, http.MethodPost)
				}
				w.WriteHeader(http.StatusOK)
			}))
			defer server.Close()

			err := RemoteAddMetricsKey(context.Background(), "1", "hashed-key", "cluster-config", tt.executorURL(server.URL))
			if err != nil {
				t.Fatalf("RemoteAddMetricsKey() error = %v", err)
			}
		})
	}
}
