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  }