github.com/xgoffin/jenkins-library@v1.154.0/cmd/cloudFoundryCreateSpace_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/SAP/jenkins-library/pkg/cloudfoundry"
     8  	"github.com/SAP/jenkins-library/pkg/mock"
     9  	"github.com/SAP/jenkins-library/pkg/telemetry"
    10  	"github.com/pkg/errors"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestCloudFoundryCreateSpace(t *testing.T) {
    15  	m := &mock.ExecMockRunner{}
    16  	s := mock.ShellMockRunner{}
    17  
    18  	cf := cloudfoundry.CFUtils{Exec: m}
    19  	cfUtilsMock := cloudfoundry.CfUtilsMock{}
    20  	var telemetryData telemetry.CustomData
    21  
    22  	config := cloudFoundryCreateSpaceOptions{
    23  		CfAPIEndpoint: "https://api.endpoint.com",
    24  		CfOrg:         "testOrg",
    25  		CfSpace:       "testSpace",
    26  		Username:      "testUser",
    27  		Password:      "testPassword",
    28  	}
    29  
    30  	t.Run("CF login: Success", func(t *testing.T) {
    31  
    32  		err := runCloudFoundryCreateSpace(&config, &telemetryData, cf, &s)
    33  		if assert.NoError(t, err) {
    34  			assert.Contains(t, s.Calls[0], "yes '' | cf login -a https://api.endpoint.com -u testUser -p testPassword")
    35  		}
    36  	})
    37  
    38  	t.Run("CF login: failure case", func(t *testing.T) {
    39  
    40  		errorMessage := "cf login failed"
    41  
    42  		defer func() {
    43  			s.Calls = nil
    44  			s.ShouldFailOnCommand = nil
    45  		}()
    46  
    47  		s.ShouldFailOnCommand = map[string]error{"yes '' | cf login -a https://api.endpoint.com -u testUser -p testPassword ": fmt.Errorf(errorMessage)}
    48  
    49  		e := runCloudFoundryCreateSpace(&config, &telemetryData, cf, &s)
    50  		assert.EqualError(t, e, "Error while logging in occured: "+errorMessage)
    51  	})
    52  
    53  	t.Run("CF space creation: Success", func(t *testing.T) {
    54  
    55  		err := runCloudFoundryCreateSpace(&config, &telemetryData, cf, &s)
    56  		if assert.NoError(t, err) {
    57  			assert.Equal(t, "cf", m.Calls[0].Exec)
    58  			assert.Equal(t, []string{"create-space", "testSpace", "-o", "testOrg"}, m.Calls[0].Params)
    59  		}
    60  	})
    61  
    62  	t.Run("CF space creation: FAILURE", func(t *testing.T) {
    63  
    64  		defer cfUtilsMock.Cleanup()
    65  		errorMessage := "cf space creation error"
    66  
    67  		m.ShouldFailOnCommand = map[string]error{"cf create-space testSpace -o testOrg": fmt.Errorf(errorMessage)}
    68  
    69  		cfUtilsMock.LoginError = errors.New(errorMessage)
    70  
    71  		gotError := runCloudFoundryCreateSpace(&config, &telemetryData, cf, &s)
    72  		assert.EqualError(t, gotError, "Creating a cf space has failed: "+errorMessage, "Wrong error message")
    73  	})
    74  }