Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

pvc_test.go

Blame
  • 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"},