Skip to content

Commit 1811a53

Browse files
committed
tests: Implement incus_image_alias resource
Signed-off-by: Ruihua Wen <spiffyeight77@gmail.com>
1 parent 5e93f28 commit 1811a53

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

internal/image/resource_image.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,8 @@ func (r ImageResource) SyncState(ctx context.Context, tfState *tfsdk.State, serv
422422
return respDiags
423423
}
424424

425+
originalStateAliases := m.Aliases
426+
425427
if !m.SourceImage.IsNull() {
426428
var sourceImageModel SourceImageModel
427429
respDiags = m.SourceImage.As(ctx, &sourceImageModel, basetypes.ObjectAsOptions{})
@@ -466,6 +468,7 @@ func (r ImageResource) SyncState(ctx context.Context, tfState *tfsdk.State, serv
466468
m.Fingerprint = types.StringValue(image.Fingerprint)
467469
m.CreatedAt = types.Int64Value(image.CreatedAt.Unix())
468470
m.Aliases = aliasSet
471+
m.Aliases = originalStateAliases
469472

470473
if respDiags.HasError() {
471474
return respDiags
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package image_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
petname "github.com/dustinkirkland/golang-petname"
8+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
9+
10+
"github.com/lxc/terraform-provider-incus/internal/acctest"
11+
)
12+
13+
func TestAccImageAlias_basic(t *testing.T) {
14+
resource.Test(t, resource.TestCase{
15+
PreCheck: func() { acctest.PreCheck(t) },
16+
ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccImageAlias_basic(),
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.remote", "images"),
22+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.name", "alpine/edge"),
23+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.copy_aliases", "false"),
24+
resource.TestCheckResourceAttr("incus_image_alias.alias1", "alias", "alpine-test"),
25+
resource.TestCheckResourceAttr("incus_image_alias.alias1", "description", "Alpine Linux"),
26+
),
27+
},
28+
},
29+
})
30+
}
31+
32+
func TestAccImageAlias_project(t *testing.T) {
33+
projectName := petname.Name()
34+
35+
resource.Test(t, resource.TestCase{
36+
PreCheck: func() { acctest.PreCheck(t) },
37+
ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories,
38+
Steps: []resource.TestStep{
39+
{
40+
Config: testAccImageAlias_project(projectName),
41+
Check: resource.ComposeTestCheckFunc(
42+
resource.TestCheckResourceAttr("incus_project.project1", "name", projectName),
43+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.remote", "images"),
44+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.name", "alpine/edge"),
45+
resource.TestCheckResourceAttr("incus_image.img1", "source_image.copy_aliases", "false"),
46+
resource.TestCheckResourceAttr("incus_image.img1", "project", projectName),
47+
resource.TestCheckResourceAttr("incus_image_alias.alias1", "alias", "alpine-test"),
48+
resource.TestCheckResourceAttr("incus_image_alias.alias1", "description", "Alpine Linux"),
49+
resource.TestCheckResourceAttr("incus_image_alias.alias1", "project", projectName),
50+
),
51+
},
52+
},
53+
})
54+
}
55+
56+
func testAccImageAlias_basic() string {
57+
return `
58+
resource "incus_image" "img1" {
59+
source_image = {
60+
remote = "images"
61+
name = "alpine/edge"
62+
copy_aliases = false
63+
}
64+
}
65+
66+
resource "incus_image_alias" "alias1" {
67+
alias = "alpine-test"
68+
description = "Alpine Linux"
69+
fingerprint = incus_image.img1.fingerprint
70+
71+
depends_on = [incus_image.img1]
72+
}
73+
`
74+
}
75+
76+
func testAccImageAlias_project(project string) string {
77+
return fmt.Sprintf(`
78+
resource "incus_project" "project1" {
79+
name = "%s"
80+
}
81+
82+
resource "incus_image" "img1" {
83+
project = incus_project.project1.name
84+
85+
source_image = {
86+
remote = "images"
87+
name = "alpine/edge"
88+
copy_aliases = false
89+
}
90+
}
91+
92+
resource "incus_image_alias" "alias1" {
93+
alias = "alpine-test"
94+
description = "Alpine Linux"
95+
fingerprint = incus_image.img1.fingerprint
96+
97+
project = incus_project.project1.name
98+
depends_on = [incus_image.img1]
99+
}
100+
`, project)
101+
}

0 commit comments

Comments
 (0)