Select Git revision
pvc_test.go
-
Julian Paul Dasmarinas authoredJulian Paul Dasmarinas authored
pvc_test.go 6.45 KiB
package main
import (
"regexp"
"strings"
"testing"
"github.com/gruntwork-io/terratest/modules/helm"
"github.com/stretchr/testify/require"
coreV1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestPvcTemplate_Single(t *testing.T) {
templates := []string{"templates/pvc.yaml"}
releaseName := "test"
customStorageClassName := "MyStorageClass"
customVolumeName := "MyVolumeName"
expectedLabels := map[string]string{
"app": releaseName,
"chart": chartName,
"release": releaseName,
"heritage": "Helm",
"app.kubernetes.io/name": releaseName,
"helm.sh/chart": chartName,
"app.kubernetes.io/managed-by": "Helm",
"app.kubernetes.io/instance": releaseName,
"tier": "web",
"track": "stable",
}
tcs := []struct {
name string
values map[string]string
expectedMeta metav1.ObjectMeta
expectedPVC coreV1.PersistentVolumeClaimSpec
expectedErrorRegexp *regexp.Regexp
}{
{
name: "defaults",
values: map[string]string{"persistence.enabled": "true"},
expectedMeta: metav1.ObjectMeta{Name: "test-auto-deploy-data", Labels: expectedLabels},
expectedPVC: coreV1.PersistentVolumeClaimSpec{
AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadWriteOnce},
Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("8Gi")}},
},
},
{
name: "with different parameters",
values: map[string]string{
"persistence.enabled": "true",
"persistence.volumes[0].name": "log-dir",
"persistence.volumes[0].claim.accessMode": "ReadOnlyMany",
"persistence.volumes[0].claim.size": "20Gi",
"persistence.volumes[0].claim.storageClass": customStorageClassName,
"persistence.volumes[0].claim.volumeName": customVolumeName,
"persistence.volumes[0].mount.path": "/log",
},
expectedMeta: metav1.ObjectMeta{Name: "test-auto-deploy-log-dir", Labels: expectedLabels},
expectedPVC: coreV1.PersistentVolumeClaimSpec{
AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadOnlyMany},
Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("20Gi")}},
StorageClassName: &customStorageClassName,
VolumeName: customVolumeName,
},
},
{
name: "when disabled",
values: map[string]string{"persistence.enabled": "false"},