mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-01-18 05:18:24 +02:00
0fc131adec
* changes to detectExec before master merge * changes for detectExecuteScan * self generated code added * fix syntax errors and update docu * added unit tests for fail and Group * fix failOn bug * add Groups as string array * add Groups as string array * tests and validation for groups, failOn * Updated docs and added more tests * documentation md files should not be changed * Handle merge conflicts from PR 1845 * fix merge errors Co-authored-by: Oliver Nocon <33484802+OliverNocon@users.noreply.github.com>
127 lines
4.2 KiB
Go
127 lines
4.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/SAP/jenkins-library/pkg/mock"
|
|
|
|
"github.com/SAP/jenkins-library/pkg/log"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestRunDetect(t *testing.T) {
|
|
|
|
t.Run("success case", func(t *testing.T) {
|
|
s := mock.ShellMockRunner{}
|
|
runDetect(detectExecuteScanOptions{}, &s)
|
|
|
|
assert.Equal(t, ".", s.Dir, "Wrong execution directory used")
|
|
assert.Equal(t, "/bin/bash", s.Shell[0], "Bash shell expected")
|
|
expectedScript := "bash <(curl -s https://detect.synopsys.com/detect.sh) --blackduck.url= --blackduck.api.token= --detect.project.name=\\\"\\\" --detect.project.version.name=\\\"\\\" --detect.code.location.name=\\\"\\\""
|
|
assert.Equal(t, expectedScript, s.Calls[0])
|
|
})
|
|
|
|
t.Run("failure case", func(t *testing.T) {
|
|
var hasFailed bool
|
|
log.Entry().Logger.ExitFunc = func(int) { hasFailed = true }
|
|
|
|
s := mock.ShellMockRunner{ShouldFailOnCommand: map[string]error{"bash <(curl -s https://detect.synopsys.com/detect.sh) --blackduck.url= --blackduck.api.token= --detect.project.name=\\\"\\\" --detect.project.version.name=\\\"\\\" --detect.code.location.name=\\\"\\\"": fmt.Errorf("Test Error")}}
|
|
runDetect(detectExecuteScanOptions{}, &s)
|
|
assert.True(t, hasFailed, "expected command to exit with fatal")
|
|
})
|
|
}
|
|
|
|
func TestAddDetectArgs(t *testing.T) {
|
|
testData := []struct {
|
|
args []string
|
|
options detectExecuteScanOptions
|
|
expected []string
|
|
}{
|
|
{
|
|
args: []string{"--testProp1=1"},
|
|
options: detectExecuteScanOptions{
|
|
ScanProperties: []string{"--scan1=1", "--scan2=2"},
|
|
ServerURL: "https://server.url",
|
|
APIToken: "apiToken",
|
|
ProjectName: "testName",
|
|
Version: "1.0",
|
|
VersioningModel: "major-minor",
|
|
CodeLocation: "",
|
|
Scanners: []string{"signature"},
|
|
ScanPaths: []string{"path1", "path2"},
|
|
},
|
|
expected: []string{
|
|
"--testProp1=1",
|
|
"--scan1=1",
|
|
"--scan2=2",
|
|
"--blackduck.url=https://server.url",
|
|
"--blackduck.api.token=apiToken",
|
|
"--detect.project.name=\\\"testName\\\"",
|
|
"--detect.project.version.name=\\\"1.0\\\"",
|
|
"--detect.code.location.name=\\\"testName/1.0\\\"",
|
|
"--detect.blackduck.signature.scanner.paths=path1,path2",
|
|
},
|
|
},
|
|
{
|
|
args: []string{"--testProp1=1"},
|
|
options: detectExecuteScanOptions{
|
|
ServerURL: "https://server.url",
|
|
APIToken: "apiToken",
|
|
ProjectName: "testName",
|
|
Version: "1.0",
|
|
VersioningModel: "major-minor",
|
|
CodeLocation: "testLocation",
|
|
FailOn: []string{"BLOCKER", "MAJOR"},
|
|
Scanners: []string{"source"},
|
|
ScanPaths: []string{"path1", "path2"},
|
|
Groups: []string{"testGroup"},
|
|
},
|
|
expected: []string{
|
|
"--testProp1=1",
|
|
"--blackduck.url=https://server.url",
|
|
"--blackduck.api.token=apiToken",
|
|
"--detect.project.name=\\\"testName\\\"",
|
|
"--detect.project.version.name=\\\"1.0\\\"",
|
|
"--detect.project.user.groups=\\\"testGroup\\\"",
|
|
"--detect.policy.check.fail.on.severities=BLOCKER,MAJOR",
|
|
"--detect.code.location.name=\\\"testLocation\\\"",
|
|
"--detect.source.path=path1",
|
|
},
|
|
},
|
|
{
|
|
args: []string{"--testProp1=1"},
|
|
options: detectExecuteScanOptions{
|
|
ServerURL: "https://server.url",
|
|
APIToken: "apiToken",
|
|
ProjectName: "testName",
|
|
CodeLocation: "testLocation",
|
|
FailOn: []string{"BLOCKER", "MAJOR"},
|
|
Scanners: []string{"source"},
|
|
ScanPaths: []string{"path1", "path2"},
|
|
Groups: []string{"testGroup", "testGroup2"},
|
|
Version: "1.0",
|
|
VersioningModel: "major-minor",
|
|
},
|
|
expected: []string{
|
|
"--testProp1=1",
|
|
"--blackduck.url=https://server.url",
|
|
"--blackduck.api.token=apiToken",
|
|
"--detect.project.name=\\\"testName\\\"",
|
|
"--detect.project.version.name=\\\"1.0\\\"",
|
|
"--detect.project.user.groups=\\\"testGroup\\\",\\\"testGroup2\\\"",
|
|
"--detect.policy.check.fail.on.severities=BLOCKER,MAJOR",
|
|
"--detect.code.location.name=\\\"testLocation\\\"",
|
|
"--detect.source.path=path1",
|
|
},
|
|
},
|
|
}
|
|
|
|
for k, v := range testData {
|
|
t.Run(fmt.Sprintf("run %v", k), func(t *testing.T) {
|
|
got := addDetectArgs(v.args, v.options)
|
|
assert.Equal(t, v.expected, got)
|
|
})
|
|
}
|
|
}
|