github.com/SAP/jenkins-library@v1.362.0/cmd/contrastExecuteScan_test.go (about) 1 package cmd 2 3 import ( 4 "encoding/base64" 5 "testing" 6 7 "github.com/SAP/jenkins-library/pkg/mock" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type contrastExecuteScanMockUtils struct { 12 *mock.ExecMockRunner 13 *mock.FilesMock 14 } 15 16 func newContrastExecuteScanTestsUtils() contrastExecuteScanMockUtils { 17 utils := contrastExecuteScanMockUtils{ 18 ExecMockRunner: &mock.ExecMockRunner{}, 19 FilesMock: &mock.FilesMock{}, 20 } 21 return utils 22 } 23 24 func TestGetAuth(t *testing.T) { 25 t.Run("Success", func(t *testing.T) { 26 config := &contrastExecuteScanOptions{ 27 UserAPIKey: "user-api-key", 28 Username: "username", 29 ServiceKey: "service-key", 30 } 31 authString := getAuth(config) 32 assert.NotEmpty(t, authString) 33 data, err := base64.StdEncoding.DecodeString(authString) 34 assert.NoError(t, err) 35 assert.Equal(t, "username:service-key", string(data)) 36 }) 37 } 38 39 func TestGetApplicationUrls(t *testing.T) { 40 t.Run("Success", func(t *testing.T) { 41 config := &contrastExecuteScanOptions{ 42 Server: "https://server.com", 43 OrganizationID: "orgId", 44 ApplicationID: "appId", 45 } 46 appUrl, guiUrl := getApplicationUrls(config) 47 assert.Equal(t, "https://server.com/api/v4/organizations/orgId/applications/appId", appUrl) 48 assert.Equal(t, "https://server.com/Contrast/static/ng/index.html#/orgId/applications/appId", guiUrl) 49 }) 50 } 51 52 func TestValidateConfigs(t *testing.T) { 53 t.Parallel() 54 validConfig := contrastExecuteScanOptions{ 55 UserAPIKey: "user-api-key", 56 ServiceKey: "service-key", 57 Username: "username", 58 Server: "https://server.com", 59 OrganizationID: "orgId", 60 ApplicationID: "appId", 61 } 62 63 t.Run("Valid config", func(t *testing.T) { 64 config := validConfig 65 err := validateConfigs(&config) 66 assert.NoError(t, err) 67 }) 68 69 t.Run("Valid config, server url without https://", func(t *testing.T) { 70 config := validConfig 71 config.Server = "server.com" 72 err := validateConfigs(&config) 73 assert.NoError(t, err) 74 assert.Equal(t, config.Server, "https://server.com") 75 }) 76 77 t.Run("Empty config", func(t *testing.T) { 78 config := contrastExecuteScanOptions{} 79 80 err := validateConfigs(&config) 81 assert.Error(t, err) 82 }) 83 84 t.Run("Empty userAPIKey", func(t *testing.T) { 85 config := validConfig 86 config.UserAPIKey = "" 87 88 err := validateConfigs(&config) 89 assert.Error(t, err) 90 }) 91 92 t.Run("Empty username", func(t *testing.T) { 93 config := validConfig 94 config.Username = "" 95 96 err := validateConfigs(&config) 97 assert.Error(t, err) 98 }) 99 100 t.Run("Empty serviceKey", func(t *testing.T) { 101 config := validConfig 102 config.ServiceKey = "" 103 104 err := validateConfigs(&config) 105 assert.Error(t, err) 106 }) 107 108 t.Run("Empty server", func(t *testing.T) { 109 config := validConfig 110 config.Server = "" 111 112 err := validateConfigs(&config) 113 assert.Error(t, err) 114 }) 115 116 t.Run("Empty organizationId", func(t *testing.T) { 117 config := validConfig 118 config.OrganizationID = "" 119 120 err := validateConfigs(&config) 121 assert.Error(t, err) 122 }) 123 124 t.Run("Empty applicationID", func(t *testing.T) { 125 config := validConfig 126 config.ApplicationID = "" 127 128 err := validateConfigs(&config) 129 assert.Error(t, err) 130 }) 131 }