linkerd2/cli/cmd/dashboard_test.go

74 lines
2.0 KiB
Go

package cmd
import (
"errors"
"testing"
"github.com/runconduit/conduit/controller/api/public"
healthcheckPb "github.com/runconduit/conduit/controller/gen/common/healthcheck"
)
func TestDashboardAvailability(t *testing.T) {
t.Run("Returns true if api client has responds with a list of Self Checks that are OK", func(t *testing.T) {
mockSelfCheckResponse := &healthcheckPb.SelfCheckResponse{
Results: []*healthcheckPb.CheckResult{
{
SubsystemName: "TestSystem",
Status: healthcheckPb.CheckStatus_OK,
},
},
}
mockPublicApi := &public.MockConduitApiClient{
SelfCheckResponseToReturn: mockSelfCheckResponse,
}
dashboardAvailable, err := isDashboardAvailable(mockPublicApi)
if err != nil {
t.Fatalf("Expected to not receive an error but got: %+v\n", err)
}
if !dashboardAvailable {
t.Fatalf("Expected dashboard available to be true but got: %t", dashboardAvailable)
}
})
t.Run("Returns false if public api client returns a list of Self Checks that have failed", func(t *testing.T) {
mockSelfCheckResponse := &healthcheckPb.SelfCheckResponse{
Results: []*healthcheckPb.CheckResult{
{
SubsystemName: "TestSystem",
Status: healthcheckPb.CheckStatus_FAIL,
},
},
}
mockPublicApi := &public.MockConduitApiClient{
SelfCheckResponseToReturn: mockSelfCheckResponse,
}
dashboardAvailable, err := isDashboardAvailable(mockPublicApi)
if err != nil {
t.Fatalf("Expected to not receive an error but got: %+v\n", err)
}
if dashboardAvailable {
t.Fatalf("Expected dashboard available to be false but got: %t", dashboardAvailable)
}
})
t.Run("Return false when public API Self Check fails to make a request", func(t *testing.T) {
mockPublicApi := &public.MockConduitApiClient{
ErrorToReturn: errors.New("expected"),
}
dashboardAvailable, err := isDashboardAvailable(mockPublicApi)
if err == nil {
t.Fatalf("Expected error to not be nil")
}
if dashboardAvailable {
t.Fatalf("Expected dashboard available to return false but gotL %t", dashboardAvailable)
}
})
}