github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/mavenExecute_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "errors" 8 "github.com/SAP/jenkins-library/pkg/mock" 9 "github.com/stretchr/testify/assert" 10 "net/http" 11 "testing" 12 ) 13 14 type mavenMockUtils struct { 15 shouldFail bool 16 *mock.FilesMock 17 *mock.ExecMockRunner 18 } 19 20 func (m *mavenMockUtils) DownloadFile(_, _ string, _ http.Header, _ []*http.Cookie) error { 21 return errors.New("Test should not download files.") 22 } 23 24 func newMavenMockUtils() mavenMockUtils { 25 utils := mavenMockUtils{ 26 shouldFail: false, 27 FilesMock: &mock.FilesMock{}, 28 ExecMockRunner: &mock.ExecMockRunner{}, 29 } 30 return utils 31 } 32 33 func TestMavenExecute(t *testing.T) { 34 t.Run("mavenExecute should write output file", func(t *testing.T) { 35 // init 36 config := mavenExecuteOptions{ 37 Goals: []string{"goal"}, 38 LogSuccessfulMavenTransfers: true, 39 ReturnStdout: true, 40 } 41 42 mockUtils := newMavenMockUtils() 43 mockUtils.StdoutReturn = map[string]string{} 44 mockUtils.StdoutReturn[""] = "test output" 45 46 // test 47 err := runMavenExecute(config, &mockUtils) 48 49 // assert 50 expectedParams := []string{ 51 "--batch-mode", "goal", 52 } 53 54 assert.NoError(t, err) 55 if assert.Equal(t, 1, len(mockUtils.Calls)) { 56 assert.Equal(t, "mvn", mockUtils.Calls[0].Exec) 57 assert.Equal(t, expectedParams, mockUtils.Calls[0].Params) 58 } 59 60 outputFileExists, _ := mockUtils.FileExists(".pipeline/maven_output.txt") 61 assert.True(t, outputFileExists) 62 63 output, _ := mockUtils.FileRead(".pipeline/maven_output.txt") 64 65 assert.Equal(t, "test output", string(output)) 66 }) 67 68 t.Run("mavenExecute should NOT write output file", func(t *testing.T) { 69 // init 70 config := mavenExecuteOptions{ 71 Goals: []string{"goal"}, 72 LogSuccessfulMavenTransfers: true, 73 } 74 75 mockUtils := newMavenMockUtils() 76 77 // test 78 err := runMavenExecute(config, &mockUtils) 79 80 // assert 81 expectedParams := []string{ 82 "--batch-mode", "goal", 83 } 84 85 assert.NoError(t, err) 86 if assert.Equal(t, 1, len(mockUtils.Calls)) { 87 assert.Equal(t, "mvn", mockUtils.Calls[0].Exec) 88 assert.Equal(t, expectedParams, mockUtils.Calls[0].Params) 89 } 90 91 outputFileExists, _ := mockUtils.FileExists(".pipeline/maven_output.txt") 92 assert.False(t, outputFileExists) 93 }) 94 }