github.com/SAP/jenkins-library@v1.362.0/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 }