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  }