vdi-cloud/platform/pkg/proxmox/provision_test.go

29 lines
1.2 KiB
Go

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)
}
}