//go:build unit || all
// +build unit all

package eks

import (
	"testing"

	"github.com/onsi/gomega"
	"github.com/tidbcloud/infra-provider/pkg/k8s"
)

func TestEnsureImportNodeRoleARNReady(t *testing.T) {
	g := gomega.NewWithT(t)

	cases := map[string]struct {
		arn         string
		wantRequeue bool
	}{
		"empty arn should requeue":     {arn: "", wantRequeue: true},
		"non-empty arn should be done": {arn: "arn:aws:iam::123:role/foo", wantRequeue: false},
	}

	for name, tc := range cases {
		t.Run(name, func(t *testing.T) {
			res := ensureImportNodeRoleARNReady(tc.arn)
			if tc.wantRequeue {
				// error should be retriable requeue
				g.Expect(res.RawError()).NotTo(gomega.BeNil())
				g.Expect(k8s.ShouldRequeue(res.RawError()).RequeueAfter).To(gomega.Equal(iamReadyRequeueInterval))
			} else {
				g.Expect(res.RawError()).To(gomega.BeNil())
				g.Expect(res.IsDoneState()).To(gomega.BeTrue())
			}
		})
	}
}
