mirror of
https://github.com/kubescape/kubescape.git
synced 2026-03-05 19:20:52 +00:00
* Fix issue 11552 Signed-off-by: MMMMMMorty <465346562@qq.com> * Add helm chart mapping node for sarif printer Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * add MappingNodes to getWorkloadFromHelmChart Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * clear the code to mappingnode and parseFile Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * add input to fixPathsToString Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * add fixs for error message Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * Add solution for multiple files in one yaml helm chart file Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> * Add parseFile tests Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com> --------- Signed-off-by: MMMMMMorty <465346562@qq.com> Signed-off-by: mmmmmmorty <mmmmmmorty@outlook.com>
80 lines
2.5 KiB
Go
80 lines
2.5 KiB
Go
package cautils
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
helmchartutil "helm.sh/helm/v3/pkg/chartutil"
|
|
helmengine "helm.sh/helm/v3/pkg/engine"
|
|
)
|
|
|
|
type HelmChartGetMappingSuite struct {
|
|
suite.Suite
|
|
helmChartPath string
|
|
expectedFiles []string
|
|
fileContent map[string]string
|
|
}
|
|
|
|
func TestHelmChartGetMappingSuite(t *testing.T) {
|
|
suite.Run(t, new(HelmChartGetMappingSuite))
|
|
}
|
|
|
|
func (s *HelmChartGetMappingSuite) SetupSuite() {
|
|
o, _ := os.Getwd()
|
|
|
|
s.helmChartPath = filepath.Join(filepath.Dir(o), "..", "examples", "helm_chart_mapping_node")
|
|
|
|
s.expectedFiles = []string{
|
|
filepath.Join(s.helmChartPath, "templates", "clusterrolebinding.yaml"),
|
|
filepath.Join(s.helmChartPath, "templates", "clusterrole.yaml"),
|
|
filepath.Join(s.helmChartPath, "templates", "serviceaccount.yaml"),
|
|
filepath.Join(s.helmChartPath, "templates", "rolebinding.yaml"),
|
|
filepath.Join(s.helmChartPath, "templates", "role.yaml"),
|
|
filepath.Join(s.helmChartPath, "templates", "cronjob.yaml"),
|
|
}
|
|
|
|
s.fileContent = make(map[string]string)
|
|
|
|
hc, _ := NewHelmChart(s.helmChartPath)
|
|
|
|
values := hc.GetDefaultValues()
|
|
|
|
vals, _ := helmchartutil.ToRenderValues(hc.chart, values, helmchartutil.ReleaseOptions{}, nil)
|
|
|
|
sourceToFile, _ := helmengine.Render(hc.chart, vals)
|
|
|
|
s.fileContent = sourceToFile
|
|
|
|
}
|
|
|
|
func (s *HelmChartGetMappingSuite) TestGetMapping() {
|
|
fileNodes, err := GetMapping("rolebinding.yaml", s.fileContent["kubescape/templates/rolebinding.yaml"])
|
|
s.NoError(err, "Get Mapping nodes correctly")
|
|
s.Equal(fileNodes.TemplateFileName, "rolebinding.yaml")
|
|
s.Len(fileNodes.Nodes, 1)
|
|
s.Len(fileNodes.Nodes[0], 13)
|
|
}
|
|
|
|
func (s *HelmChartGetMappingSuite) TestGetMappingFromFileContainsMultipleSubFiles() {
|
|
fileNodes, err := GetMapping("serviceaccount.yaml", s.fileContent["kubescape/templates/serviceaccount.yaml"])
|
|
s.NoError(err, "Get Mapping nodes correctly")
|
|
s.Equal(fileNodes.TemplateFileName, "serviceaccount.yaml")
|
|
s.Len(fileNodes.Nodes, 2)
|
|
s.Len(fileNodes.Nodes[0], 8)
|
|
s.Len(fileNodes.Nodes[1], 2)
|
|
}
|
|
|
|
func (s *HelmChartGetMappingSuite) TestGetMappingFromFileCWithoutKindOrApiVersion() {
|
|
fileNodes, err := GetMapping("clusterrole.yaml", s.fileContent["kubescape/templates/clusterrole.yaml"])
|
|
s.Contains(err.Error(), "there is no enough objectID info")
|
|
s.Nil(fileNodes)
|
|
}
|
|
|
|
func (s *HelmChartGetMappingSuite) TestGetMappingFromFileCWithoutApiVersion() {
|
|
fileNodes, err := GetMapping("clusterrolebinding.yaml", s.fileContent["kubescape/templates/clusterrolebinding.yaml"])
|
|
s.Contains(err.Error(), "there is no enough objectID info")
|
|
s.Nil(fileNodes)
|
|
}
|