mirror of
https://github.com/kubescape/kubescape.git
synced 2026-02-14 18:09:55 +00:00
Merge pull request #1537 from VaibhavMalik4187/printer-tests-continued
Addition of Tests for the PrettyPrinter Package
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
package prettyprinter
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestClusterScan_getNextSteps(t *testing.T) {
|
||||
clusterPrinter := &ClusterPrinter{}
|
||||
@@ -33,3 +39,96 @@ func TestClusterScan_getWorkloadScanCommand(t *testing.T) {
|
||||
t.Errorf("Expected $ kubescape scan workload kind/name --namespace ns, got %s", command)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewClusterPrinter(t *testing.T) {
|
||||
// Test case 1: Valid writer
|
||||
cp := NewClusterPrinter(os.Stdout)
|
||||
assert.NotNil(t, cp)
|
||||
assert.Equal(t, os.Stdout, cp.writer)
|
||||
assert.NotNil(t, cp.categoriesTablePrinter)
|
||||
|
||||
// Test case 2: Nil writer
|
||||
var writer *os.File
|
||||
cp = NewClusterPrinter(writer)
|
||||
assert.NotNil(t, cp)
|
||||
assert.Nil(t, cp.writer)
|
||||
assert.NotNil(t, cp.categoriesTablePrinter)
|
||||
}
|
||||
|
||||
func TestPrintNextSteps(t *testing.T) {
|
||||
// Create a temporary file to capture output
|
||||
f, err := os.CreateTemp("", "print-next-steps")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
cp := NewClusterPrinter(f)
|
||||
|
||||
// Redirect stderr to the temporary file
|
||||
oldStderr := os.Stderr
|
||||
defer func() {
|
||||
os.Stderr = oldStderr
|
||||
}()
|
||||
os.Stderr = f
|
||||
|
||||
// Print the score using the `Score` function
|
||||
cp.PrintNextSteps()
|
||||
|
||||
// Read the contents of the temporary file
|
||||
f.Seek(0, 0)
|
||||
got, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
want := "\nWhat now?\n─────────\n\n* Run one of the suggested commands to learn more about a failed control failure\n* Scan a workload with '$ kubescape scan workload' to see vulnerability information\n* Install Kubescape in your cluster for continuous monitoring and a full vulnerability report: https://kubescape.io/docs/install-operator/\n\n"
|
||||
|
||||
assert.Equal(t, want, string(got))
|
||||
}
|
||||
|
||||
func TestGetWorkloadScanCommand(t *testing.T) {
|
||||
cp := NewClusterPrinter(os.Stdout)
|
||||
assert.NotNil(t, cp)
|
||||
assert.Equal(t, os.Stdout, cp.writer)
|
||||
assert.NotNil(t, cp.categoriesTablePrinter)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
namespace string
|
||||
kind string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "Empty",
|
||||
namespace: "",
|
||||
kind: "",
|
||||
want: "$ kubescape scan workload /Empty --namespace ",
|
||||
},
|
||||
{
|
||||
name: "Empty Namespace",
|
||||
namespace: "",
|
||||
kind: "Kind",
|
||||
want: "$ kubescape scan workload Kind/Empty Namespace --namespace ",
|
||||
},
|
||||
{
|
||||
name: "Empty Kind",
|
||||
namespace: "Namespace",
|
||||
kind: "",
|
||||
want: "$ kubescape scan workload /Empty Kind --namespace Namespace",
|
||||
},
|
||||
{
|
||||
name: "Name",
|
||||
namespace: "Namespace",
|
||||
kind: "Kind",
|
||||
want: "$ kubescape scan workload Kind/Name --namespace Namespace",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := cp.getWorkloadScanCommand(tt.namespace, tt.kind, tt.name)
|
||||
assert.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package prettyprinter
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestNewSummaryPrinter(t *testing.T) {
|
||||
// Test case 1: Valid writer and verbose mode
|
||||
verbose := true
|
||||
printer := NewSummaryPrinter(os.Stdout, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Equal(t, os.Stdout, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.summaryTablePrinter)
|
||||
|
||||
// Test case 2: Valid writer and non-verbose mode
|
||||
verbose = false
|
||||
printer = NewSummaryPrinter(os.Stdout, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Equal(t, os.Stdout, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.summaryTablePrinter)
|
||||
|
||||
// Test case 3: Nil writer and verbose mode
|
||||
var writer *os.File
|
||||
verbose = true
|
||||
printer = NewSummaryPrinter(writer, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Nil(t, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.summaryTablePrinter)
|
||||
|
||||
// Test case 4: Nil writer and non-verbose mode
|
||||
verbose = false
|
||||
printer = NewSummaryPrinter(writer, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Nil(t, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.summaryTablePrinter)
|
||||
}
|
||||
|
||||
func TestGetVerboseMode(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
printer *SummaryPrinter
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
name: "Verbose mode on",
|
||||
printer: &SummaryPrinter{
|
||||
writer: os.Stdout,
|
||||
verboseMode: true,
|
||||
},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "Verbose mode off",
|
||||
printer: &SummaryPrinter{
|
||||
writer: os.Stdout,
|
||||
verboseMode: false,
|
||||
},
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
assert.Equal(t, tt.want, tt.printer.getVerboseMode())
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package prettyprinter
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestNewImagePrinter(t *testing.T) {
|
||||
// Test case 1: Valid writer and verbose mode
|
||||
verbose := true
|
||||
printer := NewImagePrinter(os.Stdout, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Equal(t, os.Stdout, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.imageTablePrinter)
|
||||
|
||||
// Test case 2: Valid writer and non-verbose mode
|
||||
verbose = false
|
||||
printer = NewImagePrinter(os.Stdout, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Equal(t, os.Stdout, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.imageTablePrinter)
|
||||
|
||||
// Test case 3: Nil writer and verbose mode
|
||||
var writer *os.File
|
||||
verbose = true
|
||||
printer = NewImagePrinter(writer, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Nil(t, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.imageTablePrinter)
|
||||
|
||||
// Test case 4: Nil writer and non-verbose mode
|
||||
verbose = false
|
||||
printer = NewImagePrinter(writer, verbose)
|
||||
assert.NotNil(t, printer)
|
||||
assert.Nil(t, printer.writer)
|
||||
assert.Equal(t, verbose, printer.verboseMode)
|
||||
assert.NotNil(t, printer.imageTablePrinter)
|
||||
}
|
||||
|
||||
func TestPrintNextSteps_ImageScan(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
verbose bool
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "Verbose mode on",
|
||||
verbose: true,
|
||||
want: "\nWhat now?\n─────────\n\n* Install Kubescape in your cluster for continuous monitoring and a full vulnerability report: https://kubescape.io/docs/install-operator/\n\n",
|
||||
},
|
||||
{
|
||||
name: "Verbose mode off",
|
||||
verbose: false,
|
||||
want: "\nWhat now?\n─────────\n\n* Run with '--verbose'/'-v' flag for detailed vulnerabilities view\n* Install Kubescape in your cluster for continuous monitoring and a full vulnerability report: https://kubescape.io/docs/install-operator/\n\n",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// Create a temporary file to capture output
|
||||
f, err := os.CreateTemp("", "print-next-steps")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
ip := NewImagePrinter(f, tt.verbose)
|
||||
|
||||
// Redirect stderr to the temporary file
|
||||
oldStderr := os.Stderr
|
||||
defer func() {
|
||||
os.Stderr = oldStderr
|
||||
}()
|
||||
os.Stderr = f
|
||||
|
||||
// Print the score using the `Score` function
|
||||
ip.PrintNextSteps()
|
||||
|
||||
// Read the contents of the temporary file
|
||||
f.Seek(0, 0)
|
||||
got, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
assert.Equal(t, tt.want, string(got))
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user