82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
package policy
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/helmfile/helmfile/pkg/runtime"
|
|
)
|
|
|
|
func TestForbidEnvironmentsWithReleases(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
filePath string
|
|
v1mode bool
|
|
helmState map[string]any
|
|
expectedErr bool
|
|
isStrict bool
|
|
}{
|
|
{
|
|
name: "no error when only releases",
|
|
filePath: "helmfile.yaml",
|
|
v1mode: false,
|
|
helmState: map[string]any{
|
|
"releases": any(nil),
|
|
},
|
|
expectedErr: false,
|
|
isStrict: false,
|
|
},
|
|
{
|
|
name: "no error when only environments",
|
|
filePath: "helmfile.yaml",
|
|
v1mode: false,
|
|
helmState: map[string]any{
|
|
"environments": map[string]any{},
|
|
},
|
|
expectedErr: false,
|
|
isStrict: false,
|
|
},
|
|
{
|
|
name: "error when both releases and environments",
|
|
filePath: "helmfile.yaml",
|
|
v1mode: false,
|
|
helmState: map[string]any{
|
|
"environments": any(nil),
|
|
"releases": any(nil),
|
|
},
|
|
expectedErr: true,
|
|
isStrict: false,
|
|
},
|
|
{
|
|
name: "no error when both releases and environments for plain yaml on v1",
|
|
filePath: "helmfile.yaml",
|
|
v1mode: true,
|
|
helmState: map[string]any{
|
|
"environments": any(nil),
|
|
"releases": any(nil),
|
|
},
|
|
expectedErr: false,
|
|
isStrict: false,
|
|
},
|
|
}
|
|
|
|
v1mode := runtime.V1Mode
|
|
t.Cleanup(func() {
|
|
runtime.V1Mode = v1mode
|
|
})
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
runtime.V1Mode = tc.v1mode
|
|
isStrict, err := forbidEnvironmentsWithReleases(tc.filePath, tc.helmState)
|
|
require.Equal(t, tc.isStrict, isStrict, "expected isStrict=%v, got=%v", tc.isStrict, isStrict)
|
|
if tc.expectedErr {
|
|
require.ErrorIsf(t, err, EnvironmentsAndReleasesWithinSameYamlPartErr, "expected error=%v, got=%v", EnvironmentsAndReleasesWithinSameYamlPartErr, err)
|
|
} else {
|
|
require.NoError(t, err, "expected no error but got error: %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|