From 4412fb587f0d7e0358cbd7c8a12c5904b7f1a5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20R=C3=B6hrich?= Date: Tue, 17 Dec 2024 12:48:31 +0100 Subject: [PATCH] Tests: Parseable `size` Parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add test to ensure that a non-parseable `size` parameter in a `disk` subresource of a `virtualmachine` resource generates an appropriate error message. The `size` parameter is not mandatory in all configurations, but when it is, it must be a parseable `resource.Quantity`, otherwise a panic and crash would ensue. Signed-off-by: Moritz Röhrich --- Dockerfile.dapper | 1 + .../tests/resource_virtualmachine_test.go | 62 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/Dockerfile.dapper b/Dockerfile.dapper index f329839e..0812fe27 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -20,6 +20,7 @@ RUN wget --quiet https://github.com/docker/buildx/releases/download/v0.13.1/buil mv buildx-v0.13.1.linux-${ARCH} /usr/local/bin/buildx && \ mv terraform /usr/local/bin/terraform +ENV DAPPER_RUN_ARGS="--network host -v /run/containerd/containerd.sock:/run/containerd/containerd.sock" ENV DAPPER_ENV REPO TAG DRONE_TAG ENV DAPPER_SOURCE /go/src/github.com/harvester/terraform-provider-harvester ENV DAPPER_OUTPUT ./bin ./dist diff --git a/internal/tests/resource_virtualmachine_test.go b/internal/tests/resource_virtualmachine_test.go index 6514b399..2e1e5f2c 100644 --- a/internal/tests/resource_virtualmachine_test.go +++ b/internal/tests/resource_virtualmachine_test.go @@ -3,6 +3,7 @@ package tests import ( "context" "fmt" + "regexp" "testing" "github.com/google/uuid" @@ -137,6 +138,67 @@ func TestAccVirtualMachine_input(t *testing.T) { }) } +func TestAccVirtualMachine_disk_size(t *testing.T) { + var ( + testAccImageName = "test-acc-image-leap-" + uuid.New().String()[:6] + testAccImageResourceName = constants.ResourceTypeImage + "." + testAccImageName + ctx = context.Background() + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckVirtualMachineDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: fmt.Sprintf(` +resource harvester_image "%s" { + name = "leap-15.6" + namespace = "default" + display_name = "openSUSE-Leap-15.6" + source_type = "download" + url = "https://download.opensuse.org/repositories/Cloud:/Images:/Leap_15.6/images/openSUSE-Leap-15.6.x86_64-NoCloud.qcow2" +} +`, + testAccImageName, + ), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(testAccImageResourceName, constants.FieldCommonName, "leap-15.6"), + resource.TestCheckResourceAttr(testAccImageResourceName, constants.FieldCommonNamespace, "default"), + ), + }, + { + Config: ` +resource harvester_virtualmachine "disk_test" { + name = "disk-test" + + cpu = 1 + memory = "1Gi" + + run_strategy = "RerunOnFailure" + machine_type = "q35" + + network_interface { + name = "default" + } + + disk { + name = "cdrom-disk" + type = "cd-rom" + bus = "sata" + boot_order = 1 + size = "foobar" + image = "default/leap-15.6" + } +} +`, + ExpectError: regexp.MustCompile(".*is not a parsable quantity.*"), + Check: resource.ComposeTestCheckFunc(), + }, + }, + }) +} + func testAccVirtualMachineExists(ctx context.Context, n string, vm *kubevirtv1.VirtualMachine) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n]