package cluster

import (
	"testing"

	"github.com/stretchr/testify/assert"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

func TestPublicEndpointAddress(t *testing.T) {
	cases := map[string]struct {
		cluster    *cloudv1.Cluster
		zoneDomain string
		expect     string
	}{
		"Test": {
			cluster: &cloudv1.Cluster{
				ObjectMeta: metav1.ObjectMeta{
					Name: "123",
				},
				Spec: cloudv1.ClusterSpec{
					SqlEndpoints: cloudv1.SqlEndpoints{
						DNS: cloudv1.DNS{
							Identity: "aaa",
						},
					},
				},
			},
			zoneDomain: "aws.pingcap.com",
			expect:     "tidb.aaa.aws.pingcap.com",
		},
	}
	for name, tc := range cases {
		t.Run(name, func(t *testing.T) {
			r := newFakeReconcileContext(tc.cluster, nil)
			r.PublicHostedZoneDomain = tc.zoneDomain

			assert.Equal(t, tc.expect, r.endpointDNS(EndpointTypePublic))
		})
	}
}
