Skip to content

Commit 7e3bcf4

Browse files
authored
Update Helm chart unit tests (#568)
1 parent 1b5d7b3 commit 7e3bcf4

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

charts/test/unit/deployment_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func defaultDeployment() appsv1.Deployment {
104104
},
105105
{
106106
Name: "kube-rbac-proxy",
107-
Image: "quay.io/brancz/kube-rbac-proxy:v0.19.0",
107+
Image: fmt.Sprintf("%s:%s", helmChartValues.KubeRbacProxy.Image.Repository, helmChartValues.KubeRbacProxy.Image.Tag),
108108
Args: []string{
109109
"--secure-listen-address=0.0.0.0:8443",
110110
"--upstream=http://127.0.0.1:8080/",

charts/test/unit/helpers.go

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111

1212
"github.com/gruntwork-io/terratest/modules/helm"
1313
"github.com/stretchr/testify/assert"
14-
"gopkg.in/yaml.v2"
14+
"gopkg.in/yaml.v3"
1515
appsv1 "k8s.io/api/apps/v1"
1616
corev1 "k8s.io/api/core/v1"
1717
rbacv1 "k8s.io/api/rbac/v1"
@@ -41,6 +41,7 @@ const (
4141
var (
4242
// Generic variables.
4343
helmChartVersion = "0.0.0"
44+
helmChartValues = &chartValues{}
4445

4546
// Deployment variables.
4647
defaultDeploymentName = fmt.Sprintf("%s-%s", helmReleaseName, helmChartName)
@@ -58,12 +59,7 @@ var (
5859
"app.kubernetes.io/name": helmChartName,
5960
"control-plane": fmt.Sprintf("%s-controller-manager", helmReleaseName),
6061
}
61-
defaultDeploymentTemplateSpecLabels = map[string]string{
62-
"control-plane": fmt.Sprintf("%s-controller-manager", helmReleaseName),
63-
}
6462
defaultDeploymentTerminationGracePeriodSeconds = int64(10)
65-
defaultDeploymentTemplateVolumeName = "manager-config"
66-
defaultDeploymentTemplateVolumeConfigMapName = fmt.Sprintf("%s-manager-config", helmReleaseName)
6763

6864
// RBAC variables.
6965
defaultRBACRoleName = fmt.Sprintf("%s-leader-election-role", helmReleaseName)
@@ -93,29 +89,63 @@ func init() {
9389
os.Exit(1)
9490
}
9591

92+
if helmChartValues, err = getChartValues(); err != nil {
93+
log.Fatal(err)
94+
os.Exit(1)
95+
}
96+
9697
defaultDeploymentLabels["helm.sh/chart"] = fmt.Sprintf("%s-%s", helmChartName, helmChartVersion)
9798
defaultDeploymentLabels["app.kubernetes.io/version"] = helmChartVersion
9899

99100
defaultServiceAccountLabels["helm.sh/chart"] = fmt.Sprintf("%s-%s", helmChartName, helmChartVersion)
100101
defaultServiceAccountLabels["app.kubernetes.io/version"] = helmChartVersion
101102
}
102103

103-
type Chart struct {
104+
// Chart.yaml
105+
type chart struct {
104106
Version string `yaml:"version"`
105107
}
106108

109+
// values.yaml
110+
type chartValues struct {
111+
KubeRbacProxy kubeRbacProxy `yaml:"kubeRbacProxy"`
112+
}
113+
114+
type kubeRbacProxy struct {
115+
Image image `yaml:"image"`
116+
}
117+
118+
type image struct {
119+
Tag string `yaml:"tag"`
120+
Repository string `yaml:"repository"`
121+
}
122+
107123
func getChartVersion() (string, error) {
108124
file, err := os.ReadFile(fmt.Sprintf("%s/Chart.yaml", helmChartPath))
109125
if err != nil {
110126
log.Fatalf("Error reading Chart.yaml: %v", err)
111127
}
112128

113-
var chart Chart
114-
if err := yaml.Unmarshal(file, &chart); err != nil {
115-
return "", fmt.Errorf("Error unmarshalling YAML: %v", err)
129+
var c chart
130+
if err := yaml.Unmarshal(file, &c); err != nil {
131+
return "", fmt.Errorf("error unmarshalling YAML: %v", err)
132+
}
133+
134+
return c.Version, nil
135+
}
136+
137+
func getChartValues() (*chartValues, error) {
138+
file, err := os.ReadFile(fmt.Sprintf("%s/values.yaml", helmChartPath))
139+
if err != nil {
140+
log.Fatalf("Error reading values.yaml: %v", err)
141+
}
142+
143+
var cv chartValues
144+
if err := yaml.Unmarshal(file, &cv); err != nil {
145+
return nil, fmt.Errorf("error unmarshalling YAML: %v", err)
116146
}
117147

118-
return chart.Version, nil
148+
return &cv, nil
119149
}
120150

121151
func renderDeploymentManifest(t *testing.T, options *helm.Options) appsv1.Deployment {

charts/test/unit/rbac_role_binding_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestRBACRoleBindingCreateTrue(t *testing.T) {
2929
testRBACRoleBindingSubjects(t, rbac, defaultNamespace)
3030
}
3131

32-
func testRBACRoleBindingCreateFalse(t *testing.T) {
32+
func TestRBACRoleBindingCreateFalse(t *testing.T) {
3333
options := &helm.Options{
3434
SetValues: map[string]string{
3535
"rbac.create": "false",
@@ -42,7 +42,7 @@ func testRBACRoleBindingCreateFalse(t *testing.T) {
4242
assert.Contains(t, err.Error(), "could not find template")
4343
}
4444

45-
func testRBACRoleBindingNamespace(t *testing.T) {
45+
func TestRBACRoleBindingNamespace(t *testing.T) {
4646
ns := "this"
4747
options := &helm.Options{
4848
SetValues: map[string]string{
@@ -55,7 +55,7 @@ func testRBACRoleBindingNamespace(t *testing.T) {
5555
}
5656
rbac := renderRBACRoleBindingManifest(t, options)
5757

58-
assert.Equal(t, defaultRBACRoleName, rbac.Name)
58+
assert.Equal(t, defaultRBACRoleBindingName, rbac.Name)
5959
assert.Empty(t, rbac.Labels)
6060
assert.Empty(t, rbac.Annotations)
6161
assert.Equal(t, ns, rbac.Namespace)

0 commit comments

Comments
 (0)