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