func/function_envs_unit_test.go

612 lines
9.9 KiB
Go

//go:build !integration
// +build !integration
package function
import "testing"
func Test_validateBuildEnvs(t *testing.T) {
name := "name"
name2 := "name2"
value := "value"
value2 := "value2"
incorrectName := ",foo"
incorrectName2 := ":foo"
valueLocalEnv := "{{ env:MY_ENV }}"
valueLocalEnv2 := "{{ env:MY_ENV2 }}"
valueLocalEnv3 := "{{env:MY_ENV3}}"
valueLocalEnvIncorrect := "{{ envs:MY_ENV }}"
valueLocalEnvIncorrect2 := "{{ MY_ENV }}"
valueLocalEnvIncorrect3 := "{{env:MY_ENV}}foo"
tests := []struct {
name string
envs []Env
errs int
}{
{
"correct entry - single env with value",
[]Env{
{
Name: &name,
Value: &value,
},
},
0,
},
{
"incorrect entry - missing value",
[]Env{
{
Name: &name,
},
},
1,
},
{
"incorrect entry - invalid name",
[]Env{
{
Name: &incorrectName,
Value: &value,
},
},
1,
},
{
"incorrect entry - invalid name2",
[]Env{
{
Name: &incorrectName2,
Value: &value,
},
},
1,
},
{
"correct entry - multiple envs with value",
[]Env{
{
Name: &name,
Value: &value,
},
{
Name: &name2,
Value: &value2,
},
},
0,
},
{
"incorrect entry - mmissing value - multiple envs",
[]Env{
{
Name: &name,
},
{
Name: &name2,
},
},
2,
},
{
"correct entry - single env with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
},
0,
},
{
"correct entry - multiple envs with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
{
Name: &name,
Value: &valueLocalEnv2,
},
{
Name: &name,
Value: &valueLocalEnv3,
},
},
0,
},
{
"incorrect entry - multiple envs with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect2,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect3,
},
},
3,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ValidateEnvs(tt.envs); len(got) != tt.errs {
t.Errorf("validateEnvs() = %v\n got %d errors but want %d", got, len(got), tt.errs)
}
})
}
}
func Test_validateEnvs(t *testing.T) {
name := "name"
name2 := "name2"
value := "value"
value2 := "value2"
incorrectName := ",foo"
incorrectName2 := ":foo"
valueLocalEnv := "{{ env:MY_ENV }}"
valueLocalEnv2 := "{{ env:MY_ENV2 }}"
valueLocalEnv3 := "{{env:MY_ENV3}}"
valueLocalEnvIncorrect := "{{ envs:MY_ENV }}"
valueLocalEnvIncorrect2 := "{{ MY_ENV }}"
valueLocalEnvIncorrect3 := "{{env:MY_ENV}}foo"
valueSecretKey := "{{ secret:mysecret:key }}"
valueSecretKey2 := "{{secret:my-secret:key }}"
valueSecretKey3 := "{{secret:my-secret:key2}}"
valueSecretKey4 := "{{secret:my-secret:key-2}}"
valueSecretKey5 := "{{secret:my-secret:key.2}}"
valueSecretKey6 := "{{secret:my-secret:key_2}}"
valueSecretKey7 := "{{secret:my-secret:key_2-1}}"
valueSecretKey8 := "{{secret:my-secret:key_2-1.3}}"
valueSecretKeyIncorrect := "{{ secret:my-secret:key,key }}"
valueSecretKeyIncorrect2 := "{{ my-secret:key }}"
valueSecretKeyIncorrect3 := "{{ secret:my-secret:key }}foo"
valueConfigMapKey := "{{ configMap:myconfigmap:key }}"
valueConfigMapKey2 := "{{ configMap:myconfigmap:key }}"
valueConfigMapKey3 := "{{ configMap:myconfigmap:key2 }}"
valueConfigMapKey4 := "{{ configMap:myconfigmap:key-2 }}"
valueConfigMapKey5 := "{{ configMap:myconfigmap:key.2 }}"
valueConfigMapKey6 := "{{ configMap:myconfigmap:key_2 }}"
valueConfigMapKey7 := "{{ configMap:myconfigmap:key_2-1 }}"
valueConfigMapKey8 := "{{ configMap:myconfigmap:key_2.1 }}"
valueSecret := "{{ secret:my-secret }}"
valueSecret2 := "{{ secret:mysecret }}"
valueSecret3 := "{{ secret:mysecret}}"
valueSecretIncorrect := "{{ my-secret }}"
valueSecretIncorrect2 := "my-secret"
valueSecretIncorrect3 := "{{ secret:my-secret }}foo"
valueConfigMap := "{{ configMap:myconfigmap }}"
tests := []struct {
name string
envs []Env
errs int
}{
{
"correct entry - single env with value",
[]Env{
{
Name: &name,
Value: &value,
},
},
0,
},
{
"incorrect entry - missing value",
[]Env{
{
Name: &name,
},
},
1,
},
{
"incorrect entry - invalid name",
[]Env{
{
Name: &incorrectName,
Value: &value,
},
},
1,
},
{
"incorrect entry - invalid name2",
[]Env{
{
Name: &incorrectName2,
Value: &value,
},
},
1,
},
{
"correct entry - multiple envs with value",
[]Env{
{
Name: &name,
Value: &value,
},
{
Name: &name2,
Value: &value2,
},
},
0,
},
{
"incorrect entry - mmissing value - multiple envs",
[]Env{
{
Name: &name,
},
{
Name: &name2,
},
},
2,
},
{
"correct entry - single env with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
},
0,
},
{
"correct entry - multiple envs with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
{
Name: &name,
Value: &valueLocalEnv2,
},
{
Name: &name,
Value: &valueLocalEnv3,
},
},
0,
},
{
"incorrect entry - multiple envs with value Local env",
[]Env{
{
Name: &name,
Value: &valueLocalEnv,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect2,
},
{
Name: &name,
Value: &valueLocalEnvIncorrect3,
},
},
3,
},
{
"correct entry - single secret with key",
[]Env{
{
Name: &name,
Value: &valueSecretKey,
},
},
0,
},
{
"correct entry - single configMap with key",
[]Env{
{
Name: &name,
Value: &valueConfigMapKey,
},
},
0,
},
{
"correct entry - multiple configMaps with key",
[]Env{
{
Name: &name,
Value: &valueConfigMapKey,
},
{
Name: &name,
Value: &valueConfigMapKey2,
},
{
Name: &name,
Value: &valueConfigMapKey3,
},
{
Name: &name,
Value: &valueConfigMapKey4,
},
{
Name: &name,
Value: &valueConfigMapKey5,
},
{
Name: &name,
Value: &valueConfigMapKey6,
},
{
Name: &name,
Value: &valueConfigMapKey7,
},
{
Name: &name,
Value: &valueConfigMapKey8,
},
},
0,
},
{
"correct entry - multiple secrets with key",
[]Env{
{
Name: &name,
Value: &valueSecretKey,
},
{
Name: &name,
Value: &valueSecretKey2,
},
{
Name: &name,
Value: &valueSecretKey3,
},
{
Name: &name,
Value: &valueSecretKey4,
},
{
Name: &name,
Value: &valueSecretKey5,
},
{
Name: &name,
Value: &valueSecretKey6,
},
{
Name: &name,
Value: &valueSecretKey7,
},
{
Name: &name,
Value: &valueSecretKey8,
},
},
0,
},
{
"correct entry - both secret and configmap with key",
[]Env{
{
Name: &name,
Value: &valueSecretKey,
},
{
Name: &name,
Value: &valueConfigMapKey,
},
},
0,
},
{
"incorrect entry - single secret with key",
[]Env{
{
Name: &name,
Value: &valueSecretKeyIncorrect,
},
},
1,
},
{
"incorrect entry - multiple secrets with key",
[]Env{
{
Name: &name,
Value: &valueSecretKey,
},
{
Name: &name,
Value: &valueSecretKeyIncorrect,
},
{
Name: &name,
Value: &valueSecretKeyIncorrect2,
},
{
Name: &name,
Value: &valueSecretKeyIncorrect3,
},
},
3,
},
{
"correct entry - single whole secret",
[]Env{
{
Value: &valueSecret,
},
},
0,
},
{
"correct entry - single whole configMap",
[]Env{
{
Value: &valueConfigMap,
},
},
0,
},
{
"correct entry - multiple whole secret",
[]Env{
{
Value: &valueSecret,
},
{
Value: &valueSecret2,
},
{
Value: &valueSecret3,
},
},
0,
},
{
"correct entry - both whole secret and configMap",
[]Env{
{
Value: &valueSecret,
},
{
Value: &valueConfigMap,
},
},
0,
},
{
"incorrect entry - single whole secret",
[]Env{
{
Value: &value,
},
},
1,
},
{
"incorrect entry - multiple whole secret",
[]Env{
{
Value: &valueSecretIncorrect,
},
{
Value: &valueSecretIncorrect2,
},
{
Value: &valueSecretIncorrect3,
},
{
Value: &value,
},
{
Value: &valueLocalEnv,
},
{
Value: &valueLocalEnv2,
},
{
Value: &valueLocalEnv3,
},
{
Value: &valueSecret,
},
},
7,
},
{
"correct entry - all combinations",
[]Env{
{
Name: &name,
Value: &value,
},
{
Name: &name2,
Value: &value2,
},
{
Name: &name,
Value: &valueLocalEnv,
},
{
Name: &name,
Value: &valueLocalEnv2,
},
{
Name: &name,
Value: &valueLocalEnv3,
},
{
Value: &valueSecret,
},
{
Value: &valueSecret2,
},
{
Value: &valueSecret3,
},
{
Value: &valueConfigMap,
},
{
Name: &name,
Value: &valueSecretKey,
},
{
Name: &name,
Value: &valueSecretKey2,
},
{
Name: &name,
Value: &valueSecretKey3,
},
{
Name: &name,
Value: &valueConfigMapKey,
},
},
0,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ValidateEnvs(tt.envs); len(got) != tt.errs {
t.Errorf("validateEnvs() = %v\n got %d errors but want %d", got, len(got), tt.errs)
}
})
}
}