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  }