...

Source file src/edge-infra.dev/pkg/f8n/warehouse/lift/render/render_test.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/lift/render

     1  package render
     2  
     3  import (
     4  	"bytes"
     5  	_ "embed"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  //go:embed testdata/pallet.yaml
    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