mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2025-09-17 15:52:50 +00:00
chore: added initial tests for json output
Signed-off-by: Thomas Schuetz <thomas.schuetz@t-sc.eu>
This commit is contained in:
2
go.mod
2
go.mod
@@ -9,6 +9,7 @@ require (
|
|||||||
github.com/schollz/progressbar/v3 v3.13.1
|
github.com/schollz/progressbar/v3 v3.13.1
|
||||||
github.com/spf13/cobra v1.7.0
|
github.com/spf13/cobra v1.7.0
|
||||||
github.com/spf13/viper v1.15.0
|
github.com/spf13/viper v1.15.0
|
||||||
|
github.com/stretchr/testify v1.8.1
|
||||||
golang.org/x/term v0.7.0
|
golang.org/x/term v0.7.0
|
||||||
k8s.io/api v0.26.3
|
k8s.io/api v0.26.3
|
||||||
k8s.io/apimachinery v0.26.3
|
k8s.io/apimachinery v0.26.3
|
||||||
@@ -46,6 +47,7 @@ require (
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
|
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/rivo/uniseg v0.4.4 // indirect
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
github.com/spf13/afero v1.9.5 // indirect
|
github.com/spf13/afero v1.9.5 // indirect
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.0 // indirect
|
||||||
|
@@ -103,7 +103,7 @@ func (a *Analysis) JsonOutput() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
result := JsonOutput{
|
result := JsonOutput{
|
||||||
Problems: len(a.Results),
|
Problems: problems,
|
||||||
Results: a.Results,
|
Results: a.Results,
|
||||||
Status: status,
|
Status: status,
|
||||||
}
|
}
|
||||||
|
123
pkg/analysis/analysis_test.go
Normal file
123
pkg/analysis/analysis_test.go
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
package analysis
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"github.com/k8sgpt-ai/k8sgpt/pkg/analyzer"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAnalysis_NoProblemJsonOutput(t *testing.T) {
|
||||||
|
|
||||||
|
analysis := Analysis{
|
||||||
|
Results: []analyzer.Result{},
|
||||||
|
Namespace: "default",
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := JsonOutput{
|
||||||
|
Status: StateOK,
|
||||||
|
Problems: 0,
|
||||||
|
Results: []analyzer.Result{},
|
||||||
|
}
|
||||||
|
|
||||||
|
gotJson, err := analysis.JsonOutput()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got := JsonOutput{}
|
||||||
|
err = json.Unmarshal(gotJson, &got)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(got)
|
||||||
|
fmt.Println(expected)
|
||||||
|
|
||||||
|
require.Equal(t, got, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnalysis_ProblemJsonOutput(t *testing.T) {
|
||||||
|
analysis := Analysis{
|
||||||
|
Results: []analyzer.Result{
|
||||||
|
{
|
||||||
|
"Deployment",
|
||||||
|
"test-deployment",
|
||||||
|
[]string{"test-problem"},
|
||||||
|
"test-solution",
|
||||||
|
"parent-resource"},
|
||||||
|
},
|
||||||
|
Namespace: "default",
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := JsonOutput{
|
||||||
|
Status: StateProblemDetected,
|
||||||
|
Problems: 1,
|
||||||
|
Results: []analyzer.Result{
|
||||||
|
{"Deployment",
|
||||||
|
"test-deployment",
|
||||||
|
[]string{"test-problem"},
|
||||||
|
"test-solution",
|
||||||
|
"parent-resource"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
gotJson, err := analysis.JsonOutput()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got := JsonOutput{}
|
||||||
|
err = json.Unmarshal(gotJson, &got)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(got)
|
||||||
|
fmt.Println(expected)
|
||||||
|
|
||||||
|
require.Equal(t, got, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnalysis_MultipleProblemJsonOutput(t *testing.T) {
|
||||||
|
analysis := Analysis{
|
||||||
|
Results: []analyzer.Result{
|
||||||
|
{
|
||||||
|
"Deployment",
|
||||||
|
"test-deployment",
|
||||||
|
[]string{"test-problem", "another-test-problem"},
|
||||||
|
"test-solution",
|
||||||
|
"parent-resource"},
|
||||||
|
},
|
||||||
|
Namespace: "default",
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := JsonOutput{
|
||||||
|
Status: StateProblemDetected,
|
||||||
|
Problems: 2,
|
||||||
|
Results: []analyzer.Result{
|
||||||
|
{"Deployment",
|
||||||
|
"test-deployment",
|
||||||
|
[]string{"test-problem", "another-test-problem"},
|
||||||
|
"test-solution",
|
||||||
|
"parent-resource"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
gotJson, err := analysis.JsonOutput()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got := JsonOutput{}
|
||||||
|
err = json.Unmarshal(gotJson, &got)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(got)
|
||||||
|
fmt.Println(expected)
|
||||||
|
|
||||||
|
require.Equal(t, got, expected)
|
||||||
|
}
|
Reference in New Issue
Block a user