github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/terraform/parser/load_vars_test.go (about)

     1  package parser
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/khulnasoft-lab/defsec/test/testutil"
     7  
     8  	"github.com/zclconf/go-cty/cty"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func Test_TFVarsFile(t *testing.T) {
    15  	t.Run("tfvars file", func(t *testing.T) {
    16  		fs := testutil.CreateFS(t, map[string]string{
    17  			"test.tfvars": `instance_type = "t2.large"`,
    18  		})
    19  
    20  		vars, err := loadTFVars(fs, []string{"test.tfvars"})
    21  		require.NoError(t, err)
    22  		assert.Equal(t, "t2.large", vars["instance_type"].AsString())
    23  	})
    24  
    25  	t.Run("tfvars json file", func(t *testing.T) {
    26  		fs := testutil.CreateFS(t, map[string]string{
    27  			"test.tfvars.json": `{
    28    "variable": {
    29      "foo": {
    30        "default": "bar"
    31      },
    32      "baz": "qux"
    33    },
    34    "foo2": true,
    35    "foo3": 3
    36  }`,
    37  		})
    38  
    39  		vars, err := loadTFVars(fs, []string{"test.tfvars.json"})
    40  		require.NoError(t, err)
    41  		assert.Equal(t, "bar", vars["variable"].GetAttr("foo").GetAttr("default").AsString())
    42  		assert.Equal(t, "qux", vars["variable"].GetAttr("baz").AsString())
    43  		assert.Equal(t, true, vars["foo2"].True())
    44  		assert.Equal(t, true, vars["foo3"].Equals(cty.NumberIntVal(3)).True())
    45  	})
    46  }