github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/digitalocean/spaces/adapt_test.go (about) 1 package spaces 2 3 import ( 4 "testing" 5 6 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 7 8 "github.com/khulnasoft-lab/defsec/pkg/providers/digitalocean/spaces" 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_adaptBuckets(t *testing.T) { 18 tests := []struct { 19 name string 20 terraform string 21 expected []spaces.Bucket 22 }{ 23 { 24 name: "basic", 25 terraform: ` 26 resource "digitalocean_spaces_bucket" "example" { 27 name = "public_space" 28 region = "nyc3" 29 acl = "private" 30 31 force_destroy = true 32 33 versioning { 34 enabled = true 35 } 36 } 37 38 resource "digitalocean_spaces_bucket_object" "index" { 39 bucket = digitalocean_spaces_bucket.example.name 40 acl = "private" 41 } 42 `, 43 expected: []spaces.Bucket{ 44 { 45 Metadata: defsecTypes.NewTestMetadata(), 46 Name: defsecTypes.String("public_space", defsecTypes.NewTestMetadata()), 47 Objects: []spaces.Object{ 48 { 49 Metadata: defsecTypes.NewTestMetadata(), 50 ACL: defsecTypes.String("private", defsecTypes.NewTestMetadata()), 51 }, 52 }, 53 ACL: defsecTypes.String("private", defsecTypes.NewTestMetadata()), 54 ForceDestroy: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 55 Versioning: spaces.Versioning{ 56 Metadata: defsecTypes.NewTestMetadata(), 57 Enabled: defsecTypes.Bool(true, defsecTypes.NewTestMetadata()), 58 }, 59 }, 60 }, 61 }, 62 { 63 name: "defaults", 64 terraform: ` 65 resource "digitalocean_spaces_bucket" "example" { 66 } 67 68 `, 69 expected: []spaces.Bucket{ 70 { 71 Metadata: defsecTypes.NewTestMetadata(), 72 Name: defsecTypes.String("", defsecTypes.NewTestMetadata()), 73 Objects: nil, 74 ACL: defsecTypes.String("public-read", defsecTypes.NewTestMetadata()), 75 ForceDestroy: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 76 Versioning: spaces.Versioning{ 77 Metadata: defsecTypes.NewTestMetadata(), 78 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 79 }, 80 }, 81 }, 82 }, 83 } 84 85 for _, test := range tests { 86 t.Run(test.name, func(t *testing.T) { 87 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 88 adapted := adaptBuckets(modules) 89 testutil.AssertDefsecEqual(t, test.expected, adapted) 90 }) 91 } 92 } 93 94 func TestLines(t *testing.T) { 95 src := ` 96 resource "digitalocean_spaces_bucket" "example" { 97 name = "public_space" 98 region = "nyc3" 99 acl = "private" 100 101 force_destroy = true 102 103 versioning { 104 enabled = true 105 } 106 } 107 108 resource "digitalocean_spaces_bucket_object" "index" { 109 bucket = digitalocean_spaces_bucket.example.name 110 acl = "public-read" 111 } 112 ` 113 114 modules := tftestutil.CreateModulesFromSource(t, src, ".tf") 115 adapted := Adapt(modules) 116 117 require.Len(t, adapted.Buckets, 1) 118 bucket := adapted.Buckets[0] 119 120 assert.Equal(t, 2, bucket.Metadata.Range().GetStartLine()) 121 assert.Equal(t, 12, bucket.Metadata.Range().GetEndLine()) 122 123 assert.Equal(t, 3, bucket.Name.GetMetadata().Range().GetStartLine()) 124 assert.Equal(t, 3, bucket.Name.GetMetadata().Range().GetEndLine()) 125 126 assert.Equal(t, 5, bucket.ACL.GetMetadata().Range().GetStartLine()) 127 assert.Equal(t, 5, bucket.ACL.GetMetadata().Range().GetEndLine()) 128 129 assert.Equal(t, 7, bucket.ForceDestroy.GetMetadata().Range().GetStartLine()) 130 assert.Equal(t, 7, bucket.ForceDestroy.GetMetadata().Range().GetEndLine()) 131 132 assert.Equal(t, 9, bucket.Versioning.Metadata.Range().GetStartLine()) 133 assert.Equal(t, 11, bucket.Versioning.Metadata.Range().GetEndLine()) 134 135 assert.Equal(t, 10, bucket.Versioning.Enabled.GetMetadata().Range().GetStartLine()) 136 assert.Equal(t, 10, bucket.Versioning.Enabled.GetMetadata().Range().GetEndLine()) 137 138 assert.Equal(t, 14, bucket.Objects[0].Metadata.Range().GetStartLine()) 139 assert.Equal(t, 17, bucket.Objects[0].Metadata.Range().GetEndLine()) 140 141 assert.Equal(t, 16, bucket.Objects[0].ACL.GetMetadata().Range().GetStartLine()) 142 assert.Equal(t, 16, bucket.Objects[0].ACL.GetMetadata().Range().GetEndLine()) 143 144 }