package proxmox import "testing" func TestTemplateDisksRejectUnsafeSources(t *testing.T) { for _, tc := range []struct { name string config map[string]any }{ {"ordinary-vm", map[string]any{"template": 0, "scsi0": "local:disk,size=32G"}}, {"locked", map[string]any{"template": 1, "lock": "clone", "scsi0": "local:disk,size=32G"}}, {"gpu", map[string]any{"template": 1, "hostpci0": "0000:01:00.0", "scsi0": "local:disk,size=32G"}}, {"host-disk", map[string]any{"template": 1, "scsi0": "/dev/sda,size=32G"}}, {"unknown-size", map[string]any{"template": 1, "scsi0": "local:disk"}}, {"nan-size", map[string]any{"template": 1, "scsi0": "local:disk,size=NaNG"}}, {"inf-size", map[string]any{"template": 1, "scsi0": "local:disk,size=+InfG"}}, } { t.Run(tc.name, func(t *testing.T) { if _, err := TemplateDisks(tc.config); err == nil { t.Fatal("unsafe template accepted") } }) } disks, err := TemplateDisks(map[string]any{"template": 1, "scsi0": "local:disk,size=32G", "efidisk0": "local:efi,size=4M", "tpmstate0": "local:tpm,size=4M", "ide2": "none,media=cdrom"}) if err != nil || disks["local"] != 32*(1<<30)+8*(1<<20) { t.Fatalf("incorrect capacity including firmware disks: %v %v", disks, err) } }