github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/azure/monitor/adapt_test.go (about) 1 package monitor 2 3 import ( 4 "testing" 5 6 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 7 8 "github.com/khulnasoft-lab/defsec/pkg/providers/azure/monitor" 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_adaptLogProfile(t *testing.T) { 18 tests := []struct { 19 name string 20 terraform string 21 expected monitor.LogProfile 22 }{ 23 { 24 name: "defined", 25 terraform: ` 26 resource "azurerm_monitor_log_profile" "example" { 27 categories = [ 28 "Action", 29 "Delete", 30 "Write", 31 ] 32 33 retention_policy { 34 enabled = true 35 days = 365 36 } 37 38 locations = [ 39 "eastus", 40 "eastus2", 41 "southcentralus" 42 ] 43 } 44 `, 45 expected: monitor.LogProfile{ 46 Metadata: defsecTypes.NewTestMetadata(), 47 Categories: []defsecTypes.StringValue{ 48 defsecTypes.String("Action", defsecTypes.NewTestMetadata()), 49 defsecTypes.String("Delete", defsecTypes.NewTestMetadata()), 50 defsecTypes.String("Write", defsecTypes.NewTestMetadata()), 51 }, 52 RetentionPolicy: monitor.RetentionPolicy{ 53 Metadata: defsecTypes.NewTestMetadata(), 54 Enabled: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 55 Days: defsecTypes.Int(365, defsecTypes.NewTestMetadata()), 56 }, 57 Locations: []defsecTypes.StringValue{ 58 defsecTypes.String("eastus", defsecTypes.NewTestMetadata()), 59 defsecTypes.String("eastus2", defsecTypes.NewTestMetadata()), 60 defsecTypes.String("southcentralus", defsecTypes.NewTestMetadata()), 61 }, 62 }, 63 }, 64 { 65 name: "default", 66 terraform: ` 67 resource "azurerm_monitor_log_profile" "example" { 68 } 69 `, 70 expected: monitor.LogProfile{ 71 Metadata: defsecTypes.NewTestMetadata(), 72 RetentionPolicy: monitor.RetentionPolicy{ 73 Metadata: defsecTypes.NewTestMetadata(), 74 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 75 Days: defsecTypes.Int(0, defsecTypes.NewTestMetadata()), 76 }, 77 }, 78 }, 79 } 80 81 for _, test := range tests { 82 t.Run(test.name, func(t *testing.T) { 83 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 84 adapted := adaptLogProfile(modules.GetBlocks()[0]) 85 testutil.AssertDefsecEqual(t, test.expected, adapted) 86 }) 87 } 88 } 89 90 func TestLines(t *testing.T) { 91 src := ` 92 resource "azurerm_monitor_log_profile" "example" { 93 categories = [ 94 "Action", 95 "Delete", 96 "Write", 97 ] 98 99 retention_policy { 100 enabled = true 101 days = 365 102 } 103 104 locations = [ 105 "eastus", 106 "eastus2", 107 "southcentralus" 108 ] 109 }` 110 111 modules := tftestutil.CreateModulesFromSource(t, src, ".tf") 112 adapted := Adapt(modules) 113 114 require.Len(t, adapted.LogProfiles, 1) 115 logProfile := adapted.LogProfiles[0] 116 117 assert.Equal(t, 3, logProfile.Categories[0].GetMetadata().Range().GetStartLine()) 118 assert.Equal(t, 7, logProfile.Categories[0].GetMetadata().Range().GetEndLine()) 119 120 assert.Equal(t, 10, logProfile.RetentionPolicy.Enabled.GetMetadata().Range().GetStartLine()) 121 assert.Equal(t, 10, logProfile.RetentionPolicy.Enabled.GetMetadata().Range().GetEndLine()) 122 123 assert.Equal(t, 11, logProfile.RetentionPolicy.Days.GetMetadata().Range().GetStartLine()) 124 assert.Equal(t, 11, logProfile.RetentionPolicy.Days.GetMetadata().Range().GetEndLine()) 125 126 assert.Equal(t, 14, logProfile.Locations[0].GetMetadata().Range().GetStartLine()) 127 assert.Equal(t, 18, logProfile.Locations[0].GetMetadata().Range().GetEndLine()) 128 }