github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/internal/adapters/terraform/azure/securitycenter/adapt_test.go (about) 1 package securitycenter 2 3 import ( 4 "testing" 5 6 defsecTypes "github.com/aquasecurity/defsec/pkg/types" 7 8 "github.com/aquasecurity/defsec/pkg/providers/azure/securitycenter" 9 10 "github.com/aquasecurity/trivy-iac/internal/adapters/terraform/tftestutil" 11 12 "github.com/aquasecurity/trivy-iac/test/testutil" 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func Test_adaptContact(t *testing.T) { 18 tests := []struct { 19 name string 20 terraform string 21 expected securitycenter.Contact 22 }{ 23 { 24 name: "defined", 25 terraform: ` 26 resource "azurerm_security_center_contact" "example" { 27 phone = "+1-555-555-5555" 28 alert_notifications = true 29 } 30 `, 31 expected: securitycenter.Contact{ 32 Metadata: defsecTypes.NewTestMetadata(), 33 EnableAlertNotifications: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 34 Phone: defsecTypes.String("+1-555-555-5555", defsecTypes.NewTestMetadata()), 35 }, 36 }, 37 { 38 name: "defaults", 39 terraform: ` 40 resource "azurerm_security_center_contact" "example" { 41 } 42 `, 43 expected: securitycenter.Contact{ 44 Metadata: defsecTypes.NewTestMetadata(), 45 EnableAlertNotifications: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 46 Phone: defsecTypes.String("", defsecTypes.NewTestMetadata()), 47 }, 48 }, 49 } 50 51 for _, test := range tests { 52 t.Run(test.name, func(t *testing.T) { 53 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 54 adapted := adaptContact(modules.GetBlocks()[0]) 55 testutil.AssertDefsecEqual(t, test.expected, adapted) 56 }) 57 } 58 } 59 60 func Test_adaptSubscription(t *testing.T) { 61 tests := []struct { 62 name string 63 terraform string 64 expected securitycenter.SubscriptionPricing 65 }{ 66 { 67 name: "free tier", 68 terraform: ` 69 resource "azurerm_security_center_subscription_pricing" "example" { 70 tier = "Free" 71 }`, 72 expected: securitycenter.SubscriptionPricing{ 73 Metadata: defsecTypes.NewTestMetadata(), 74 Tier: defsecTypes.String("Free", defsecTypes.NewTestMetadata()), 75 }, 76 }, 77 { 78 name: "default - free tier", 79 terraform: ` 80 resource "azurerm_security_center_subscription_pricing" "example" { 81 }`, 82 expected: securitycenter.SubscriptionPricing{ 83 Metadata: defsecTypes.NewTestMetadata(), 84 Tier: defsecTypes.String("Free", defsecTypes.NewTestMetadata()), 85 }, 86 }, 87 { 88 name: "standard tier", 89 terraform: ` 90 resource "azurerm_security_center_subscription_pricing" "example" { 91 tier = "Standard" 92 }`, 93 expected: securitycenter.SubscriptionPricing{ 94 Metadata: defsecTypes.NewTestMetadata(), 95 Tier: defsecTypes.String("Standard", defsecTypes.NewTestMetadata()), 96 }, 97 }, 98 } 99 100 for _, test := range tests { 101 t.Run(test.name, func(t *testing.T) { 102 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 103 adapted := adaptSubscription(modules.GetBlocks()[0]) 104 testutil.AssertDefsecEqual(t, test.expected, adapted) 105 }) 106 } 107 } 108 109 func TestLines(t *testing.T) { 110 src := ` 111 resource "azurerm_security_center_contact" "example" { 112 phone = "+1-555-555-5555" 113 alert_notifications = true 114 } 115 116 resource "azurerm_security_center_subscription_pricing" "example" { 117 tier = "Standard" 118 }` 119 120 modules := tftestutil.CreateModulesFromSource(t, src, ".tf") 121 adapted := Adapt(modules) 122 123 require.Len(t, adapted.Contacts, 1) 124 require.Len(t, adapted.Subscriptions, 1) 125 126 contact := adapted.Contacts[0] 127 sub := adapted.Subscriptions[0] 128 129 assert.Equal(t, 3, contact.Phone.GetMetadata().Range().GetStartLine()) 130 assert.Equal(t, 3, contact.Phone.GetMetadata().Range().GetEndLine()) 131 132 assert.Equal(t, 4, contact.EnableAlertNotifications.GetMetadata().Range().GetStartLine()) 133 assert.Equal(t, 4, contact.EnableAlertNotifications.GetMetadata().Range().GetEndLine()) 134 135 assert.Equal(t, 8, sub.Tier.GetMetadata().Range().GetStartLine()) 136 assert.Equal(t, 8, sub.Tier.GetMetadata().Range().GetEndLine()) 137 }