Files
pulse/pkg/pmg/client_security_test.go
T
pulse-triage[bot] 327682ad34 Bound Proxmox API success responses
Change-source: pulse-maintainer
2026-08-31 21:20:30 +01:00

66 lines
1.7 KiB
Go

package pmg
import (
"context"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestGetVersionRejectsOversizedErrorBody(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/api2/json/version" {
t.Fatalf("unexpected path: %s", r.URL.Path)
}
http.Error(w, strings.Repeat("x", int(maxResponseBodyBytes)+1), http.StatusInternalServerError)
}))
defer server.Close()
client, err := NewClient(ClientConfig{
Host: server.URL,
TokenName: "root@pmg!pulse-token",
TokenValue: "secret",
})
if err != nil {
t.Fatalf("NewClient() error = %v", err)
}
_, err = client.GetVersion(context.Background())
if err == nil {
t.Fatal("expected oversized body error, got nil")
}
if !strings.Contains(err.Error(), "response body exceeds") {
t.Fatalf("expected size-limit error, got: %v", err)
}
}
func TestGetVersionRejectsOversizedSuccessBody(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/api2/json/version" {
t.Fatalf("unexpected path: %s", r.URL.Path)
}
_, _ = w.Write([]byte(`{"data":{"version":"8.2"},"padding":"`))
_, _ = w.Write([]byte(strings.Repeat("x", int(maxResponseBodyBytes))))
_, _ = w.Write([]byte(`"}`))
}))
defer server.Close()
client, err := NewClient(ClientConfig{
Host: server.URL,
TokenName: "root@pmg!pulse-token",
TokenValue: "secret",
})
if err != nil {
t.Fatalf("NewClient() error = %v", err)
}
_, err = client.GetVersion(context.Background())
if err == nil {
t.Fatal("expected oversized body error, got nil")
}
if !strings.Contains(err.Error(), "response body exceeds") {
t.Fatalf("expected size-limit error, got: %v", err)
}
}