github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/rego/metadata_test.go (about)

     1  package rego
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func Test_getEngineMetadata(t *testing.T) {
    10  	inputSchema := map[string]interface{}{
    11  		"terraform": map[string]interface{}{
    12  			"good_examples": `resource "aws_cloudtrail" "good_example" {
    13     is_multi_region_trail = true
    14   
    15     event_selector {
    16       read_write_type           = "All"
    17       include_management_events = true
    18   
    19       data_resource {
    20         type = "AWS::S3::Object"
    21         values = ["${data.aws_s3_bucket.important-bucket.arn}/"]
    22       }
    23     }
    24   }`,
    25  		},
    26  		"cloud_formation": map[string]interface{}{"good_examples": `---
    27  Resources:
    28    GoodExample:
    29      Type: AWS::CloudTrail::Trail
    30      Properties:
    31        IsLogging: true
    32        IsMultiRegionTrail: true     
    33        S3BucketName: "CloudtrailBucket"
    34        S3KeyPrefix: "/trailing"
    35        TrailName: "Cloudtrail"`,
    36  		}}
    37  
    38  	var testCases = []struct {
    39  		schema string
    40  		want   string
    41  	}{
    42  		{
    43  			schema: "terraform",
    44  			want: `resource "aws_cloudtrail" "good_example" {
    45     is_multi_region_trail = true
    46   
    47     event_selector {
    48       read_write_type           = "All"
    49       include_management_events = true
    50   
    51       data_resource {
    52         type = "AWS::S3::Object"
    53         values = ["${data.aws_s3_bucket.important-bucket.arn}/"]
    54       }
    55     }
    56   }`,
    57  		},
    58  		{schema: "cloud_formation",
    59  			want: `---
    60  Resources:
    61    GoodExample:
    62      Type: AWS::CloudTrail::Trail
    63      Properties:
    64        IsLogging: true
    65        IsMultiRegionTrail: true     
    66        S3BucketName: "CloudtrailBucket"
    67        S3KeyPrefix: "/trailing"
    68        TrailName: "Cloudtrail"`},
    69  	}
    70  
    71  	for _, tc := range testCases {
    72  		t.Run(tc.schema, func(t *testing.T) {
    73  			var m MetadataRetriever
    74  			em, err := m.getEngineMetadata(tc.schema, inputSchema)
    75  			assert.NoError(t, err)
    76  			assert.Equal(t, tc.want, em.GoodExamples[0])
    77  		})
    78  	}
    79  }