mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
60feb3409f
Upload content into a transport request via SOLMAN Co-authored-by: Oliver Feldmann <oliver.feldmann@sap.com>
109 lines
3.0 KiB
Go
109 lines
3.0 KiB
Go
package solman
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/SAP/jenkins-library/pkg/mock"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestSolmanUpload(t *testing.T) {
|
|
|
|
f := &mock.FilesMock{}
|
|
f.AddFile("myDeployable.xxx", []byte(""))
|
|
|
|
defaultUploadAction := UploadAction{}
|
|
defaultUploadAction.WithConnection(
|
|
Connection{
|
|
Endpoint: "https://example.org/solman",
|
|
User: "me",
|
|
Password: "******",
|
|
})
|
|
defaultUploadAction.WithChangeDocumentID("123456")
|
|
defaultUploadAction.WithTransportRequestID("000K11111111")
|
|
defaultUploadAction.WithApplicationID("MY_APP")
|
|
defaultUploadAction.WithFile("myDeployable.xxx")
|
|
defaultUploadAction.WithCMOpts([]string{"-Dmyprop1=abc", "-Dmyprop2=def"})
|
|
|
|
t.Run("Deployable does not exist", func(t *testing.T) {
|
|
|
|
uploadActionFileMissing := defaultUploadAction
|
|
uploadActionFileMissing.WithFile("myMissingDeployable.xxx")
|
|
e := &mock.ExecMockRunner{}
|
|
|
|
err := uploadActionFileMissing.Perform(f, e)
|
|
|
|
assert.EqualError(t, err, "cannot upload artifact 'myMissingDeployable.xxx': file 'myMissingDeployable.xxx' does not exist")
|
|
})
|
|
|
|
t.Run("Straight forward", func(t *testing.T) {
|
|
|
|
e := &mock.ExecMockRunner{}
|
|
|
|
err := defaultUploadAction.Perform(f, e)
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Len(t, e.Calls, 1)
|
|
assert.Equal(t, mock.ExecCall{
|
|
Exec: "cmclient",
|
|
Params: []string{
|
|
"--endpoint", "https://example.org/solman",
|
|
"--user", "me",
|
|
"--password", "******",
|
|
"--backend-type", "SOLMAN",
|
|
"upload-file-to-transport",
|
|
"-cID", "123456",
|
|
"-tID", "000K11111111",
|
|
"MY_APP",
|
|
"myDeployable.xxx",
|
|
},
|
|
}, e.Calls[0])
|
|
assert.Equal(t, []string{"CMCLIENT_OPTS=-Dmyprop1=abc -Dmyprop2=def"}, e.Env)
|
|
}
|
|
})
|
|
|
|
t.Run("Missing parameters", func(t *testing.T) {
|
|
e := &mock.ExecMockRunner{}
|
|
uploadAction := defaultUploadAction
|
|
uploadAction.WithConnection(
|
|
Connection{
|
|
Endpoint: "",
|
|
User: "me",
|
|
Password: "******",
|
|
},
|
|
)
|
|
uploadAction.WithTransportRequestID("")
|
|
err := uploadAction.Perform(f, e)
|
|
if assert.Error(t, err) {
|
|
// we should not rely on the order of the missing parameters
|
|
assert.Contains(t, err.Error(), "cannot upload artifact 'myDeployable.xxx': the following parameters are not available")
|
|
assert.Contains(t, err.Error(), "Connection.Endpoint")
|
|
assert.Contains(t, err.Error(), "TransportRequestID")
|
|
}
|
|
})
|
|
|
|
t.Run("Deploy command returns with return code not equal zero", func(t *testing.T) {
|
|
|
|
e := &mock.ExecMockRunner{}
|
|
e.ExitCode = 1
|
|
|
|
err := defaultUploadAction.Perform(f, e)
|
|
|
|
assert.EqualError(t, err, "cannot upload artifact 'myDeployable.xxx': upload command returned with exit code '1'")
|
|
})
|
|
|
|
t.Run("Deploy command cannot be executed", func(t *testing.T) {
|
|
|
|
e := &mock.ExecMockRunner{
|
|
ShouldFailOnCommand: map[string]error{
|
|
"cmclient.*": fmt.Errorf("cannot execute upload command"),
|
|
},
|
|
}
|
|
|
|
err := defaultUploadAction.Perform(f, e)
|
|
|
|
assert.EqualError(t, err, "cannot upload artifact 'myDeployable.xxx': cannot execute upload command")
|
|
})
|
|
|
|
}
|