0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 10:33:46 +00:00
terraform-provider-proxmox/proxmoxtf/resource_virtual_environment_vm_test.go
2019-12-27 19:13:40 +01:00

286 lines
9.2 KiB
Go

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
package proxmoxtf
import (
"testing"
"github.com/hashicorp/terraform/helper/schema"
)
// TestResourceVirtualEnvironmentVMInstantiation tests whether the ResourceVirtualEnvironmentVM instance can be instantiated.
func TestResourceVirtualEnvironmentVMInstantiation(t *testing.T) {
s := resourceVirtualEnvironmentVM()
if s == nil {
t.Fatalf("Cannot instantiate resourceVirtualEnvironmentVM")
}
}
// TestResourceVirtualEnvironmentVMSchema tests the resourceVirtualEnvironmentVM schema.
func TestResourceVirtualEnvironmentVMSchema(t *testing.T) {
s := resourceVirtualEnvironmentVM()
testRequiredArguments(t, s, []string{
mkResourceVirtualEnvironmentVMNodeName,
})
testOptionalArguments(t, s, []string{
mkResourceVirtualEnvironmentVMCDROM,
mkResourceVirtualEnvironmentVMCloudInit,
mkResourceVirtualEnvironmentVMCPU,
mkResourceVirtualEnvironmentVMDescription,
mkResourceVirtualEnvironmentVMDisk,
mkResourceVirtualEnvironmentVMKeyboardLayout,
mkResourceVirtualEnvironmentVMMemory,
mkResourceVirtualEnvironmentVMName,
mkResourceVirtualEnvironmentVMNetworkDevice,
mkResourceVirtualEnvironmentVMOSType,
mkResourceVirtualEnvironmentVMPoolID,
mkResourceVirtualEnvironmentVMVMID,
})
testSchemaValueTypes(t, s, []string{
mkResourceVirtualEnvironmentVMCDROM,
mkResourceVirtualEnvironmentVMCloudInit,
mkResourceVirtualEnvironmentVMCPU,
mkResourceVirtualEnvironmentVMDescription,
mkResourceVirtualEnvironmentVMDisk,
mkResourceVirtualEnvironmentVMKeyboardLayout,
mkResourceVirtualEnvironmentVMMemory,
mkResourceVirtualEnvironmentVMName,
mkResourceVirtualEnvironmentVMNetworkDevice,
mkResourceVirtualEnvironmentVMOSType,
mkResourceVirtualEnvironmentVMPoolID,
mkResourceVirtualEnvironmentVMVMID,
}, []schema.ValueType{
schema.TypeList,
schema.TypeList,
schema.TypeList,
schema.TypeString,
schema.TypeList,
schema.TypeString,
schema.TypeList,
schema.TypeString,
schema.TypeList,
schema.TypeString,
schema.TypeString,
schema.TypeInt,
})
agentSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMAgent)
testOptionalArguments(t, agentSchema, []string{
mkResourceVirtualEnvironmentVMAgentEnabled,
mkResourceVirtualEnvironmentVMAgentTrim,
mkResourceVirtualEnvironmentVMAgentType,
})
testSchemaValueTypes(t, agentSchema, []string{
mkResourceVirtualEnvironmentVMAgentEnabled,
mkResourceVirtualEnvironmentVMAgentTrim,
mkResourceVirtualEnvironmentVMAgentType,
}, []schema.ValueType{
schema.TypeBool,
schema.TypeBool,
schema.TypeString,
})
cdromSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCDROM)
testOptionalArguments(t, cdromSchema, []string{
mkResourceVirtualEnvironmentVMCDROMEnabled,
mkResourceVirtualEnvironmentVMCDROMFileID,
})
testSchemaValueTypes(t, cdromSchema, []string{
mkResourceVirtualEnvironmentVMCDROMEnabled,
mkResourceVirtualEnvironmentVMCDROMFileID,
}, []schema.ValueType{
schema.TypeBool,
schema.TypeString,
})
cloudInitSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCloudInit)
testRequiredArguments(t, cloudInitSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitUserAccount,
})
testOptionalArguments(t, cloudInitSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitDNS,
mkResourceVirtualEnvironmentVMCloudInitIPConfig,
})
testSchemaValueTypes(t, cloudInitSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitDNS,
mkResourceVirtualEnvironmentVMCloudInitIPConfig,
mkResourceVirtualEnvironmentVMCloudInitUserAccount,
}, []schema.ValueType{
schema.TypeList,
schema.TypeList,
schema.TypeList,
})
cloudInitDNSSchema := testNestedSchemaExistence(t, cloudInitSchema, mkResourceVirtualEnvironmentVMCloudInitDNS)
testOptionalArguments(t, cloudInitDNSSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitDNSDomain,
mkResourceVirtualEnvironmentVMCloudInitDNSServer,
})
testSchemaValueTypes(t, cloudInitDNSSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitDNSDomain,
mkResourceVirtualEnvironmentVMCloudInitDNSServer,
}, []schema.ValueType{
schema.TypeString,
schema.TypeString,
})
cloudInitIPConfigSchema := testNestedSchemaExistence(t, cloudInitSchema, mkResourceVirtualEnvironmentVMCloudInitIPConfig)
testOptionalArguments(t, cloudInitIPConfigSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6,
})
testSchemaValueTypes(t, cloudInitIPConfigSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6,
}, []schema.ValueType{
schema.TypeList,
schema.TypeList,
})
cloudInitIPConfigIPv4Schema := testNestedSchemaExistence(t, cloudInitIPConfigSchema, mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4)
testOptionalArguments(t, cloudInitIPConfigIPv4Schema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4Address,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4Gateway,
})
testSchemaValueTypes(t, cloudInitIPConfigIPv4Schema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4Address,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv4Gateway,
}, []schema.ValueType{
schema.TypeString,
schema.TypeString,
})
cloudInitIPConfigIPv6Schema := testNestedSchemaExistence(t, cloudInitIPConfigSchema, mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6)
testOptionalArguments(t, cloudInitIPConfigIPv6Schema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6Address,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6Gateway,
})
testSchemaValueTypes(t, cloudInitIPConfigIPv6Schema, []string{
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6Address,
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6Gateway,
}, []schema.ValueType{
schema.TypeString,
schema.TypeString,
})
cloudInitUserAccountSchema := testNestedSchemaExistence(t, cloudInitSchema, mkResourceVirtualEnvironmentVMCloudInitUserAccount)
testRequiredArguments(t, cloudInitUserAccountSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitUserAccountKeys,
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername,
})
testSchemaValueTypes(t, cloudInitUserAccountSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitUserAccountKeys,
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername,
}, []schema.ValueType{
schema.TypeList,
schema.TypeString,
})
cpuSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCPU)
testOptionalArguments(t, cpuSchema, []string{
mkResourceVirtualEnvironmentVMCPUCores,
mkResourceVirtualEnvironmentVMCPUHotplugged,
mkResourceVirtualEnvironmentVMCPUSockets,
})
testSchemaValueTypes(t, cpuSchema, []string{
mkResourceVirtualEnvironmentVMCPUCores,
mkResourceVirtualEnvironmentVMCPUHotplugged,
mkResourceVirtualEnvironmentVMCPUSockets,
}, []schema.ValueType{
schema.TypeInt,
schema.TypeInt,
schema.TypeInt,
})
diskSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMDisk)
testOptionalArguments(t, diskSchema, []string{
mkResourceVirtualEnvironmentVMDiskDatastoreID,
mkResourceVirtualEnvironmentVMDiskEnabled,
mkResourceVirtualEnvironmentVMDiskFileFormat,
mkResourceVirtualEnvironmentVMDiskFileID,
mkResourceVirtualEnvironmentVMDiskSize,
})
testSchemaValueTypes(t, diskSchema, []string{
mkResourceVirtualEnvironmentVMDiskDatastoreID,
mkResourceVirtualEnvironmentVMDiskEnabled,
mkResourceVirtualEnvironmentVMDiskFileFormat,
mkResourceVirtualEnvironmentVMDiskFileID,
mkResourceVirtualEnvironmentVMDiskSize,
}, []schema.ValueType{
schema.TypeString,
schema.TypeBool,
schema.TypeString,
schema.TypeString,
schema.TypeInt,
})
memorySchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMMemory)
testOptionalArguments(t, memorySchema, []string{
mkResourceVirtualEnvironmentVMMemoryDedicated,
mkResourceVirtualEnvironmentVMMemoryFloating,
mkResourceVirtualEnvironmentVMMemoryShared,
})
testSchemaValueTypes(t, memorySchema, []string{
mkResourceVirtualEnvironmentVMMemoryDedicated,
mkResourceVirtualEnvironmentVMMemoryFloating,
mkResourceVirtualEnvironmentVMMemoryShared,
}, []schema.ValueType{
schema.TypeInt,
schema.TypeInt,
schema.TypeInt,
})
networkDeviceSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMNetworkDevice)
testOptionalArguments(t, networkDeviceSchema, []string{
mkResourceVirtualEnvironmentVMNetworkDeviceBridge,
mkResourceVirtualEnvironmentVMNetworkDeviceEnabled,
mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress,
mkResourceVirtualEnvironmentVMNetworkDeviceModel,
mkResourceVirtualEnvironmentVMNetworkDeviceVLANID,
})
testSchemaValueTypes(t, networkDeviceSchema, []string{
mkResourceVirtualEnvironmentVMNetworkDeviceBridge,
mkResourceVirtualEnvironmentVMNetworkDeviceEnabled,
mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress,
mkResourceVirtualEnvironmentVMNetworkDeviceModel,
mkResourceVirtualEnvironmentVMNetworkDeviceVLANID,
}, []schema.ValueType{
schema.TypeString,
schema.TypeBool,
schema.TypeString,
schema.TypeString,
schema.TypeInt,
})
}