github.com/SAP/jenkins-library@v1.362.0/cmd/transportRequestUploadRFC_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "fmt" 8 "github.com/SAP/jenkins-library/pkg/mock" 9 "github.com/SAP/jenkins-library/pkg/transportrequest/rfc" 10 "github.com/stretchr/testify/assert" 11 "testing" 12 ) 13 14 type transportRequestUploadRFCMockUtils struct { 15 *mock.ExecMockRunner 16 } 17 18 func newTransportRequestUploadRFCTestsUtils() transportRequestUploadRFCMockUtils { 19 utils := transportRequestUploadRFCMockUtils{ 20 ExecMockRunner: &mock.ExecMockRunner{}, 21 } 22 return utils 23 } 24 25 type uploadMock struct { 26 received rfc.UploadAction 27 uploadCalled bool 28 failWith error 29 } 30 31 // WithApplicationURL The location of the deployable 32 func (m *uploadMock) WithApplicationURL(z string) { 33 m.received.ApplicationURL = z 34 } 35 36 // WithTransportRequestID The transport request ID for the upload 37 func (m *uploadMock) WithTransportRequestID(t string) { 38 m.received.TransportRequestID = t 39 } 40 41 // WithApplication Everything we need to know about the application 42 func (m *uploadMock) WithApplication(a rfc.Application) { 43 m.received.Application = a 44 } 45 46 // WithConfiguration Everything we need to know in order to perform the upload 47 func (m *uploadMock) WithConfiguration(c rfc.UploadConfig) { 48 m.received.Configuration = c 49 } 50 51 // WithConnection Everything we need to know about the connection 52 func (m *uploadMock) WithConnection(c rfc.Connection) { 53 m.received.Connection = c 54 } 55 56 func (m *uploadMock) Perform(exec rfc.Exec) error { 57 m.uploadCalled = true 58 return m.failWith 59 } 60 61 type configMock struct { 62 config *transportRequestUploadRFCOptions 63 } 64 65 func TestTrRfcRunTransportRequestUpload(t *testing.T) { 66 t.Parallel() 67 68 t.Run("good", func(t *testing.T) { 69 t.Parallel() 70 71 utils := newTransportRequestUploadRFCTestsUtils() 72 configMock := newRfcConfigMock() 73 actionMock := uploadMock{} 74 cpe := &transportRequestUploadRFCCommonPipelineEnvironment{} 75 76 err := runTransportRequestUploadRFC(configMock.config, &actionMock, nil, utils, cpe) 77 78 if assert.NoError(t, err) { 79 t.Run("upload triggered", func(t *testing.T) { 80 assert.True(t, actionMock.uploadCalled) 81 }) 82 t.Run("parameters has been marshalled", func(t *testing.T) { 83 assert.Equal(t, rfc.UploadAction{ 84 Connection: rfc.Connection{ 85 Endpoint: "https://my.abap.server", 86 Client: "001", 87 Instance: "00", 88 User: "me", 89 Password: "******", 90 }, 91 Application: rfc.Application{ 92 Name: "MyApp", 93 Description: "Lorem impsum", 94 AbapPackage: "ABC", 95 }, 96 Configuration: rfc.UploadConfig{ 97 AcceptUnixStyleEndOfLine: true, 98 CodePage: "UTF-8", 99 FailUploadOnWarning: true, 100 Verbose: false, // comes from general config 101 }, 102 TransportRequestID: "K12345678", 103 ApplicationURL: "http://example.org/myDeployable.zip", 104 }, actionMock.received) 105 106 assert.Equal(t, cpe.custom.transportRequestID, "K12345678") 107 }) 108 } 109 }) 110 t.Run("bad", func(t *testing.T) { 111 t.Parallel() 112 113 t.Run("Error during deployment", func(t *testing.T) { 114 utilsMock := newTransportRequestUploadSOLMANTestsUtils(0) 115 configMock := newRfcConfigMock() 116 actionMock := uploadMock{failWith: fmt.Errorf("upload failed")} 117 cpe := &transportRequestUploadRFCCommonPipelineEnvironment{} 118 119 err := runTransportRequestUploadRFC(configMock.config, &actionMock, nil, utilsMock, cpe) 120 121 assert.Error(t, err, "upload failed") 122 }) 123 }) 124 } 125 126 func newRfcConfigMock() *configMock { 127 return &configMock{ 128 config: &transportRequestUploadRFCOptions{ 129 Endpoint: "https://my.abap.server", 130 Client: "001", 131 Instance: "00", 132 Username: "me", 133 Password: "******", 134 ApplicationName: "MyApp", 135 ApplicationDescription: "Lorem impsum", 136 AbapPackage: "ABC", 137 ApplicationURL: "http://example.org/myDeployable.zip", 138 CodePage: "UTF-8", 139 AcceptUnixStyleLineEndings: true, 140 FailUploadOnWarning: true, 141 TransportRequestID: "K12345678", 142 }, 143 } 144 }