github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/k8s/report/summary_test.go (about) 1 package report 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/devseccon/trivy/pkg/types" 10 ) 11 12 func TestReport_ColumnHeading(t *testing.T) { 13 allScanners := types.Scanners{ 14 types.VulnerabilityScanner, 15 types.MisconfigScanner, 16 types.SecretScanner, 17 types.RBACScanner, 18 } 19 20 tests := []struct { 21 name string 22 scanners types.Scanners 23 components []string 24 availableColumns []string 25 want []string 26 }{ 27 { 28 name: "filter workload columns", 29 scanners: allScanners, 30 availableColumns: WorkloadColumns(), 31 components: []string{ 32 workloadComponent, 33 infraComponent, 34 }, 35 want: []string{ 36 NamespaceColumn, 37 ResourceColumn, 38 VulnerabilitiesColumn, 39 MisconfigurationsColumn, 40 SecretsColumn, 41 }, 42 }, 43 { 44 name: "filter rbac columns", 45 scanners: allScanners, 46 components: []string{}, 47 availableColumns: RoleColumns(), 48 want: []string{ 49 NamespaceColumn, 50 ResourceColumn, 51 RbacAssessmentColumn, 52 }, 53 }, 54 { 55 name: "filter infra columns", 56 scanners: allScanners, 57 components: []string{ 58 workloadComponent, 59 infraComponent, 60 }, 61 availableColumns: InfraColumns(), 62 want: []string{ 63 NamespaceColumn, 64 ResourceColumn, 65 InfraAssessmentColumn, 66 }, 67 }, 68 { 69 name: "config column only", 70 scanners: types.Scanners{types.MisconfigScanner}, 71 components: []string{ 72 workloadComponent, 73 infraComponent, 74 }, 75 availableColumns: WorkloadColumns(), 76 want: []string{ 77 NamespaceColumn, 78 ResourceColumn, 79 MisconfigurationsColumn, 80 }, 81 }, 82 { 83 name: "secret column only", 84 scanners: types.Scanners{types.SecretScanner}, 85 components: []string{}, 86 availableColumns: WorkloadColumns(), 87 want: []string{ 88 NamespaceColumn, 89 ResourceColumn, 90 SecretsColumn, 91 }, 92 }, 93 { 94 name: "vuln column only", 95 scanners: types.Scanners{types.VulnerabilityScanner}, 96 components: []string{}, 97 availableColumns: WorkloadColumns(), 98 want: []string{ 99 NamespaceColumn, 100 ResourceColumn, 101 VulnerabilitiesColumn, 102 }, 103 }, 104 } 105 106 for _, tt := range tests { 107 t.Run(tt.name, func(t *testing.T) { 108 column := ColumnHeading(tt.scanners, tt.components, tt.availableColumns) 109 if !assert.Equal(t, column, tt.want) { 110 t.Error(fmt.Errorf("TestReport_ColumnHeading want %v got %v", tt.want, column)) 111 } 112 }) 113 } 114 }