helmfile/pkg/policy/checker_test.go

55 lines
1.3 KiB
Go

package policy
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestForbidEnvironmentsWithReleases(t *testing.T) {
testCases := []struct {
name string
helmState map[string]interface{}
expectedErr bool
isStrict bool
}{
{
name: "no error when only releases",
helmState: map[string]interface{}{
"releases": interface{}(nil),
},
expectedErr: false,
isStrict: false,
},
{
name: "no error when only environments",
helmState: map[string]interface{}{
"environments": map[string]interface{}{},
},
expectedErr: false,
isStrict: false,
},
{
name: "error when both releases and environments",
helmState: map[string]interface{}{
"environments": interface{}(nil),
"releases": interface{}(nil),
},
expectedErr: true,
isStrict: false,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
isStrict, err := forbidEnvironmentsWithReleases(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)
}
})
}
}