...
1 package render
2
3 import (
4 "bytes"
5 _ "embed"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11
12 var pallet []byte
13
14 func TestRender(t *testing.T) {
15 testcases := []struct {
16 title string
17 calls int
18 params []map[string]string
19 expected string
20 }{
21 {
22 title: "UUID churn - UUID provided",
23 calls: 10,
24 params: []map[string]string{
25 {
26 "cluster_uuid": "9ea17fca-1f35-46b5-9486-bc2af74ff4c9",
27 "gcp_project_id": "ret-edge-test",
28 },
29 },
30 expected: `apiVersion: iam.cnrm.cloud.google.com/v1beta1
31 kind: IAMServiceAccount
32 metadata:
33 name: rendertest
34 spec:
35 displayName: rendertest
36 resourceID: rendertest-n14318f31f5c979eec0f
37 ---
38 apiVersion: iam.cnrm.cloud.google.com/v1beta1
39 kind: IAMPolicyMember
40 metadata:
41 name: rendertest-pubsub-subscriber
42 spec:
43 member: serviceAccount:rendertest-n14318f31f5c979eec0f@ret-edge-test.iam.gserviceaccount.com
44 resourceRef:
45 apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
46 kind: Project
47 external: ret-edge-test
48 role: roles/pubsub.subscriber
49 ---
50 apiVersion: secretmanager.cnrm.cloud.google.com/v1beta1
51 kind: SecretManagerSecret
52 metadata:
53 name: rendertest-9ea17fca-1f35-46b5-9486-bc2af74ff4c9-gcp-api-key
54 spec:
55 replication:
56 automatic: true`,
57 },
58 }
59 palletP := []string{"cluster_uuid", "gcp_project_id", "cluster_hash"}
60
61 for _, testcase := range testcases {
62 t.Run(testcase.title, func(t *testing.T) {
63 for i := 0; i <= testcase.calls; i++ {
64 actual, err := Render(bytes.NewReader(pallet), palletP, testcase.params...)
65 assert.Equal(t, testcase.expected, string(actual))
66 assert.NoError(t, err)
67 }
68 })
69 }
70 }
71 func TestParamHandle(t *testing.T) {
72 testcases := []struct {
73 title string
74 pass bool
75 params map[string]string
76 }{
77 {
78 title: "Complete Param Set",
79 pass: true,
80 params: map[string]string{
81 "cluster_uuid": "9ea17fca-1f35-46b5-9486-bc2af74ff4c9",
82 "gcp_project_id": "ret-edge-test",
83 },
84 },
85 {
86 title: "Incomplet Param Set",
87 pass: false,
88 params: map[string]string{
89 "gcp_project_id": "ret-edge-test",
90 "cluster_uuid": "",
91 },
92 },
93 }
94 palletP := []string{"cluster_uuid", "gcp_project_id", "cluster_hash"}
95 for _, tc := range testcases {
96 t.Run(tc.title, func(t *testing.T) {
97 _, err := HandleParams(palletP, tc.params)
98 if tc.pass {
99 assert.NoError(t, err)
100 }
101 if !tc.pass {
102 assert.Error(t, err)
103 }
104 })
105 }
106 }
107
View as plain text