Files
admin 88b3cf03dd gofmt: normalize internal/localapi (whitespace only)
Swept up by gofmt -w on the package while adding the guest-power observable. No
semantic change; 3 of 5 files are tests.
2026-07-28 11:15:45 +02:00

41 lines
1.5 KiB
Go

package localapi
import (
"encoding/json"
"net/http"
"testing"
"gitea.dooplex.hu/admin/felhom-agent/internal/storage"
)
// handleDiskCandidates splits discovery into initialize (all unclaimed) + attach (mountable-FS subset).
func TestDiskCandidates_Split(t *testing.T) {
d := &fakeDiskOps{candidates: []storage.CandidateDisk{
{Device: "/dev/sdd", SizeBytes: 64 << 30, DataBearing: false}, // blank → initialize only
{Device: "/dev/sde", FSType: "ext4", DataBearing: true, Mountable: true, MountSource: "/dev/sde1"}, // FS → init + attach
{Device: "/dev/sdf", FSType: "ntfs", DataBearing: true, Mountable: false}, // ntfs → initialize only
}}
h := newDiskServer(t, d, &fakeGate{}, nil, nil)
w := do(t, h, "GET", "/disks/candidates", "A", "")
if w.Code != http.StatusOK {
t.Fatalf("candidates: got %d want 200 (%s)", w.Code, w.Body.String())
}
var env struct {
Data struct {
Initialize []storage.CandidateDisk `json:"initialize"`
Attach []storage.CandidateDisk `json:"attach"`
} `json:"data"`
}
if err := json.Unmarshal(w.Body.Bytes(), &env); err != nil {
t.Fatalf("parse: %v", err)
}
resp := env.Data
if len(resp.Initialize) != 3 {
t.Fatalf("initialize must list all 3 unclaimed disks, got %d", len(resp.Initialize))
}
if len(resp.Attach) != 1 || resp.Attach[0].Device != "/dev/sde" {
t.Fatalf("attach must list only the mountable-FS disk, got %+v", resp.Attach)
}
}