github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/formatters/csv_test.go (about) 1 package formatters 2 3 import ( 4 "bytes" 5 "testing" 6 7 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 8 9 "github.com/khulnasoft-lab/defsec/pkg/severity" 10 11 "github.com/khulnasoft-lab/defsec/pkg/scan" 12 13 "github.com/khulnasoft-lab/defsec/pkg/providers" 14 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/dynamodb" 15 16 "github.com/stretchr/testify/assert" 17 18 "github.com/stretchr/testify/require" 19 ) 20 21 func Test_CSV(t *testing.T) { 22 want := `file,start_line,end_line,rule_id,severity,description,link,passed 23 test.test,123,123,aws-dynamodb-enable-at-rest-encryption,HIGH,Cluster encryption is not enabled.,,false 24 ` 25 buffer := bytes.NewBuffer([]byte{}) 26 formatter := New().AsCSV().WithWriter(buffer).Build() 27 var results scan.Results 28 results.Add("Cluster encryption is not enabled.", 29 dynamodb.ServerSideEncryption{ 30 Metadata: defsecTypes.NewTestMetadata(), 31 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 32 }) 33 results.SetRule(scan.Rule{Severity: severity.High, Provider: providers.AWSProvider, Service: "dynamodb", ShortCode: "enable-at-rest-encryption"}) 34 require.NoError(t, formatter.Output(results)) 35 assert.Equal(t, want, buffer.String()) 36 } 37 38 func Test_CSV_WithoutPassed(t *testing.T) { 39 want := `file,start_line,end_line,rule_id,severity,description,link,passed 40 test.test,123,123,aws-dynamodb-enable-at-rest-encryption,HIGH,Cluster encryption is not enabled.,,false 41 ` 42 buffer := bytes.NewBuffer([]byte{}) 43 formatter := New().AsCSV().WithWriter(buffer).Build() 44 var results scan.Results 45 results.Add("Cluster encryption is not enabled.", 46 dynamodb.ServerSideEncryption{ 47 Metadata: defsecTypes.NewTestMetadata(), 48 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 49 }) 50 results.AddPassed(defsecTypes.NewTestMetadata(), "Everything is fine.") 51 results.SetRule(scan.Rule{Severity: severity.High, Provider: providers.AWSProvider, Service: "dynamodb", ShortCode: "enable-at-rest-encryption"}) 52 require.NoError(t, formatter.Output(results)) 53 assert.Equal(t, want, buffer.String()) 54 } 55 56 func Test_CSV_WithPassed(t *testing.T) { 57 want := `file,start_line,end_line,rule_id,severity,description,link,passed 58 test.test,123,123,aws-dynamodb-enable-at-rest-encryption,HIGH,Cluster encryption is not enabled.,,false 59 test.test,123,123,aws-dynamodb-enable-at-rest-encryption,HIGH,Everything is fine.,,true 60 ` 61 buffer := bytes.NewBuffer([]byte{}) 62 formatter := New().AsCSV().WithWriter(buffer).WithIncludePassed(true).Build() 63 var results scan.Results 64 results.Add("Cluster encryption is not enabled.", 65 dynamodb.ServerSideEncryption{ 66 Metadata: defsecTypes.NewTestMetadata(), 67 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 68 }) 69 results.AddPassed(defsecTypes.NewTestMetadata(), "Everything is fine.") 70 results.SetRule(scan.Rule{Severity: severity.High, Provider: providers.AWSProvider, Service: "dynamodb", ShortCode: "enable-at-rest-encryption"}) 71 require.NoError(t, formatter.Output(results)) 72 assert.Equal(t, want, buffer.String()) 73 }