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

     1  package cmd
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/SAP/jenkins-library/pkg/cloudfoundry"
     7  	"github.com/SAP/jenkins-library/pkg/mock"
     8  	"github.com/SAP/jenkins-library/pkg/telemetry"
     9  	"github.com/pkg/errors"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestCloudFoundryCreateServiceKey(t *testing.T) {
    14  	var telemetryData telemetry.CustomData
    15  	t.Run("CF Create Service Key: Success case", func(t *testing.T) {
    16  		config := cloudFoundryCreateServiceKeyOptions{
    17  			CfAPIEndpoint:     "https://api.endpoint.com",
    18  			CfOrg:             "testOrg",
    19  			CfSpace:           "testSpace",
    20  			Username:          "testUser",
    21  			Password:          "testPassword",
    22  			CfServiceInstance: "testInstance",
    23  			CfServiceKeyName:  "testKey",
    24  		}
    25  		execRunner := mock.ExecMockRunner{}
    26  		cfUtilsMock := cloudfoundry.CfUtilsMock{}
    27  		defer cfUtilsMock.Cleanup()
    28  
    29  		error := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
    30  		if error == nil {
    31  			assert.Equal(t, "cf", execRunner.Calls[0].Exec)
    32  			assert.Equal(t, []string{"create-service-key", "testInstance", "testKey"}, execRunner.Calls[0].Params)
    33  		}
    34  	})
    35  	t.Run("CF Create Service Key with service Key config: Success case", func(t *testing.T) {
    36  		config := cloudFoundryCreateServiceKeyOptions{
    37  			CfAPIEndpoint:      "https://api.endpoint.com",
    38  			CfOrg:              "testOrg",
    39  			CfSpace:            "testSpace",
    40  			Username:           "testUser",
    41  			Password:           "testPassword",
    42  			CfServiceInstance:  "testInstance",
    43  			CfServiceKeyName:   "testKey",
    44  			CfServiceKeyConfig: "testconfig.yml",
    45  		}
    46  		execRunner := mock.ExecMockRunner{}
    47  		cfUtilsMock := cloudfoundry.CfUtilsMock{}
    48  		defer cfUtilsMock.Cleanup()
    49  
    50  		error := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
    51  		if error == nil {
    52  			assert.Equal(t, "cf", execRunner.Calls[0].Exec)
    53  			assert.Equal(t, []string{"create-service-key", "testInstance", "testKey", "-c", "testconfig.yml"}, execRunner.Calls[0].Params)
    54  		}
    55  	})
    56  	t.Run("CF Create Service Key with service Key config: Success case", func(t *testing.T) {
    57  		config := cloudFoundryCreateServiceKeyOptions{
    58  			CfAPIEndpoint:      "https://api.endpoint.com",
    59  			CfOrg:              "testOrg",
    60  			CfSpace:            "testSpace",
    61  			Username:           "testUser",
    62  			Password:           "testPassword",
    63  			CfServiceInstance:  "testInstance",
    64  			CfServiceKeyName:   "testKey",
    65  			CfServiceKeyConfig: "{\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}",
    66  		}
    67  		execRunner := mock.ExecMockRunner{}
    68  		cfUtilsMock := cloudfoundry.CfUtilsMock{}
    69  		defer cfUtilsMock.Cleanup()
    70  
    71  		error := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
    72  		if error == nil {
    73  			assert.Equal(t, "cf", execRunner.Calls[0].Exec)
    74  			assert.Equal(t, []string{"create-service-key", "testInstance", "testKey", "-c", "{\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}"}, execRunner.Calls[0].Params)
    75  		}
    76  	})
    77  }
    78  
    79  func TestCloudFoundryCreateServiceKeyErrorMessages(t *testing.T) {
    80  	errorMessage := "errorMessage"
    81  	var telemetryData telemetry.CustomData
    82  	t.Run("CF Login Error", func(t *testing.T) {
    83  		config := cloudFoundryCreateServiceKeyOptions{
    84  			CfAPIEndpoint:      "https://api.endpoint.com",
    85  			CfOrg:              "testOrg",
    86  			CfSpace:            "testSpace",
    87  			Username:           "testUser",
    88  			Password:           "testPassword",
    89  			CfServiceInstance:  "testInstance",
    90  			CfServiceKeyName:   "testKey",
    91  			CfServiceKeyConfig: "{\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}",
    92  		}
    93  		execRunner := mock.ExecMockRunner{}
    94  		cfUtilsMock := cloudfoundry.CfUtilsMock{
    95  			LoginError: errors.New(errorMessage),
    96  		}
    97  		defer cfUtilsMock.Cleanup()
    98  
    99  		error := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
   100  		assert.Equal(t, error.Error(), "Error while logging in occurred: "+errorMessage, "Wrong error message")
   101  	})
   102  
   103  	t.Run("CF Logout Error", func(t *testing.T) {
   104  		config := cloudFoundryCreateServiceKeyOptions{
   105  			CfAPIEndpoint:      "https://api.endpoint.com",
   106  			CfOrg:              "testOrg",
   107  			CfSpace:            "testSpace",
   108  			Username:           "testUser",
   109  			Password:           "testPassword",
   110  			CfServiceInstance:  "testInstance",
   111  			CfServiceKeyName:   "testKey",
   112  			CfServiceKeyConfig: "{\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}",
   113  		}
   114  		execRunner := mock.ExecMockRunner{}
   115  		cfUtilsMock := cloudfoundry.CfUtilsMock{
   116  			LogoutError: errors.New(errorMessage),
   117  		}
   118  		defer cfUtilsMock.Cleanup()
   119  
   120  		err := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
   121  		assert.Equal(t, err.Error(), "Error while logging out occurred: "+errorMessage, "Wrong error message")
   122  	})
   123  
   124  	t.Run("CF Create Service Key Error", func(t *testing.T) {
   125  		errorMessage := "errorMessage"
   126  		config := cloudFoundryCreateServiceKeyOptions{
   127  			CfAPIEndpoint:      "https://api.endpoint.com",
   128  			CfOrg:              "testOrg",
   129  			CfSpace:            "testSpace",
   130  			Username:           "testUser",
   131  			Password:           "testPassword",
   132  			CfServiceInstance:  "testInstance",
   133  			CfServiceKeyName:   "testKey",
   134  			CfServiceKeyConfig: "{\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}",
   135  		}
   136  		m := make(map[string]error)
   137  		m["cf create-service-key testInstance testKey -c {\"scenario_id\":\"SAP_COM_0510\",\"type\":\"basic\"}"] = errors.New(errorMessage)
   138  		execRunner := mock.ExecMockRunner{
   139  			ShouldFailOnCommand: m,
   140  		}
   141  		cfUtilsMock := cloudfoundry.CfUtilsMock{
   142  			LogoutError: errors.New(errorMessage),
   143  		}
   144  		defer cfUtilsMock.Cleanup()
   145  
   146  		error := runCloudFoundryCreateServiceKey(&config, &telemetryData, &execRunner, &cfUtilsMock)
   147  		assert.Equal(t, error.Error(), "Failed to Create Service Key: "+errorMessage, "Wrong error message")
   148  	})
   149  }