github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/kinesis/adapt_test.go (about) 1 package kinesis 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/kinesis" 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_adaptStream(t *testing.T) { 18 tests := []struct { 19 name string 20 terraform string 21 expected kinesis.Stream 22 }{ 23 { 24 name: "configured", 25 terraform: ` 26 resource "aws_kinesis_stream" "example" { 27 encryption_type = "KMS" 28 kms_key_id = "my/special/key" 29 } 30 `, 31 expected: kinesis.Stream{ 32 Metadata: defsecTypes.NewTestMetadata(), 33 Encryption: kinesis.Encryption{ 34 Metadata: defsecTypes.NewTestMetadata(), 35 Type: defsecTypes.String("KMS", defsecTypes.NewTestMetadata()), 36 KMSKeyID: defsecTypes.String("my/special/key", defsecTypes.NewTestMetadata()), 37 }, 38 }, 39 }, 40 { 41 name: "defaults", 42 terraform: ` 43 resource "aws_kinesis_stream" "example" { 44 } 45 `, 46 expected: kinesis.Stream{ 47 Metadata: defsecTypes.NewTestMetadata(), 48 Encryption: kinesis.Encryption{ 49 Metadata: defsecTypes.NewTestMetadata(), 50 Type: defsecTypes.String("NONE", defsecTypes.NewTestMetadata()), 51 KMSKeyID: defsecTypes.String("", defsecTypes.NewTestMetadata()), 52 }, 53 }, 54 }, 55 } 56 57 for _, test := range tests { 58 t.Run(test.name, func(t *testing.T) { 59 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 60 adapted := adaptStream(modules.GetBlocks()[0]) 61 testutil.AssertDefsecEqual(t, test.expected, adapted) 62 }) 63 } 64 } 65 66 func TestLines(t *testing.T) { 67 src := ` 68 resource "aws_kinesis_stream" "example" { 69 encryption_type = "KMS" 70 kms_key_id = "my/special/key" 71 }` 72 73 modules := tftestutil.CreateModulesFromSource(t, src, ".tf") 74 adapted := Adapt(modules) 75 76 require.Len(t, adapted.Streams, 1) 77 stream := adapted.Streams[0] 78 79 assert.Equal(t, 2, stream.Metadata.Range().GetStartLine()) 80 assert.Equal(t, 5, stream.Metadata.Range().GetEndLine()) 81 82 assert.Equal(t, 3, stream.Encryption.Type.GetMetadata().Range().GetStartLine()) 83 assert.Equal(t, 3, stream.Encryption.Type.GetMetadata().Range().GetEndLine()) 84 85 assert.Equal(t, 4, stream.Encryption.KMSKeyID.GetMetadata().Range().GetStartLine()) 86 assert.Equal(t, 4, stream.Encryption.KMSKeyID.GetMetadata().Range().GetEndLine()) 87 }