test: Add HandleSetupScript PBS path tests for API package
Cover the PBS script generation branch that was previously untested. Verifies PBS-specific content, auth token handling, and placeholder host.
This commit is contained in:
parent
28533975f6
commit
50769e12ea
1 changed files with 118 additions and 0 deletions
|
|
@ -203,3 +203,121 @@ func TestHandleSetupScript_InvalidHostParameter(t *testing.T) {
|
|||
t.Fatalf("expected 400 Bad Request for invalid host, got %d (%s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleSetupScript_PBSTypeGeneratesScript(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
cfg := &config.Config{
|
||||
DataPath: tempDir,
|
||||
ConfigPath: tempDir,
|
||||
}
|
||||
|
||||
handlers := newTestConfigHandlers(t, cfg)
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet,
|
||||
"/api/setup-script?type=pbs&host=https://192.168.0.10:8007&pulse_url=http://pulse.local:7656", nil)
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
handlers.HandleSetupScript(rr, req)
|
||||
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Fatalf("expected 200 OK for PBS type, got %d (%s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
|
||||
script := rr.Body.String()
|
||||
|
||||
// Verify PBS-specific content
|
||||
tests := []struct {
|
||||
name string
|
||||
contains string
|
||||
desc string
|
||||
}{
|
||||
{
|
||||
name: "pbs_header",
|
||||
contains: "Pulse Monitoring Setup for PBS",
|
||||
desc: "Should have PBS-specific header",
|
||||
},
|
||||
{
|
||||
name: "proxmox_backup_manager_check",
|
||||
contains: "proxmox-backup-manager",
|
||||
desc: "Should check for proxmox-backup-manager command",
|
||||
},
|
||||
{
|
||||
name: "pbs_user_realm",
|
||||
contains: "pulse-monitor@pbs",
|
||||
desc: "Should use @pbs realm for user",
|
||||
},
|
||||
{
|
||||
name: "pbs_acl_update",
|
||||
contains: "proxmox-backup-manager acl update",
|
||||
desc: "Should set PBS ACLs",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if !containsString(script, tt.contains) {
|
||||
t.Errorf("%s\nExpected to find: %s", tt.desc, tt.contains)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Verify PBS script does NOT contain PVE-specific content
|
||||
if containsString(script, "pveum user add") {
|
||||
t.Error("PBS script should not contain PVE commands like 'pveum user add'")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleSetupScript_PBSWithAuthToken(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
cfg := &config.Config{
|
||||
DataPath: tempDir,
|
||||
ConfigPath: tempDir,
|
||||
}
|
||||
|
||||
handlers := newTestConfigHandlers(t, cfg)
|
||||
|
||||
// Valid auth token (64 hex chars)
|
||||
req := httptest.NewRequest(http.MethodGet,
|
||||
"/api/setup-script?type=pbs&host=https://192.168.0.10:8007&auth_token=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef", nil)
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
handlers.HandleSetupScript(rr, req)
|
||||
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Fatalf("expected 200 OK, got %d (%s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
|
||||
script := rr.Body.String()
|
||||
|
||||
// Verify auth token handling in PBS script
|
||||
if !containsString(script, "AUTH_TOKEN=") {
|
||||
t.Error("PBS script should define AUTH_TOKEN variable")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleSetupScript_PBSNoHostUsesPlaceholder(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
cfg := &config.Config{
|
||||
DataPath: tempDir,
|
||||
ConfigPath: tempDir,
|
||||
}
|
||||
|
||||
handlers := newTestConfigHandlers(t, cfg)
|
||||
|
||||
// No host parameter for PBS
|
||||
req := httptest.NewRequest(http.MethodGet, "/api/setup-script?type=pbs", nil)
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
handlers.HandleSetupScript(rr, req)
|
||||
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Fatalf("expected 200 OK, got %d (%s)", rr.Code, rr.Body.String())
|
||||
}
|
||||
|
||||
script := rr.Body.String()
|
||||
|
||||
// Should use PBS placeholder when no host provided
|
||||
if !containsString(script, "YOUR_PBS_HOST:8007") {
|
||||
t.Error("PBS script should use YOUR_PBS_HOST:8007 placeholder when no host provided")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue