github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/jenkins/jenkins_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package jenkins 5 6 import ( 7 "context" 8 "fmt" 9 "testing" 10 11 "github.com/SAP/jenkins-library/pkg/jenkins/mocks" 12 "github.com/bndr/gojenkins" 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/mock" 15 ) 16 17 func TestInterfaceCompatibility(t *testing.T) { 18 var _ Jenkins = new(gojenkins.Jenkins) 19 var _ Build = new(gojenkins.Build) 20 } 21 22 func TestTriggerJob(t *testing.T) { 23 ctx := context.Background() 24 jobParameters := map[string]string{} 25 26 t.Run("error - job not updated", func(t *testing.T) { 27 // init 28 jenkins := &mocks.Jenkins{} 29 jenkins.Test(t) 30 job := &mocks.Job{} 31 job.Test(t) 32 job. 33 On("Poll", ctx).Return(404, fmt.Errorf(mock.Anything)) 34 // test 35 build, err := TriggerJob(ctx, jenkins, job, jobParameters) 36 // asserts 37 job.AssertExpectations(t) 38 jenkins.AssertExpectations(t) 39 assert.EqualError(t, err, fmt.Sprintf("failed to load job: %s", mock.Anything)) 40 assert.Nil(t, build) 41 }) 42 t.Run("error - task not started", func(t *testing.T) { 43 // init 44 queueID := int64(0) 45 jenkins := &mocks.Jenkins{} 46 jenkins.Test(t) 47 job := &mocks.Job{} 48 job.Test(t) 49 job. 50 On("Poll", ctx).Return(200, nil). 51 On("InvokeSimple", ctx, map[string]string{}). 52 Return(queueID, fmt.Errorf(mock.Anything)) 53 // test 54 build, err := TriggerJob(ctx, jenkins, job, jobParameters) 55 // asserts 56 job.AssertExpectations(t) 57 jenkins.AssertExpectations(t) 58 assert.EqualError(t, err, mock.Anything) 59 assert.Nil(t, build) 60 }) 61 t.Run("error - task already queued", func(t *testing.T) { 62 // init 63 queueID := int64(0) 64 jenkins := &mocks.Jenkins{} 65 jenkins.Test(t) 66 job := &mocks.Job{} 67 job.Test(t) 68 job. 69 On("Poll", ctx).Return(200, nil). 70 On("InvokeSimple", ctx, jobParameters). 71 Return(queueID, nil) 72 // test 73 build, err := TriggerJob(ctx, jenkins, job, jobParameters) 74 // asserts 75 job.AssertExpectations(t) 76 jenkins.AssertExpectations(t) 77 assert.EqualError(t, err, "unable to queue build") 78 assert.Nil(t, build) 79 }) 80 t.Run("error - task not queued", func(t *testing.T) { 81 // init 82 queueID := int64(43) 83 jenkins := &mocks.Jenkins{} 84 jenkins.Test(t) 85 job := &mocks.Job{} 86 job.Test(t) 87 job. 88 On("Poll", ctx).Return(200, nil). 89 On("InvokeSimple", ctx, jobParameters). 90 Return(queueID, nil). 91 On("GetJob"). 92 Return(&gojenkins.Job{}) 93 jenkins. 94 On("GetBuildFromQueueID", ctx, mock.Anything, queueID). 95 Return(nil, fmt.Errorf(mock.Anything)) 96 // test 97 build, err := TriggerJob(ctx, jenkins, job, jobParameters) 98 // asserts 99 job.AssertExpectations(t) 100 jenkins.AssertExpectations(t) 101 assert.EqualError(t, err, mock.Anything) 102 assert.Nil(t, build) 103 }) 104 t.Run("success", func(t *testing.T) { 105 // init 106 queueID := int64(43) 107 jenkins := &mocks.Jenkins{} 108 jenkins.Test(t) 109 job := &mocks.Job{} 110 job.Test(t) 111 job. 112 On("Poll", ctx).Return(200, nil). 113 On("InvokeSimple", ctx, jobParameters). 114 Return(queueID, nil). 115 On("GetJob"). 116 Return(&gojenkins.Job{}) 117 jenkins. 118 On("GetBuildFromQueueID", ctx, mock.Anything, queueID). 119 Return(&gojenkins.Build{}, nil) 120 // test 121 build, err := TriggerJob(ctx, jenkins, job, jobParameters) 122 // asserts 123 jenkins.AssertExpectations(t) 124 assert.NoError(t, err) 125 assert.NotNil(t, build) 126 }) 127 }