github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/formatters/checkstyle_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  
    19  func TestOutputCheckStyle(t *testing.T) {
    20  	want := "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<checkstyle version=\"5.0\">\n\t<file name=\"test.test\">\n\t\t<error source=\"aws-dynamodb-enable-at-rest-encryption\" line=\"123\" column=\"0\" severity=\"error\" message=\"Cluster encryption is not enabled.\" link=\"\"></error>\n\t</file>\n</checkstyle>"
    21  	wantErr := error(nil)
    22  
    23  	results := scan.Results{}
    24  	results.Add("Cluster encryption is not enabled.",
    25  		dynamodb.ServerSideEncryption{
    26  			Metadata: defsecTypes.NewTestMetadata(),
    27  			Enabled:  defsecTypes.Bool(false, defsecTypes.NewTestMetadata()),
    28  		})
    29  	results.SetRule(scan.Rule{Severity: severity.High, Provider: providers.AWSProvider, Service: "dynamodb", ShortCode: "enable-at-rest-encryption"})
    30  
    31  	var buf bytes.Buffer
    32  	factory := New().AsCheckStyle().WithWriter(&buf).Build()
    33  
    34  	err := factory.Output(results)
    35  
    36  	assert.Equal(t, wantErr, err)
    37  	assert.Equal(t, want, buf.String())
    38  
    39  }
    40  
    41  func TestConvertSeverity(t *testing.T) {
    42  	type test struct {
    43  		severity severity.Severity
    44  		want     string
    45  	}
    46  
    47  	tests := []test{
    48  		{severity: severity.Low, want: "info"},
    49  		{severity: severity.Medium, want: "warning"},
    50  		{severity: severity.High, want: "error"},
    51  		{severity: severity.Critical, want: "error"},
    52  		{severity: severity.None, want: "error"},
    53  	}
    54  
    55  	for _, tc := range tests {
    56  		got := convertSeverity(tc.severity)
    57  		assert.Equal(t, tc.want, got)
    58  	}
    59  }