//go:build unit // +build unit package buildsettings import ( "testing" "github.com/stretchr/testify/assert" ) func TestCreateBuildSettingsInfo(t *testing.T) { t.Run("test build settings cpe with no previous and existing values", func(t *testing.T) { testTableConfig := []struct { config BuildOptions buildTool string expected string }{ { config: BuildOptions{CreateBOM: true}, buildTool: "golangBuild", expected: "{\"golangBuild\":[{\"createBOM\":true}]}", }, { config: BuildOptions{DockerImage: "golang:latest"}, buildTool: "golangBuild", expected: "{\"golangBuild\":[{\"dockerImage\":\"golang:latest\"}]}", }, { config: BuildOptions{CreateBOM: true}, buildTool: "gradleBuild", expected: "{\"gradleBuild\":[{\"createBOM\":true}]}", }, { config: BuildOptions{Publish: true}, buildTool: "helmExecute", expected: "{\"helmExecute\":[{\"publish\":true}]}", }, { config: BuildOptions{Publish: true}, buildTool: "kanikoExecute", expected: "{\"kanikoExecute\":[{\"publish\":true}]}", }, { config: BuildOptions{Profiles: []string{"profile1", "profile2"}, CreateBOM: true}, buildTool: "mavenBuild", expected: "{\"mavenBuild\":[{\"profiles\":[\"profile1\",\"profile2\"],\"createBOM\":true}]}", }, { config: BuildOptions{Profiles: []string{"profile1", "profile2"}, CreateBOM: true, BuildSettingsInfo: "{\"mavenBuild\":[{\"createBOM\":true}]}"}, buildTool: "mavenBuild", expected: "{\"mavenBuild\":[{\"createBOM\":true},{\"profiles\":[\"profile1\",\"profile2\"],\"createBOM\":true}]}", }, { config: BuildOptions{Profiles: []string{"release.build"}, Publish: true, GlobalSettingsFile: "http://nexus.test:8081/nexus/"}, buildTool: "mtaBuild", expected: "{\"mtaBuild\":[{\"profiles\":[\"release.build\"],\"publish\":true,\"globalSettingsFile\":\"http://nexus.test:8081/nexus/\"}]}", }, { config: BuildOptions{CreateBOM: true}, buildTool: "pythonBuild", expected: "{\"pythonBuild\":[{\"createBOM\":true}]}", }, { config: BuildOptions{CreateBOM: true}, buildTool: "npmExecuteScripts", expected: "{\"npmExecuteScripts\":[{\"createBOM\":true}]}", }, { config: BuildOptions{DockerImage: "builder:latest"}, buildTool: "cnbBuild", expected: "{\"cnbBuild\":[{\"dockerImage\":\"builder:latest\"}]}", }, } for _, testCase := range testTableConfig { buildSettings, err := CreateBuildSettingsInfo(&testCase.config, testCase.buildTool) assert.Nil(t, err) assert.Equal(t, buildSettings, testCase.expected) } }) }