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