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  }