cleanups and code fixes incl templ
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
146
server/handler/method_guards_test.go
Normal file
146
server/handler/method_guards_test.go
Normal file
@@ -0,0 +1,146 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"vctp/server/models"
|
||||
)
|
||||
|
||||
func TestMutatingHandlersRejectWrongMethod(t *testing.T) {
|
||||
h := &Handler{Logger: newTestLogger()}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
path string
|
||||
call func(*Handler, *httptest.ResponseRecorder, *http.Request)
|
||||
}{
|
||||
{
|
||||
name: "snapshot force hourly",
|
||||
path: "/api/snapshots/hourly/force",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.SnapshotForceHourly(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "snapshot aggregate",
|
||||
path: "/api/snapshots/aggregate",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.SnapshotAggregateForce(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "snapshot migrate",
|
||||
path: "/api/snapshots/migrate",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.SnapshotMigrate(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "snapshot regenerate hourly",
|
||||
path: "/api/snapshots/regenerate-hourly-reports",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.SnapshotRegenerateHourlyReports(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm create event",
|
||||
path: "/api/event/vm/create",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmCreateEvent(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm modify event",
|
||||
path: "/api/event/vm/modify",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmModifyEvent(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm move event",
|
||||
path: "/api/event/vm/move",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmMoveEvent(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm delete event",
|
||||
path: "/api/event/vm/delete",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmDeleteEvent(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm import",
|
||||
path: "/api/import/vm",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmImport(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm update details",
|
||||
path: "/api/inventory/vm/update",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmUpdateDetails(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vm cleanup",
|
||||
path: "/api/inventory/vm/delete",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VmCleanup(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "vcenter cleanup",
|
||||
path: "/api/cleanup/vcenter",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.VcCleanup(rr, req)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "update cleanup",
|
||||
path: "/api/cleanup/updates",
|
||||
call: func(h *Handler, rr *httptest.ResponseRecorder, req *http.Request) {
|
||||
h.UpdateCleanup(rr, req)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
req := httptest.NewRequest(http.MethodGet, tc.path, strings.NewReader("{}"))
|
||||
rr := httptest.NewRecorder()
|
||||
tc.call(h, rr, req)
|
||||
if rr.Code != http.StatusMethodNotAllowed {
|
||||
t.Fatalf("expected %d, got %d", http.StatusMethodNotAllowed, rr.Code)
|
||||
}
|
||||
if !strings.Contains(rr.Body.String(), "method not allowed") {
|
||||
t.Fatalf("expected method not allowed response, got: %s", rr.Body.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestVcenterLoginFailuresAreHandled(t *testing.T) {
|
||||
h := &Handler{Logger: newTestLogger()}
|
||||
event := models.CloudEventReceived{}
|
||||
event.CloudEvent.Source = "https://invalid.local/sdk"
|
||||
|
||||
disk := h.calculateNewDiskSize(context.Background(), event)
|
||||
if disk != 0 {
|
||||
t.Fatalf("expected disk size 0 on login failure, got %f", disk)
|
||||
}
|
||||
|
||||
id, err := h.AddVmToInventory(event, context.Background(), 0)
|
||||
if err == nil {
|
||||
t.Fatal("expected error on login failure")
|
||||
}
|
||||
if id != 0 {
|
||||
t.Fatalf("expected id 0 on login failure, got %d", id)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user