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

     1  //go:build unit
     2  // +build unit
     3  
     4  package cmd
     5  
     6  import (
     7  	"errors"
     8  	"testing"
     9  
    10  	"github.com/SAP/jenkins-library/pkg/mock"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  type credentialdiggerScanMockUtils struct {
    15  	*mock.ExecMockRunner
    16  	*mock.FilesMock
    17  	noerr bool
    18  }
    19  
    20  func newCDTestsUtils() credentialdiggerScanMockUtils {
    21  	utils := credentialdiggerScanMockUtils{
    22  		ExecMockRunner: &mock.ExecMockRunner{},
    23  		FilesMock:      &mock.FilesMock{},
    24  		noerr:          true, // flag for return value of MockRunner
    25  	}
    26  	return utils
    27  }
    28  func (c credentialdiggerScanMockUtils) RunExecutable(executable string, params ...string) error {
    29  	if c.noerr {
    30  		return nil
    31  	} else {
    32  		return errors.New("Some custom error")
    33  	}
    34  }
    35  
    36  func TestCredentialdiggerFullScan(t *testing.T) {
    37  	t.Run("Valid full scan without discoveries", func(t *testing.T) {
    38  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken"}
    39  		utils := newCDTestsUtils()
    40  		assert.Equal(t, nil, credentialdiggerFullScan(&config, nil, utils))
    41  
    42  	})
    43  	t.Run("Full scan with discoveries or wrong arguments", func(t *testing.T) {
    44  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken"}
    45  		utils := newCDTestsUtils()
    46  		utils.noerr = false
    47  		assert.EqualError(t, credentialdiggerFullScan(&config, nil, utils), "Some custom error")
    48  	})
    49  }
    50  
    51  func TestCredentialdiggerScanSnapshot(t *testing.T) {
    52  	t.Run("Valid scan snapshot without discoveries", func(t *testing.T) {
    53  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken", Snapshot: "main"}
    54  		utils := newCDTestsUtils()
    55  		assert.Equal(t, nil, credentialdiggerScanSnapshot(&config, nil, utils))
    56  	})
    57  	t.Run("Scan snapshot with discoveries or wrong arguments", func(t *testing.T) {
    58  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken", Snapshot: "main"}
    59  		utils := newCDTestsUtils()
    60  		utils.noerr = false
    61  		assert.EqualError(t, credentialdiggerScanSnapshot(&config, nil, utils), "Some custom error")
    62  	})
    63  }
    64  
    65  func TestCredentialdiggerScanPR(t *testing.T) {
    66  	t.Run("Valid scan pull request without discoveries", func(t *testing.T) {
    67  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken", PrNumber: 1}
    68  		utils := newCDTestsUtils()
    69  		assert.Equal(t, nil, credentialdiggerScanPR(&config, nil, utils))
    70  	})
    71  	t.Run("Scan pull request with discoveries or wrong arguments", func(t *testing.T) {
    72  		config := credentialdiggerScanOptions{Repository: "testRepo", Token: "validToken", PrNumber: 1}
    73  		utils := newCDTestsUtils()
    74  		utils.noerr = false
    75  		assert.EqualError(t, credentialdiggerScanPR(&config, nil, utils), "Some custom error")
    76  	})
    77  }
    78  
    79  func TestCredentialdiggerAddRules(t *testing.T) {
    80  	t.Run("Valid standard or remote rules", func(t *testing.T) {
    81  		config := credentialdiggerScanOptions{}
    82  		utils := newCDTestsUtils()
    83  		assert.Equal(t, nil, credentialdiggerAddRules(&config, nil, utils))
    84  	})
    85  	t.Run("Broken add rules", func(t *testing.T) {
    86  		config := credentialdiggerScanOptions{}
    87  		utils := newCDTestsUtils()
    88  		utils.noerr = false
    89  		assert.EqualError(t, credentialdiggerAddRules(&config, nil, utils), "Some custom error")
    90  	})
    91  	/*
    92  		// In case we want to test the error raised by piperhttp
    93  		t.Run("Invalid external rules link", func(t *testing.T) {
    94  			rulesExt := "https://broken-link.com/fakerules"
    95  			config := credentialdiggerScanOptions{RulesDownloadURL: rulesExt}
    96  			utils := newCDTestsUtils()
    97  			assert.Equal(t, nil, credentialdiggerAddRules(&config, nil, utils))
    98  		})
    99  	*/
   100  }
   101  
   102  func TestCredentialdiggerGetDiscoveries(t *testing.T) {
   103  	t.Run("Empty discoveries", func(t *testing.T) {
   104  		config := credentialdiggerScanOptions{Repository: "testRepo"}
   105  		utils := newCDTestsUtils()
   106  		assert.Equal(t, nil, credentialdiggerGetDiscoveries(&config, nil, utils))
   107  	})
   108  	t.Run("Get discoveries non-empty", func(t *testing.T) {
   109  		config := credentialdiggerScanOptions{Repository: "testRepo"}
   110  		utils := newCDTestsUtils()
   111  		utils.noerr = false
   112  		assert.EqualError(t, credentialdiggerGetDiscoveries(&config, nil, utils), "Some custom error")
   113  	})
   114  }
   115  
   116  func TestCredentialdiggerBuildCommonArgs(t *testing.T) {
   117  	t.Run("Valid build common args", func(t *testing.T) {
   118  		arguments := []string{"repoURL", "--sqlite", "piper_step_db.db", "--git_token", "validToken",
   119  			"--debug", "--models", "model1", "model2"}
   120  		config := credentialdiggerScanOptions{Repository: "repoURL", Token: "validToken", Snapshot: "main",
   121  			Debug: true, PrNumber: 1,
   122  			Models: []string{"model1", "model2"},
   123  		}
   124  		assert.Equal(t, arguments, credentialdiggerBuildCommonArgs(&config))
   125  	})
   126  
   127  }