github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/workspaces/adapt_test.go (about) 1 package workspaces 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/workspaces" 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_adaptWorkspace(t *testing.T) { 18 tests := []struct { 19 name string 20 terraform string 21 expected workspaces.WorkSpace 22 }{ 23 { 24 name: "configured", 25 terraform: ` 26 resource "aws_workspaces_workspace" "example" { 27 root_volume_encryption_enabled = true 28 user_volume_encryption_enabled = true 29 } 30 `, 31 expected: workspaces.WorkSpace{ 32 Metadata: defsecTypes.NewTestMetadata(), 33 RootVolume: workspaces.Volume{ 34 Metadata: defsecTypes.NewTestMetadata(), 35 Encryption: workspaces.Encryption{ 36 Metadata: defsecTypes.NewTestMetadata(), 37 Enabled: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 38 }, 39 }, 40 UserVolume: workspaces.Volume{ 41 Metadata: defsecTypes.NewTestMetadata(), 42 Encryption: workspaces.Encryption{ 43 Metadata: defsecTypes.NewTestMetadata(), 44 Enabled: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 45 }, 46 }, 47 }, 48 }, 49 { 50 name: "defaults", 51 terraform: ` 52 resource "aws_workspaces_workspace" "example" { 53 } 54 `, 55 expected: workspaces.WorkSpace{ 56 Metadata: defsecTypes.NewTestMetadata(), 57 RootVolume: workspaces.Volume{ 58 Metadata: defsecTypes.NewTestMetadata(), 59 Encryption: workspaces.Encryption{ 60 Metadata: defsecTypes.NewTestMetadata(), 61 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 62 }, 63 }, 64 UserVolume: workspaces.Volume{ 65 Metadata: defsecTypes.NewTestMetadata(), 66 Encryption: workspaces.Encryption{ 67 Metadata: defsecTypes.NewTestMetadata(), 68 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 69 }, 70 }, 71 }, 72 }, 73 } 74 75 for _, test := range tests { 76 t.Run(test.name, func(t *testing.T) { 77 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 78 adapted := adaptWorkspace(modules.GetBlocks()[0]) 79 testutil.AssertDefsecEqual(t, test.expected, adapted) 80 }) 81 } 82 } 83 84 func TestLines(t *testing.T) { 85 src := ` 86 resource "aws_workspaces_workspace" "example" { 87 root_volume_encryption_enabled = true 88 user_volume_encryption_enabled = true 89 }` 90 91 modules := tftestutil.CreateModulesFromSource(t, src, ".tf") 92 adapted := Adapt(modules) 93 94 require.Len(t, adapted.WorkSpaces, 1) 95 workspace := adapted.WorkSpaces[0] 96 97 assert.Equal(t, 2, workspace.Metadata.Range().GetStartLine()) 98 assert.Equal(t, 5, workspace.Metadata.Range().GetEndLine()) 99 100 assert.Equal(t, 3, workspace.RootVolume.Metadata.Range().GetStartLine()) 101 assert.Equal(t, 3, workspace.RootVolume.Metadata.Range().GetEndLine()) 102 103 assert.Equal(t, 3, workspace.RootVolume.Encryption.Metadata.Range().GetStartLine()) 104 assert.Equal(t, 3, workspace.RootVolume.Encryption.Metadata.Range().GetEndLine()) 105 106 assert.Equal(t, 4, workspace.UserVolume.Metadata.Range().GetStartLine()) 107 assert.Equal(t, 4, workspace.UserVolume.Metadata.Range().GetEndLine()) 108 109 assert.Equal(t, 4, workspace.UserVolume.Encryption.Metadata.Range().GetStartLine()) 110 assert.Equal(t, 4, workspace.UserVolume.Encryption.Metadata.Range().GetEndLine()) 111 }