github.com/jaylevin/jenkins-library@v1.230.4/cmd/hadolintExecute_test.go (about) 1 package cmd 2 3 import ( 4 "testing" 5 6 "github.com/SAP/jenkins-library/pkg/hadolint/mocks" 7 piperMocks "github.com/SAP/jenkins-library/pkg/mock" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/mock" 10 ) 11 12 func TestRunHadolintExecute(t *testing.T) { 13 t.Run("default", func(t *testing.T) { 14 // init 15 fileMock := &mocks.HadolintPiperFileUtils{} 16 clientMock := &mocks.HadolintClient{} 17 runnerMock := &piperMocks.ExecMockRunner{} 18 config := hadolintExecuteOptions{ 19 DockerFile: "./Dockerfile", // default 20 ConfigurationFile: ".hadolint.yaml", // default 21 } 22 23 fileMock. 24 On("FileExists", config.ConfigurationFile).Return(false, nil) 25 26 // test 27 err := runHadolint(config, hadolintUtils{ 28 HadolintPiperFileUtils: fileMock, 29 HadolintClient: clientMock, 30 hadolintRunner: runnerMock, 31 }) 32 // assert 33 assert.NoError(t, err) 34 if assert.Len(t, runnerMock.Calls, 1) { 35 assert.Equal(t, "hadolint", runnerMock.Calls[0].Exec) 36 assert.Contains(t, runnerMock.Calls[0].Params, config.DockerFile) 37 assert.Contains(t, runnerMock.Calls[0].Params, "--format") 38 assert.Contains(t, runnerMock.Calls[0].Params, "checkstyle") 39 assert.NotContains(t, runnerMock.Calls[0].Params, "--config") 40 assert.NotContains(t, runnerMock.Calls[0].Params, config.ConfigurationFile) 41 } 42 // assert that mocks are called as previously defined 43 fileMock.AssertExpectations(t) 44 clientMock.AssertExpectations(t) 45 }) 46 47 t.Run("with remote config", func(t *testing.T) { 48 // init 49 fileMock := &mocks.HadolintPiperFileUtils{} 50 clientMock := &mocks.HadolintClient{} 51 runnerMock := &piperMocks.ExecMockRunner{} 52 config := hadolintExecuteOptions{ 53 DockerFile: "./Dockerfile", // default 54 ConfigurationFile: ".hadolint.yaml", // default 55 ConfigurationURL: "https://myconfig", 56 } 57 58 clientMock. 59 On("SetOptions", mock.Anything). 60 On("DownloadFile", config.ConfigurationURL, config.ConfigurationFile, mock.Anything, mock.Anything).Return(nil) 61 fileMock. 62 // checks if config exists before downloading 63 On("FileExists", config.ConfigurationFile).Return(false, nil).Once(). 64 // checks again but config is now downloaded 65 On("FileExists", config.ConfigurationFile).Return(true, nil) 66 // test 67 err := runHadolint(config, hadolintUtils{ 68 HadolintPiperFileUtils: fileMock, 69 HadolintClient: clientMock, 70 hadolintRunner: runnerMock, 71 }) 72 // assert 73 assert.NoError(t, err) 74 if assert.Len(t, runnerMock.Calls, 1) { 75 assert.Equal(t, "hadolint", runnerMock.Calls[0].Exec) 76 assert.Contains(t, runnerMock.Calls[0].Params, config.DockerFile) 77 assert.Contains(t, runnerMock.Calls[0].Params, "--format") 78 assert.Contains(t, runnerMock.Calls[0].Params, "checkstyle") 79 assert.Contains(t, runnerMock.Calls[0].Params, "--config") 80 assert.Contains(t, runnerMock.Calls[0].Params, config.ConfigurationFile) 81 } 82 // assert that mocks are called as previously defined 83 fileMock.AssertExpectations(t) 84 clientMock.AssertExpectations(t) 85 }) 86 }