github.com/jaylevin/jenkins-library@v1.230.4/cmd/transportRequestUploadCTS_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "github.com/SAP/jenkins-library/pkg/command" 6 "github.com/SAP/jenkins-library/pkg/mock" 7 transportrequest "github.com/SAP/jenkins-library/pkg/transportrequest/cts" 8 "github.com/stretchr/testify/assert" 9 "testing" 10 ) 11 12 type UploadActionMock struct { 13 Connection transportrequest.Connection 14 Application transportrequest.Application 15 Node transportrequest.Node 16 TransportRequestID string 17 ConfigFile string 18 DeployUser string 19 thrown error 20 } 21 22 // WithConnection ... 23 func (action *UploadActionMock) WithConnection(connection transportrequest.Connection) { 24 action.Connection = connection 25 } 26 27 // WithApplication ... 28 func (action *UploadActionMock) WithApplication(app transportrequest.Application) { 29 action.Application = app 30 } 31 32 // WithNodeProperties ... 33 func (action *UploadActionMock) WithNodeProperties(node transportrequest.Node) { 34 action.Node = node 35 } 36 37 // WithTransportRequestID ... 38 func (action *UploadActionMock) WithTransportRequestID(id string) { 39 action.TransportRequestID = id 40 } 41 42 // WithConfigFile ... 43 func (action *UploadActionMock) WithConfigFile(configFile string) { 44 action.ConfigFile = configFile 45 } 46 47 // WithDeployUser ... 48 func (action *UploadActionMock) WithDeployUser(deployUser string) { 49 action.DeployUser = deployUser 50 } 51 52 func (action *UploadActionMock) Perform(cmd command.ShellRunner) error { 53 return action.thrown 54 } 55 56 type transportRequestUploadMockUtils struct { 57 *mock.ShellMockRunner 58 } 59 60 func newTransportRequestUploadCTSTestsUtils() transportRequestUploadMockUtils { 61 utils := transportRequestUploadMockUtils{ 62 ShellMockRunner: &mock.ShellMockRunner{}, 63 } 64 return utils 65 } 66 67 func TestRunTransportRequestUploadCTS(t *testing.T) { 68 t.Parallel() 69 70 t.Run("happy path", func(t *testing.T) { 71 // init 72 config := transportRequestUploadCTSOptions{ 73 Endpoint: "https://example.org:8000", 74 Client: "001", 75 Username: "me", 76 Password: "********", 77 ApplicationName: "myApp", 78 AbapPackage: "myPackage", 79 Description: "lorem ipsum", 80 TransportRequestID: "XXXK123456", 81 OsDeployUser: "node", // default provided in config 82 DeployConfigFile: "ui5-deploy.yaml", // default provided in config 83 DeployToolDependencies: []string{"@ui5/cli", "@sap/ux-ui5-tooling"}, 84 NpmInstallOpts: []string{"--verbose", "--registry", "https://registry.example.org/"}, 85 } 86 87 actionMock := &UploadActionMock{thrown: nil} 88 cpe := &transportRequestUploadCTSCommonPipelineEnvironment{} 89 // test 90 err := runTransportRequestUploadCTS(&config, actionMock, nil, newTransportRequestUploadCTSTestsUtils(), cpe) 91 92 // assert 93 if assert.NoError(t, err) { 94 assert.Equal(t, &UploadActionMock{ 95 Connection: transportrequest.Connection{ 96 Endpoint: "https://example.org:8000", 97 Client: "001", 98 User: "me", 99 Password: "********", 100 }, 101 Application: transportrequest.Application{ 102 Name: "myApp", 103 Pack: "myPackage", 104 Desc: "lorem ipsum", 105 }, 106 Node: transportrequest.Node{ 107 DeployDependencies: []string{ 108 "@ui5/cli", 109 "@sap/ux-ui5-tooling", 110 }, 111 InstallOpts: []string{ 112 "--verbose", 113 "--registry", 114 "https://registry.example.org/", 115 }, 116 }, 117 TransportRequestID: "XXXK123456", 118 ConfigFile: "ui5-deploy.yaml", 119 DeployUser: "node", 120 }, actionMock) 121 } 122 }) 123 124 t.Run("error case", func(t *testing.T) { 125 126 config := transportRequestUploadCTSOptions{ 127 Endpoint: "https://example.org:8000", 128 Client: "001", 129 Username: "me", 130 Password: "********", 131 ApplicationName: "myApp", 132 AbapPackage: "myPackage", 133 Description: "lorem ipsum", 134 TransportRequestID: "XXXK123456", 135 OsDeployUser: "node", // default provided in config 136 DeployConfigFile: "ui5-deploy.yaml", // default provided in config 137 DeployToolDependencies: []string{"@ui5/cli", "@sap/ux-ui5-tooling"}, 138 NpmInstallOpts: []string{"--verbose", "--registry", "https://registry.example.org/"}, 139 } 140 cpe := &transportRequestUploadCTSCommonPipelineEnvironment{} 141 142 err := runTransportRequestUploadCTS( 143 &config, 144 &UploadActionMock{thrown: fmt.Errorf("something went wrong")}, 145 nil, 146 newTransportRequestUploadCTSTestsUtils(), 147 cpe) 148 assert.EqualError(t, err, "something went wrong") 149 }) 150 }