github.com/crowdsecurity/crowdsec@v1.6.1/cmd/crowdsec-cli/hubtest_table.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  
     7  	"github.com/aquasecurity/table"
     8  
     9  	"github.com/crowdsecurity/crowdsec/pkg/emoji"
    10  	"github.com/crowdsecurity/crowdsec/pkg/hubtest"
    11  )
    12  
    13  func hubTestResultTable(out io.Writer, testResult map[string]bool) {
    14  	t := newLightTable(out)
    15  	t.SetHeaders("Test", "Result")
    16  	t.SetHeaderAlignment(table.AlignLeft)
    17  	t.SetAlignment(table.AlignLeft)
    18  
    19  	for testName, success := range testResult {
    20  		status := emoji.CheckMarkButton
    21  		if !success {
    22  			status = emoji.CrossMark
    23  		}
    24  
    25  		t.AddRow(testName, status)
    26  	}
    27  
    28  	t.Render()
    29  }
    30  
    31  func hubTestListTable(out io.Writer, tests []*hubtest.HubTestItem) {
    32  	t := newLightTable(out)
    33  	t.SetHeaders("Name", "Path")
    34  	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft)
    35  	t.SetAlignment(table.AlignLeft, table.AlignLeft)
    36  
    37  	for _, test := range tests {
    38  		t.AddRow(test.Name, test.Path)
    39  	}
    40  
    41  	t.Render()
    42  }
    43  
    44  func hubTestParserCoverageTable(out io.Writer, coverage []hubtest.Coverage) {
    45  	t := newLightTable(out)
    46  	t.SetHeaders("Parser", "Status", "Number of tests")
    47  	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    48  	t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    49  
    50  	parserTested := 0
    51  
    52  	for _, test := range coverage {
    53  		status := emoji.RedCircle
    54  		if test.TestsCount > 0 {
    55  			status = emoji.GreenCircle
    56  			parserTested++
    57  		}
    58  
    59  		t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
    60  	}
    61  
    62  	t.Render()
    63  }
    64  
    65  func hubTestAppsecRuleCoverageTable(out io.Writer, coverage []hubtest.Coverage) {
    66  	t := newLightTable(out)
    67  	t.SetHeaders("Appsec Rule", "Status", "Number of tests")
    68  	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    69  	t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    70  
    71  	parserTested := 0
    72  
    73  	for _, test := range coverage {
    74  		status := emoji.RedCircle
    75  		if test.TestsCount > 0 {
    76  			status = emoji.GreenCircle
    77  			parserTested++
    78  		}
    79  
    80  		t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
    81  	}
    82  
    83  	t.Render()
    84  }
    85  
    86  func hubTestScenarioCoverageTable(out io.Writer, coverage []hubtest.Coverage) {
    87  	t := newLightTable(out)
    88  	t.SetHeaders("Scenario", "Status", "Number of tests")
    89  	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    90  	t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
    91  
    92  	parserTested := 0
    93  
    94  	for _, test := range coverage {
    95  		status := emoji.RedCircle
    96  		if test.TestsCount > 0 {
    97  			status = emoji.GreenCircle
    98  			parserTested++
    99  		}
   100  
   101  		t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
   102  	}
   103  
   104  	t.Render()
   105  }