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 }