github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/buildsettings/buildSettings_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package buildsettings
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestCreateBuildSettingsInfo(t *testing.T) {
    13  
    14  	t.Run("test build settings cpe with no previous and existing values", func(t *testing.T) {
    15  		testTableConfig := []struct {
    16  			config    BuildOptions
    17  			buildTool string
    18  			expected  string
    19  		}{
    20  			{
    21  				config:    BuildOptions{CreateBOM: true},
    22  				buildTool: "golangBuild",
    23  				expected:  "{\"golangBuild\":[{\"createBOM\":true}]}",
    24  			},
    25  			{
    26  				config:    BuildOptions{DockerImage: "golang:latest"},
    27  				buildTool: "golangBuild",
    28  				expected:  "{\"golangBuild\":[{\"dockerImage\":\"golang:latest\"}]}",
    29  			},
    30  			{
    31  				config:    BuildOptions{CreateBOM: true},
    32  				buildTool: "gradleBuild",
    33  				expected:  "{\"gradleBuild\":[{\"createBOM\":true}]}",
    34  			},
    35  			{
    36  				config:    BuildOptions{Publish: true},
    37  				buildTool: "helmExecute",
    38  				expected:  "{\"helmExecute\":[{\"publish\":true}]}",
    39  			},
    40  			{
    41  				config:    BuildOptions{Publish: true},
    42  				buildTool: "kanikoExecute",
    43  				expected:  "{\"kanikoExecute\":[{\"publish\":true}]}",
    44  			},
    45  			{
    46  				config:    BuildOptions{Profiles: []string{"profile1", "profile2"}, CreateBOM: true},
    47  				buildTool: "mavenBuild",
    48  				expected:  "{\"mavenBuild\":[{\"profiles\":[\"profile1\",\"profile2\"],\"createBOM\":true}]}",
    49  			},
    50  			{
    51  				config:    BuildOptions{Profiles: []string{"profile1", "profile2"}, CreateBOM: true, BuildSettingsInfo: "{\"mavenBuild\":[{\"createBOM\":true}]}"},
    52  				buildTool: "mavenBuild",
    53  				expected:  "{\"mavenBuild\":[{\"createBOM\":true},{\"profiles\":[\"profile1\",\"profile2\"],\"createBOM\":true}]}",
    54  			},
    55  			{
    56  				config:    BuildOptions{Profiles: []string{"release.build"}, Publish: true, GlobalSettingsFile: "http://nexus.test:8081/nexus/"},
    57  				buildTool: "mtaBuild",
    58  				expected:  "{\"mtaBuild\":[{\"profiles\":[\"release.build\"],\"publish\":true,\"globalSettingsFile\":\"http://nexus.test:8081/nexus/\"}]}",
    59  			},
    60  			{
    61  				config:    BuildOptions{CreateBOM: true},
    62  				buildTool: "pythonBuild",
    63  				expected:  "{\"pythonBuild\":[{\"createBOM\":true}]}",
    64  			},
    65  			{
    66  				config:    BuildOptions{CreateBOM: true},
    67  				buildTool: "npmExecuteScripts",
    68  				expected:  "{\"npmExecuteScripts\":[{\"createBOM\":true}]}",
    69  			},
    70  			{
    71  				config:    BuildOptions{DockerImage: "builder:latest"},
    72  				buildTool: "cnbBuild",
    73  				expected:  "{\"cnbBuild\":[{\"dockerImage\":\"builder:latest\"}]}",
    74  			},
    75  		}
    76  
    77  		for _, testCase := range testTableConfig {
    78  			buildSettings, err := CreateBuildSettingsInfo(&testCase.config, testCase.buildTool)
    79  			assert.Nil(t, err)
    80  			assert.Equal(t, buildSettings, testCase.expected)
    81  		}
    82  	})
    83  
    84  }