istio
1// Copyright Istio Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package helm16
17import (18"errors"19"os"20"testing"21
22"helm.sh/helm/v3/pkg/chart"23)
24
25func TestRenderManifest(t *testing.T) {26tests := []struct {27desc string28inValues string29inChart chart.Chart30startRender bool31inPath string32objFileTemplateReader Renderer
33wantResult string34wantErr error35}{36{37desc: "not-started",38inValues: "",39startRender: false,40inChart: chart.Chart{},41objFileTemplateReader: Renderer{},42wantResult: "",43wantErr: errors.New("fileTemplateRenderer for not started in renderChart"),44},45{46desc: "started-random-template",47inValues: `48description: test
49`,50inPath: "testdata/render/Chart.yaml",51startRender: true,52objFileTemplateReader: Renderer{53namespace: "name-space",54componentName: "foo-component",55dir: "testdata/render",56files: os.DirFS("."),57},58wantResult: `apiVersion: v159description: test
60name: addon
61version: 1.1.0
62appVersion: 1.1.0
63tillerVersion: ">=2.7.2"
64keywords:
65- istio-addon
66
67---
68`,69wantErr: nil,70},71{72desc: "bad-file-path",73inValues: "",74inPath: "foo/bar/Chart.yaml",75startRender: true,76objFileTemplateReader: Renderer{77namespace: "name-space",78componentName: "foo-component",79dir: "foo/bar",80files: os.DirFS("."),81},82wantResult: "",83wantErr: errors.New(`component "foo-component" does not exist`),84},85}86for _, tt := range tests {87t.Run(tt.desc, func(t *testing.T) {88if tt.startRender {89err := tt.objFileTemplateReader.Run()90if err != nil && tt.wantErr != nil {91if err.Error() != tt.wantErr.Error() {92t.Errorf("%s: expected err: %q got %q", tt.desc, tt.wantErr.Error(), err.Error())93}94}95}96if res, err := tt.objFileTemplateReader.RenderManifest(tt.inValues); res != tt.wantResult ||97((tt.wantErr != nil && err == nil) || (tt.wantErr == nil && err != nil)) {98t.Errorf("%s: \nexpected vals: \n%v\n\nexpected err:%v\ngot vals:\n%v\n\n got err %v",99tt.desc, tt.wantResult, tt.wantErr, res, err)100}101})102}103}
104