github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/apigateway/apiv2_test.go (about) 1 package apigateway 2 3 import ( 4 "testing" 5 6 v2 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/apigateway/v2" 7 8 "github.com/khulnasoft-lab/defsec/internal/adapters/terraform/tftestutil" 9 10 "github.com/khulnasoft-lab/defsec/test/testutil" 11 ) 12 13 func Test_adaptAPIsV2(t *testing.T) { 14 tests := []struct { 15 name string 16 terraform string 17 expected []v2.API 18 }{ 19 { 20 name: "defaults", 21 terraform: ` 22 resource "aws_apigatewayv2_api" "example" { 23 protocol_type = "HTTP" 24 } 25 `, 26 expected: []v2.API{ 27 { 28 Name: String(""), 29 ProtocolType: String("HTTP"), 30 }, 31 }, 32 }, 33 { 34 name: "full", 35 terraform: ` 36 resource "aws_apigatewayv2_api" "example" { 37 name = "terrasec" 38 protocol_type = "HTTP" 39 } 40 `, 41 expected: []v2.API{ 42 { 43 Name: String("terrasec"), 44 ProtocolType: String("HTTP"), 45 }, 46 }, 47 }, 48 } 49 50 for _, test := range tests { 51 t.Run(test.name, func(t *testing.T) { 52 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 53 adapted := adaptAPIsV2(modules) 54 testutil.AssertDefsecEqual(t, test.expected, adapted) 55 }) 56 } 57 } 58 59 func Test_adaptStageV2(t *testing.T) { 60 tests := []struct { 61 name string 62 terraform string 63 expected v2.Stage 64 }{ 65 { 66 name: "defaults", 67 terraform: ` 68 resource "aws_apigatewayv2_stage" "example" { 69 70 } 71 `, 72 expected: v2.Stage{ 73 Name: String(""), 74 AccessLogging: v2.AccessLogging{ 75 CloudwatchLogGroupARN: String(""), 76 }, 77 }, 78 }, 79 { 80 name: "basics", 81 terraform: ` 82 resource "aws_apigatewayv2_stage" "example" { 83 name = "terrasec" 84 access_log_settings { 85 destination_arn = "arn:123" 86 } 87 } 88 `, 89 expected: v2.Stage{ 90 Name: String("terrasec"), 91 AccessLogging: v2.AccessLogging{ 92 CloudwatchLogGroupARN: String("arn:123"), 93 }, 94 }, 95 }, 96 } 97 98 for _, test := range tests { 99 t.Run(test.name, func(t *testing.T) { 100 modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf") 101 adapted := adaptStageV2(modules.GetBlocks()[0]) 102 testutil.AssertDefsecEqual(t, test.expected, adapted) 103 }) 104 } 105 }