github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/cloudFoundryDeleteSpace_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package cmd
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/SAP/jenkins-library/pkg/cloudfoundry"
    11  	"github.com/SAP/jenkins-library/pkg/mock"
    12  	"github.com/SAP/jenkins-library/pkg/telemetry"
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestCloudFoundryDeleteSpace(t *testing.T) {
    17  	m := &mock.ExecMockRunner{}
    18  	s := mock.ShellMockRunner{}
    19  	cf := cloudfoundry.CFUtils{Exec: m}
    20  	var telemetryData telemetry.CustomData
    21  
    22  	config := cloudFoundryDeleteSpaceOptions{
    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 := runCloudFoundryDeleteSpace(&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 := runCloudFoundryDeleteSpace(&config, &telemetryData, cf, &s)
    50  		assert.EqualError(t, e, "Error while logging in occured: "+errorMessage)
    51  	})
    52  
    53  	t.Run("CF Delete Space : success case", func(t *testing.T) {
    54  
    55  		err := runCloudFoundryDeleteSpace(&config, &telemetryData, cf, &s)
    56  		if assert.NoError(t, err) {
    57  			assert.Equal(t, "cf", m.Calls[0].Exec)
    58  			assert.Equal(t, []string{"delete-space", "testSpace", "-o", "testOrg", "-f"}, m.Calls[0].Params)
    59  		}
    60  	})
    61  
    62  	t.Run("CF Delete space: failure case", func(t *testing.T) {
    63  
    64  		errorMessage := "cf space creation error"
    65  
    66  		m.ShouldFailOnCommand = map[string]error{"cf delete-space testSpace -o testOrg -f": fmt.Errorf(errorMessage)}
    67  
    68  		gotError := runCloudFoundryDeleteSpace(&config, &telemetryData, cf, &s)
    69  		assert.EqualError(t, gotError, "Deletion of cf space has failed: "+errorMessage, "Wrong error message")
    70  	})
    71  }