package render import ( "bytes" _ "embed" "testing" "github.com/stretchr/testify/assert" ) //go:embed testdata/pallet.yaml var pallet []byte func TestRender(t *testing.T) { testcases := []struct { title string calls int params []map[string]string expected string }{ { title: "UUID churn - UUID provided", calls: 10, params: []map[string]string{ { "cluster_uuid": "9ea17fca-1f35-46b5-9486-bc2af74ff4c9", "gcp_project_id": "ret-edge-test", }, }, expected: `apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount metadata: name: rendertest spec: displayName: rendertest resourceID: rendertest-n14318f31f5c979eec0f --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: rendertest-pubsub-subscriber spec: member: serviceAccount:rendertest-n14318f31f5c979eec0f@ret-edge-test.iam.gserviceaccount.com resourceRef: apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 kind: Project external: ret-edge-test role: roles/pubsub.subscriber --- apiVersion: secretmanager.cnrm.cloud.google.com/v1beta1 kind: SecretManagerSecret metadata: name: rendertest-9ea17fca-1f35-46b5-9486-bc2af74ff4c9-gcp-api-key spec: replication: automatic: true`, }, } palletP := []string{"cluster_uuid", "gcp_project_id", "cluster_hash"} for _, testcase := range testcases { t.Run(testcase.title, func(t *testing.T) { for i := 0; i <= testcase.calls; i++ { actual, err := Render(bytes.NewReader(pallet), palletP, testcase.params...) assert.Equal(t, testcase.expected, string(actual)) assert.NoError(t, err) } }) } } func TestParamHandle(t *testing.T) { testcases := []struct { title string pass bool params map[string]string }{ { title: "Complete Param Set", pass: true, params: map[string]string{ "cluster_uuid": "9ea17fca-1f35-46b5-9486-bc2af74ff4c9", "gcp_project_id": "ret-edge-test", }, }, { title: "Incomplet Param Set", pass: false, params: map[string]string{ "gcp_project_id": "ret-edge-test", "cluster_uuid": "", }, }, } palletP := []string{"cluster_uuid", "gcp_project_id", "cluster_hash"} for _, tc := range testcases { t.Run(tc.title, func(t *testing.T) { _, err := HandleParams(palletP, tc.params) if tc.pass { assert.NoError(t, err) } if !tc.pass { assert.Error(t, err) } }) } }