github.com/xgoffin/jenkins-library@v1.154.0/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  }