package cert

import (
	"testing"

	"github.com/stretchr/testify/require"
	"github.com/tidbcloud/cluster-service-ng/domain/entity"
)

func TestDMComponentCertSecretName(t *testing.T) {
	got := DMComponentCertSecretName("dbcluster-123", entity.DMMasterComponent)
	want := "dbcluster-123-dm-master-cluster-secret"
	if got != want {
		t.Fatalf("DMComponentCertSecretName() = %q, want %q", got, want)
	}
}

func TestDMMasterCertV2(t *testing.T) {
	namespace := "tidb123"
	certCR, err := DMMasterCertV2("dm-1", namespace)
	require.NoError(t, err)
	if certCR == nil {
		t.Fatal("DMMasterCertV2() returned nil")
	}
	wantName := "dbcluster-dm-1-dm-master-cluster-secret"
	if certCR.Name != wantName {
		t.Fatalf("cert name = %q, want %q", certCR.Name, wantName)
	}
	if certCR.Namespace != namespace {
		t.Fatalf("cert namespace = %q, want %q", certCR.Namespace, namespace)
	}
	if certCR.Spec.SecretName != wantName {
		t.Fatalf("secret name = %q, want %q", certCR.Spec.SecretName, wantName)
	}
	if len(certCR.Spec.DNSNames) == 0 {
		t.Fatal("expected DNS names")
	}
}

func TestDMMasterCertV2RejectsLongClusterID(t *testing.T) {
	_, err := DMMasterCertV2("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", "tidb123")
	require.Error(t, err)
}
