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  }