mirror of https://github.com/knative/func.git
267 lines
4.2 KiB
Go
267 lines
4.2 KiB
Go
//go:build !integration
|
|
// +build !integration
|
|
|
|
package functions
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func Test_validateVolumes(t *testing.T) {
|
|
|
|
path := "path"
|
|
path2 := "path2"
|
|
path3 := "path3"
|
|
path4 := "path4"
|
|
secret := "secret"
|
|
secret2 := "secret2"
|
|
cm := "configMap"
|
|
pvcName := "pvc"
|
|
pvc := &PersistentVolumeClaim{
|
|
ClaimName: &pvcName,
|
|
}
|
|
emptyDir := &EmptyDir{}
|
|
|
|
tests := []struct {
|
|
name string
|
|
volumes []Volume
|
|
errs int
|
|
}{
|
|
{
|
|
"incorrect entry - no secret or configMap only path",
|
|
[]Volume{
|
|
{
|
|
Path: &path,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"correct entry - single volume with secret",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
},
|
|
0,
|
|
},
|
|
{
|
|
"correct entry - single volume with configmap",
|
|
[]Volume{
|
|
{
|
|
ConfigMap: &cm,
|
|
Path: &path,
|
|
},
|
|
},
|
|
0,
|
|
},
|
|
{
|
|
"correct entry - multiple volumes with secrets",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
{
|
|
Secret: &secret2,
|
|
Path: &path2,
|
|
},
|
|
},
|
|
0,
|
|
},
|
|
{
|
|
"correct entry - multiple volumes with secret, configMap, persistentVolumeClaim, and emptyDir",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
{
|
|
ConfigMap: &cm,
|
|
Path: &path2,
|
|
},
|
|
{
|
|
PersistentVolumeClaim: pvc,
|
|
Path: &path3,
|
|
},
|
|
{
|
|
EmptyDir: emptyDir,
|
|
Path: &path4,
|
|
},
|
|
},
|
|
0,
|
|
},
|
|
{
|
|
"missing volume type - single volume",
|
|
[]Volume{
|
|
{
|
|
Path: &path,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"missing path - single volume with secret",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"missing path - single volume with configMap",
|
|
[]Volume{
|
|
{
|
|
ConfigMap: &cm,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"missing volume type and path - single volume",
|
|
[]Volume{
|
|
{},
|
|
},
|
|
2,
|
|
},
|
|
{
|
|
"missing secret/configMap in one volume - multiple volumes",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
{
|
|
Path: &path2,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"missing volume type and path in two different volumes - multiple volumes",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
{
|
|
Secret: &secret,
|
|
},
|
|
{
|
|
Path: &path2,
|
|
},
|
|
},
|
|
2,
|
|
},
|
|
{
|
|
"multiple volume types - single volume with path",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
ConfigMap: &cm,
|
|
Path: &path,
|
|
},
|
|
},
|
|
1,
|
|
},
|
|
{
|
|
"multiple volume types, missing path - single volume",
|
|
[]Volume{
|
|
{
|
|
Secret: &secret,
|
|
ConfigMap: &cm,
|
|
},
|
|
},
|
|
2,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := validateVolumes(tt.volumes); len(got) != tt.errs {
|
|
t.Errorf("validateVolumes() = %v\n got %d errors but want %d", got, len(got), tt.errs)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_validateVolumesString(t *testing.T) {
|
|
|
|
secret := "secret"
|
|
path := "path"
|
|
|
|
cm := "configMap"
|
|
pvcName := "pvc"
|
|
pvc := &PersistentVolumeClaim{
|
|
ClaimName: &pvcName,
|
|
}
|
|
|
|
tests := []struct {
|
|
key string
|
|
volume Volume
|
|
want string
|
|
}{
|
|
{
|
|
"volume with secret and path",
|
|
Volume{
|
|
Secret: &secret,
|
|
Path: &path,
|
|
},
|
|
"Secret \"secret\" at path: \"path\"",
|
|
},
|
|
{
|
|
"volume with configMap and path",
|
|
Volume{
|
|
ConfigMap: &cm,
|
|
Path: &path,
|
|
},
|
|
"ConfigMap \"configMap\" at path: \"path\"",
|
|
},
|
|
{
|
|
"volume with persistentVolumeClaim and path",
|
|
Volume{
|
|
PersistentVolumeClaim: pvc,
|
|
Path: &path,
|
|
},
|
|
"PersistentVolumeClaim \"pvc\" at path: \"path\"",
|
|
},
|
|
{
|
|
"volume with emptyDir and path",
|
|
Volume{
|
|
EmptyDir: &EmptyDir{},
|
|
Path: &path,
|
|
},
|
|
"EmptyDir at path: \"path\"",
|
|
},
|
|
{
|
|
"volume with no volume type but with path",
|
|
Volume{
|
|
Path: &path,
|
|
},
|
|
"No volume type at path: \"path\"",
|
|
},
|
|
{
|
|
"volume with secret but no path",
|
|
Volume{
|
|
Secret: &secret,
|
|
},
|
|
"Secret \"secret\"",
|
|
},
|
|
{
|
|
"volume with no volume type or path",
|
|
Volume{},
|
|
"No volume type",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.key, func(t *testing.T) {
|
|
if tt.volume.String() != tt.want {
|
|
t.Errorf("validateVolumeString() = \n got %v but expected %v", tt.volume.String(), tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|