github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/efs/adapt_test.go (about)

     1  package efs
     2  
     3  import (
     4  	"testing"
     5  
     6  	defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types"
     7  
     8  	"github.com/khulnasoft-lab/defsec/pkg/providers/aws/efs"
     9  
    10  	"github.com/khulnasoft-lab/defsec/internal/adapters/terraform/tftestutil"
    11  
    12  	"github.com/khulnasoft-lab/defsec/test/testutil"
    13  	"github.com/stretchr/testify/assert"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func Test_adaptFileSystem(t *testing.T) {
    18  	tests := []struct {
    19  		name      string
    20  		terraform string
    21  		expected  efs.FileSystem
    22  	}{
    23  		{
    24  			name: "configured",
    25  			terraform: `
    26  			resource "aws_efs_file_system" "example" {
    27  				name       = "bar"
    28  				encrypted  = true
    29  				kms_key_id = "my_kms_key"
    30  			  }
    31  `,
    32  			expected: efs.FileSystem{
    33  				Metadata:  defsecTypes.NewTestMetadata(),
    34  				Encrypted: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()),
    35  			},
    36  		},
    37  		{
    38  			name: "defaults",
    39  			terraform: `
    40  			resource "aws_efs_file_system" "example" {
    41  			  }
    42  `,
    43  			expected: efs.FileSystem{
    44  				Metadata:  defsecTypes.NewTestMetadata(),
    45  				Encrypted: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()),
    46  			},
    47  		},
    48  	}
    49  
    50  	for _, test := range tests {
    51  		t.Run(test.name, func(t *testing.T) {
    52  			modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf")
    53  			adapted := adaptFileSystem(modules.GetBlocks()[0])
    54  			testutil.AssertDefsecEqual(t, test.expected, adapted)
    55  		})
    56  	}
    57  }
    58  
    59  func TestLines(t *testing.T) {
    60  	src := `
    61  	resource "aws_efs_file_system" "example" {
    62  		name       = "bar"
    63  		encrypted  = true
    64  		kms_key_id = "my_kms_key"
    65  	  }
    66  	`
    67  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    68  	adapted := Adapt(modules)
    69  
    70  	require.Len(t, adapted.FileSystems, 1)
    71  	fileSystem := adapted.FileSystems[0]
    72  
    73  	assert.Equal(t, 2, fileSystem.Metadata.Range().GetStartLine())
    74  	assert.Equal(t, 6, fileSystem.Metadata.Range().GetEndLine())
    75  
    76  	assert.Equal(t, 4, fileSystem.Encrypted.GetMetadata().Range().GetStartLine())
    77  	assert.Equal(t, 4, fileSystem.Encrypted.GetMetadata().Range().GetEndLine())
    78  }