mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-07 08:57:12 +00:00
102 lines
3.4 KiB
Go
102 lines
3.4 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/rcourtman/pulse-go-rewrite/pkg/extensions"
|
|
)
|
|
|
|
type testReportingAdminEndpoints struct {
|
|
catalogCalls int
|
|
generateCalls int
|
|
exportInventoryCalls int
|
|
}
|
|
|
|
func (t *testReportingAdminEndpoints) HandleGetReportingCatalog(http.ResponseWriter, *http.Request) {
|
|
t.catalogCalls++
|
|
}
|
|
|
|
func (t *testReportingAdminEndpoints) HandleGenerateReport(http.ResponseWriter, *http.Request) {
|
|
t.generateCalls++
|
|
}
|
|
|
|
func (t *testReportingAdminEndpoints) HandleGenerateMultiReport(http.ResponseWriter, *http.Request) {}
|
|
|
|
func (t *testReportingAdminEndpoints) HandleExportVMInventory(http.ResponseWriter, *http.Request) {
|
|
t.exportInventoryCalls++
|
|
}
|
|
|
|
func TestResolveReportingAdminEndpoints_DefaultWhenBinderNil(t *testing.T) {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
t.Cleanup(func() {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
})
|
|
|
|
defaults := &testReportingAdminEndpoints{}
|
|
resolved := resolveReportingAdminEndpoints(defaults, extensions.ReportingAdminRuntime{})
|
|
req := httptest.NewRequest(http.MethodGet, "/api/admin/reports/generate", nil)
|
|
rec := httptest.NewRecorder()
|
|
resolved.HandleGenerateReport(rec, req)
|
|
if defaults.generateCalls != 1 {
|
|
t.Fatalf("expected default reporting handler call, got %d", defaults.generateCalls)
|
|
}
|
|
}
|
|
|
|
func TestResolveReportingAdminEndpoints_UsesBinderOverride(t *testing.T) {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
t.Cleanup(func() {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
})
|
|
|
|
defaults := &testReportingAdminEndpoints{}
|
|
override := &testReportingAdminEndpoints{}
|
|
SetReportingAdminEndpointsBinder(func(_ extensions.ReportingAdminEndpoints, _ extensions.ReportingAdminRuntime) extensions.ReportingAdminEndpoints {
|
|
return override
|
|
})
|
|
|
|
resolved := resolveReportingAdminEndpoints(defaults, extensions.ReportingAdminRuntime{})
|
|
req := httptest.NewRequest(http.MethodGet, "/api/admin/reports/generate", nil)
|
|
rec := httptest.NewRecorder()
|
|
resolved.HandleGenerateReport(rec, req)
|
|
|
|
if defaults.generateCalls != 0 {
|
|
t.Fatalf("expected default reporting handler to be bypassed, got %d calls", defaults.generateCalls)
|
|
}
|
|
if override.generateCalls != 1 {
|
|
t.Fatalf("expected override reporting handler call, got %d", override.generateCalls)
|
|
}
|
|
}
|
|
|
|
func TestResolveReportingAdminEndpoints_UsesDefaultInventoryHandler(t *testing.T) {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
t.Cleanup(func() {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
})
|
|
|
|
defaults := &testReportingAdminEndpoints{}
|
|
resolved := resolveReportingAdminEndpoints(defaults, extensions.ReportingAdminRuntime{})
|
|
req := httptest.NewRequest(http.MethodGet, "/api/admin/reports/inventory/vms/export", nil)
|
|
rec := httptest.NewRecorder()
|
|
resolved.HandleExportVMInventory(rec, req)
|
|
if defaults.exportInventoryCalls != 1 {
|
|
t.Fatalf("expected default VM inventory handler call, got %d", defaults.exportInventoryCalls)
|
|
}
|
|
}
|
|
|
|
func TestResolveReportingAdminEndpoints_UsesDefaultCatalogHandler(t *testing.T) {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
t.Cleanup(func() {
|
|
SetReportingAdminEndpointsBinder(nil)
|
|
})
|
|
|
|
defaults := &testReportingAdminEndpoints{}
|
|
resolved := resolveReportingAdminEndpoints(defaults, extensions.ReportingAdminRuntime{})
|
|
req := httptest.NewRequest(http.MethodGet, "/api/admin/reports/catalog", nil)
|
|
rec := httptest.NewRecorder()
|
|
resolved.HandleGetReportingCatalog(rec, req)
|
|
if defaults.catalogCalls != 1 {
|
|
t.Fatalf("expected default reporting catalog handler call, got %d", defaults.catalogCalls)
|
|
}
|
|
}
|