29 lines
1.2 KiB
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)
|
|
}
|
|
}
|