github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/formatters/junit_test.go (about) 1 package formatters 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 "path/filepath" 8 "testing" 9 10 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 11 12 "github.com/khulnasoft-lab/defsec/pkg/severity" 13 14 "github.com/khulnasoft-lab/defsec/pkg/scan" 15 16 "github.com/khulnasoft-lab/defsec/pkg/providers" 17 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/dynamodb" 18 19 "github.com/stretchr/testify/assert" 20 "github.com/stretchr/testify/require" 21 ) 22 23 var ( 24 jUnitScanRule = scan.Rule{ 25 AVDID: "AVD-AA-9999", 26 ShortCode: "enable-at-rest-encryption", 27 Summary: "summary", 28 Explanation: "explanation", 29 Impact: "impact", 30 Resolution: "resolution", 31 Provider: providers.AWSProvider, 32 Service: "dynamodb", 33 Links: []string{ 34 "https://google.com", 35 }, 36 Severity: severity.High, 37 } 38 ) 39 40 func Test_JUnit(t *testing.T) { 41 want := fmt.Sprintf(`<?xml version="1.0" encoding="UTF-8"?> 42 <testsuite name="%s" failures="1" tests="1"> 43 <testcase classname="test.test" name="[aws-dynamodb-enable-at-rest-encryption][HIGH] - Cluster encryption is not enabled." time="0"> 44 <failure message="Cluster encryption is not enabled." type="">test.test:123



See https://google.com</failure> 45 </testcase> 46 </testsuite>`, filepath.Base(os.Args[0])) 47 buffer := bytes.NewBuffer([]byte{}) 48 formatter := New().AsJUnit().WithWriter(buffer).Build() 49 var results scan.Results 50 results.Add("Cluster encryption is not enabled.", 51 dynamodb.ServerSideEncryption{ 52 Metadata: defsecTypes.NewTestMetadata(), 53 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 54 }) 55 results.SetRule(jUnitScanRule) 56 require.NoError(t, formatter.Output(results)) 57 assert.Equal(t, want, buffer.String()) 58 } 59 60 func Test_JUnit_skipped(t *testing.T) { 61 want := fmt.Sprintf(`<?xml version="1.0" encoding="UTF-8"?> 62 <testsuite name="%s" failures="0" skipped="1" tests="1"> 63 <testcase classname="test.test" name="[aws-dynamodb-enable-at-rest-encryption][HIGH] - Cluster encryption is not enabled." time="0"> 64 <skipped message="Cluster encryption is not enabled."></skipped> 65 </testcase> 66 </testsuite>`, filepath.Base(os.Args[0])) 67 buffer := bytes.NewBuffer([]byte{}) 68 formatter := New().AsJUnit(). 69 WithWriter(buffer). 70 WithIncludeIgnored(true). 71 Build() 72 var results scan.Results 73 results.AddIgnored( 74 dynamodb.ServerSideEncryption{ 75 Metadata: defsecTypes.NewTestMetadata(), 76 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 77 }, 78 "Cluster encryption is not enabled.", 79 ) 80 results.SetRule(jUnitScanRule) 81 require.NoError(t, formatter.Output(results)) 82 assert.Equal(t, want, buffer.String()) 83 } 84 85 func Test_JUnit_passed(t *testing.T) { 86 want := fmt.Sprintf(`<?xml version="1.0" encoding="UTF-8"?> 87 <testsuite name="%s" failures="0" tests="1"> 88 <testcase classname="test.test" name="[aws-dynamodb-enable-at-rest-encryption][HIGH] - Cluster encryption is not enabled." time="0"></testcase> 89 </testsuite>`, filepath.Base(os.Args[0])) 90 buffer := bytes.NewBuffer([]byte{}) 91 formatter := New().AsJUnit(). 92 WithWriter(buffer). 93 WithIncludePassed(true). 94 Build() 95 var results scan.Results 96 results.AddPassed( 97 dynamodb.ServerSideEncryption{ 98 Metadata: defsecTypes.NewTestMetadata(), 99 Enabled: defsecTypes.Bool(false, defsecTypes.NewTestMetadata()), 100 }, 101 "Cluster encryption is not enabled.", 102 ) 103 results.SetRule(jUnitScanRule) 104 require.NoError(t, formatter.Output(results)) 105 assert.Equal(t, want, buffer.String()) 106 }