package common_test

import (
	"testing"

	. "github.com/onsi/gomega"
	infraconfig "github.com/tidbcloud/infra-provider/pkg/config"
	rsconfig "github.com/tidbcloud/infra-provider/regional-server/pkg/config"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/appbox/task/common"
)

/*
   pcaIssuer:
     chartPath: /etc/helm/pca-issuer/aws-privateca-issuer-1.2.0-fixed.tgz
     crdPaths:
       - /etc/helm/pca-issuer/aws-pca-issuer-crd.yaml
       - /etc/helm/pca-issuer/aws-pca-clusterissuer-crd.yaml
     namespace: cert-manager
     releaseName: aws-pca-issuer
     helmValues:
       image:
         repository: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/aws-pca-issuer
         tag: latest
       serviceAccount:
         create: true
       resources:
         limits:
           cpu: 500m
           memory: 128Mi
         requests:
           cpu: 50m
           memory: 64Mi
*/

func TestRenderPCAIssuerDeployment(t *testing.T) {
	g := NewWithT(t)
	pcaissuerPackage := rsconfig.InfraComponentConfig{
		HelmConfig: infraconfig.HelmConfig{
			CRDPaths: []string{""},
		},
		ReleaseName: "aws-pca-issuer",
		Namespace:   "cert-manager",
		HelmValues:  map[string]interface{}{},
	}
	pcaissuerPackage.ChartPath = "../../../../../../helm-charts/pca-issuer/aws-privateca-issuer-1.2.0-fixed.tgz"
	pcaissuerPackage.CRDPaths = []string{
		"../../../../../../helm-charts/pca-issuer/aws-pca-issuer-crd.yaml",
		"../../../../../../helm-charts/pca-issuer/aws-pca-clusterissuer-crd.yaml"}
	pcaissuerPackage.HelmValues["image"] = map[string]interface{}{
		"repository": "385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/aws-pca-issuer",
		"tag":        "latest",
	}
	pcaissuerPackage.HelmValues["serviceAccount"] = map[string]interface{}{
		"create": true,
	}
	cr, err := common.RenderPCAIssuerDeployment(&pcaissuerPackage)
	g.Expect(err).Should(Succeed())
	g.Expect(cr.Name).To(Equal("aws-pca-issuer-aws-privateca-issuer"))
	g.Expect(cr.Namespace).To(Equal("cert-manager"))
	g.Expect(len(cr.Spec.Template.Spec.Containers)).To(Equal(1))
	g.Expect(cr.Spec.Template.Spec.Containers[0].Image).To(Equal("385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/aws-pca-issuer:latest"))
	pcaissuerPackage.ReleaseName = "aws-privateca-issuer"
	cr, err = common.RenderPCAIssuerDeployment(&pcaissuerPackage)
	g.Expect(err).Should(Succeed())
	g.Expect(cr.Name).To(Equal("aws-privateca-issuer"))

}
