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