github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/formatters/json_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 "github.com/stretchr/testify/require" 18 ) 19 20 func Test_JSON(t *testing.T) { 21 want := `{ 22 "results": [ 23 { 24 "rule_id": "AVD-AA-9999", 25 "long_id": "aws-dynamodb-enable-at-rest-encryption", 26 "rule_description": "summary", 27 "rule_provider": "aws", 28 "rule_service": "dynamodb", 29 "impact": "impact", 30 "resolution": "resolution", 31 "links": [ 32 "https://google.com" 33 ], 34 "description": "Cluster encryption is not enabled.", 35 "severity": "HIGH", 36 "warning": false, 37 "status": 0, 38 "resource": "", 39 "location": { 40 "filename": "test.test", 41 "start_line": 123, 42 "end_line": 123 43 } 44 } 45 ] 46 } 47 ` 48 buffer := bytes.NewBuffer([]byte{}) 49 formatter := New().AsJSON().WithWriter(buffer).Build() 50 var results scan.Results 51 results.Add("Cluster encryption is not enabled.", 52 dynamodb.ServerSideEncryption{ 53 Metadata: defsecTypes.NewTestMetadata(), 54 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 55 }) 56 results.SetRule(scan.Rule{ 57 AVDID: "AVD-AA-9999", 58 ShortCode: "enable-at-rest-encryption", 59 Summary: "summary", 60 Explanation: "explanation", 61 Impact: "impact", 62 Resolution: "resolution", 63 Provider: providers.AWSProvider, 64 Service: "dynamodb", 65 Links: []string{ 66 "https://google.com", 67 }, 68 Severity: severity.High, 69 }) 70 require.NoError(t, formatter.Output(results)) 71 assert.Equal(t, want, buffer.String()) 72 } 73 74 func Test_JSONWithEmptyResults(t *testing.T) { 75 want := `{ 76 "results": [] 77 } 78 ` 79 buffer := bytes.NewBuffer([]byte{}) 80 formatter := New().AsJSON().WithWriter(buffer).Build() 81 var results scan.Results 82 require.NoError(t, formatter.Output(results)) 83 assert.Equal(t, want, buffer.String()) 84 }