77 lines
2.0 KiB
Go
77 lines
2.0 KiB
Go
package state
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/roboll/helmfile/environment"
|
|
)
|
|
|
|
func TestHelmState_executeTemplates(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input ReleaseSpec
|
|
want ReleaseSpec
|
|
}{
|
|
{
|
|
name: "Has template expressions in chart, values, and secrets",
|
|
input: ReleaseSpec{
|
|
Chart: "test-charts/{{ .Release.Name }}",
|
|
Version: "0.1",
|
|
Verify: nil,
|
|
Name: "test-app",
|
|
Namespace: "test-namespace-{{ .Release.Name }}",
|
|
Values: []interface{}{"config/{{ .Environment.Name }}/{{ .Release.Name }}/values.yaml"},
|
|
Secrets: []string{"config/{{ .Environment.Name }}/{{ .Release.Name }}/secrets.yaml"},
|
|
},
|
|
want: ReleaseSpec{
|
|
Chart: "test-charts/test-app",
|
|
Version: "0.1",
|
|
Verify: nil,
|
|
Name: "test-app",
|
|
Namespace: "test-namespace-test-app",
|
|
Values: []interface{}{"config/test_env/test-app/values.yaml"},
|
|
Secrets: []string{"config/test_env/test-app/secrets.yaml"},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
state := &HelmState{
|
|
basePath: ".",
|
|
HelmDefaults: HelmSpec{
|
|
KubeContext: "test_context",
|
|
},
|
|
Env: environment.Environment{Name: "test_env"},
|
|
Namespace: "test-namespace_",
|
|
Repositories: nil,
|
|
Releases: []ReleaseSpec{
|
|
tt.input,
|
|
},
|
|
}
|
|
|
|
r, err := state.ExecuteTemplates()
|
|
if err != nil {
|
|
t.Errorf("Unexpected error: %v", err)
|
|
t.FailNow()
|
|
}
|
|
|
|
actual := r.Releases[0]
|
|
|
|
if !reflect.DeepEqual(actual.Chart, tt.want.Chart) {
|
|
t.Errorf("expected %+v, got %+v", tt.want.Chart, actual.Chart)
|
|
}
|
|
if !reflect.DeepEqual(actual.Namespace, tt.want.Namespace) {
|
|
t.Errorf("expected %+v, got %+v", tt.want.Namespace, actual.Namespace)
|
|
}
|
|
if !reflect.DeepEqual(actual.Values, tt.want.Values) {
|
|
t.Errorf("expected %+v, got %+v", tt.want.Values, actual.Values)
|
|
}
|
|
if !reflect.DeepEqual(actual.Secrets, tt.want.Secrets) {
|
|
t.Errorf("expected %+v, got %+v", tt.want.Secrets, actual.Secrets)
|
|
}
|
|
})
|
|
}
|
|
}
|