github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/test/setup_test.go (about) 1 package test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/aquasecurity/defsec/pkg/scan" 8 "github.com/aquasecurity/defsec/pkg/scanners/options" 9 "github.com/aquasecurity/defsec/pkg/terraform" 10 "github.com/stretchr/testify/require" 11 12 tfScanner "github.com/aquasecurity/trivy-iac/pkg/scanners/terraform" 13 "github.com/aquasecurity/trivy-iac/pkg/scanners/terraform/parser" 14 "github.com/aquasecurity/trivy-iac/test/testutil" 15 ) 16 17 func createModulesFromSource(t *testing.T, source string, ext string) terraform.Modules { 18 fs := testutil.CreateFS(t, map[string]string{ 19 "source" + ext: source, 20 }) 21 22 p := parser.New(fs, "", parser.OptionStopOnHCLError(true)) 23 if err := p.ParseFS(context.TODO(), "."); err != nil { 24 t.Fatal(err) 25 } 26 modules, _, err := p.EvaluateAll(context.TODO()) 27 if err != nil { 28 t.Fatalf("parse error: %s", err) 29 } 30 return modules 31 } 32 33 func scanHCLWithWorkspace(t *testing.T, source string, workspace string) scan.Results { 34 return scanHCL(t, source, tfScanner.ScannerWithWorkspaceName(workspace)) 35 } 36 37 func scanHCL(t *testing.T, source string, opts ...options.ScannerOption) scan.Results { 38 39 fs := testutil.CreateFS(t, map[string]string{ 40 "main.tf": source, 41 }) 42 43 localScanner := tfScanner.New(append(opts, options.ScannerWithEmbeddedPolicies(false))...) 44 results, err := localScanner.ScanFS(context.TODO(), fs, ".") 45 require.NoError(t, err) 46 return results 47 } 48 49 func scanJSON(t *testing.T, source string) scan.Results { 50 51 fs := testutil.CreateFS(t, map[string]string{ 52 "main.tf.json": source, 53 }) 54 55 s := tfScanner.New(options.ScannerWithEmbeddedPolicies(true), options.ScannerWithEmbeddedLibraries(true)) 56 results, _, err := s.ScanFSWithMetrics(context.TODO(), fs, ".") 57 require.NoError(t, err) 58 return results 59 }