@@ -627,6 +627,75 @@ func TestRunVulnerabilityScanningNotEnabled(t *testing.T) {
627627 assert .Empty (t , results )
628628}
629629
630+ func TestRunSkipsDependencyScanWhenScaNotEnabled (t * testing.T ) {
631+ // Arrange
632+ srcDir , err := os .MkdirTemp ("" , "" )
633+ if err != nil {
634+ assert .FailNow (t , "Failed to create tmp directory" , err .Error ())
635+ }
636+ defer os .RemoveAll (srcDir )
637+
638+ f , err := os .CreateTemp (srcDir , "file-" )
639+ if err != nil {
640+ assert .FailNow (t , "Failed to create tmp file" , err .Error ())
641+ }
642+ defer f .Close ()
643+
644+ if _ , err := f .Write ([]byte ("AWS_ACCESS_KEY_ID=AKIA0123456789ABCDEF" )); err != nil {
645+ assert .FailNow (t , "Failed to write to tmp file" , err .Error ())
646+ }
647+
648+ toolExecution := codacy.ToolExecution {
649+ Patterns : & []codacy.Pattern {{ID : ruleIDSecret }},
650+ Files : & []string {filepath .Base (f .Name ())},
651+ SourceDir : srcDir ,
652+ }
653+
654+ // A factory that only fails: reaching it at all would surface as an error from Run.
655+ underTest := codacyTrivy {runnerFactory : errorRunnerFactory {err : assert .AnError }}
656+
657+ // Act
658+ results , err := underTest .Run (context .Background (), toolExecution )
659+
660+ // Assert
661+ assert .NoError (t , err )
662+ assert .NotEmpty (t , results , "secret scanning still reports" )
663+
664+ sboms := lo .Filter (results , func (result codacy.Result , _ int ) bool {
665+ _ , isSBOM := result .(codacy.SBOM )
666+ return isSBOM
667+ })
668+ assert .Empty (t , sboms , "the SBOM is derived from the dependency scan, so there is none" )
669+ }
670+
671+ func TestScaScanningEnabled (t * testing.T ) {
672+ // Arrange
673+ type testData struct {
674+ name string
675+ patterns []codacy.Pattern
676+ expected bool
677+ }
678+
679+ tests := []testData {
680+ {name : "no patterns" , patterns : []codacy.Pattern {}, expected : false },
681+ {name : "only secret" , patterns : []codacy.Pattern {{ID : ruleIDSecret }}, expected : false },
682+ {name : "only unknown" , patterns : []codacy.Pattern {{ID : "unknown" }}, expected : false },
683+ {name : "a vulnerability severity" , patterns : []codacy.Pattern {{ID : ruleIDVulnerabilityMinor }}, expected : true },
684+ {name : "malicious packages" , patterns : []codacy.Pattern {{ID : ruleIDMaliciousPackages }}, expected : true },
685+ {
686+ name : "secret alongside a vulnerability severity" ,
687+ patterns : []codacy.Pattern {{ID : ruleIDSecret }, {ID : ruleIDVulnerabilityCritical }},
688+ expected : true ,
689+ },
690+ }
691+
692+ for _ , testData := range tests {
693+ t .Run (testData .name , func (t * testing.T ) {
694+ assert .Equal (t , testData .expected , scaScanningEnabled (testData .patterns ))
695+ })
696+ }
697+ }
698+
630699func TestRunSecretScanningNotEnabled (t * testing.T ) {
631700 toolExecution := codacy.ToolExecution {
632701 Patterns : & []codacy.Pattern {{ID : ruleIDVulnerabilityMedium }},
0 commit comments