Skip to content

Commit

Permalink
feat: add tests for ingress analyzer && Use t.Fatalf to report a fata…
Browse files Browse the repository at this point in the history
…l error if RunAnalysis returns an unexpected error

Signed-off-by: Matthis Holleville <matthish29@gmail.com>
  • Loading branch information
matthisholleville committed Apr 3, 2023
1 parent 9ff3fbc commit e27e940
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 4 deletions.
110 changes: 110 additions & 0 deletions pkg/analyzer/ingressAnalyzer_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
package analyzer

import (
"context"
"strings"
"testing"

"github.com/k8sgpt-ai/k8sgpt/pkg/kubernetes"
"github.com/magiconair/properties/assert"
networkingv1 "k8s.io/api/networking/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
)

func TestIngressAnalyzer(t *testing.T) {
clientset := fake.NewSimpleClientset(
&networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "example",
Namespace: "default",
Annotations: map[string]string{},
},
})
ingressAnalyzer := IngressAnalyzer{}
var analysisResults []Analysis
err := ingressAnalyzer.RunAnalysis(context.Background(),
&AnalysisConfiguration{
Namespace: "default",
},
&kubernetes.Client{
Client: clientset,
}, nil, &analysisResults)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assert.Equal(t, len(analysisResults), 1)
}

func TestIngressAnalyzerWithMultipleIngresses(t *testing.T) {
clientset := fake.NewSimpleClientset(
&networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "example",
Namespace: "default",
Annotations: map[string]string{},
},
},
&networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "example-2",
Namespace: "default",
Annotations: map[string]string{},
},
},
)
ingressAnalyzer := IngressAnalyzer{}
var analysisResults []Analysis
err := ingressAnalyzer.RunAnalysis(context.Background(),
&AnalysisConfiguration{
Namespace: "default",
},
&kubernetes.Client{
Client: clientset,
}, nil, &analysisResults)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assert.Equal(t, len(analysisResults), 2)
}

func TestIngressAnalyzerWithoutIngressClassAnnotation(t *testing.T) {

clientset := fake.NewSimpleClientset(
&networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "example",
Namespace: "default",
Annotations: map[string]string{},
},
})
ingressAnalyzer := IngressAnalyzer{}

var analysisResults []Analysis
err := ingressAnalyzer.RunAnalysis(context.Background(),
&AnalysisConfiguration{
Namespace: "default",
},
&kubernetes.Client{
Client: clientset,
}, nil, &analysisResults)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}

var errorFound bool
for _, analysis := range analysisResults {
for _, err := range analysis.Error {
if strings.Contains(err, "does not specify an Ingress class") {
errorFound = true
break
}
}
if errorFound {
break
}
}
if !errorFound {
t.Error("expected error 'does not specify an Ingress class' not found in analysis results")
}
}
6 changes: 4 additions & 2 deletions pkg/analyzer/podAnalyzer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ func TestPodAnalzyer(t *testing.T) {

podAnalyzer := PodAnalyzer{}
var analysisResults []Analysis
podAnalyzer.RunAnalysis(context.Background(),
err := podAnalyzer.RunAnalysis(context.Background(),
&AnalysisConfiguration{
Namespace: "default",
},
&kubernetes.Client{
Client: clientset,
}, nil, &analysisResults)

if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assert.Equal(t, len(analysisResults), 1)
}
6 changes: 4 additions & 2 deletions pkg/analyzer/serviceAnalyzer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,15 @@ func TestServiceAnalzyer(t *testing.T) {

serviceAnalyzer := ServiceAnalyzer{}
var analysisResults []Analysis
serviceAnalyzer.RunAnalysis(context.Background(),
err := serviceAnalyzer.RunAnalysis(context.Background(),
&AnalysisConfiguration{
Namespace: "default",
},
&kubernetes.Client{
Client: clientset,
}, nil, &analysisResults)

if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assert.Equal(t, len(analysisResults), 1)
}

0 comments on commit e27e940

Please sign in to comment.