github.com/xgoffin/jenkins-library@v1.154.0/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  }