diff --git a/builder/digitalocean/builder_acc_test.go b/builder/digitalocean/builder_acc_test.go index 63d4a425b..ee9451c9a 100644 --- a/builder/digitalocean/builder_acc_test.go +++ b/builder/digitalocean/builder_acc_test.go @@ -1,17 +1,29 @@ package digitalocean import ( + "context" + "fmt" "os" "testing" + "github.com/digitalocean/godo" builderT "github.com/hashicorp/packer/helper/builder/testing" + "golang.org/x/oauth2" ) func TestBuilderAcc_basic(t *testing.T) { builderT.Test(t, builderT.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Builder: &Builder{}, - Template: testBuilderAccBasic, + Template: fmt.Sprintf(testBuilderAccBasic, "ubuntu-20-04-x64"), + }) +} + +func TestBuilderAcc_imageId(t *testing.T) { + builderT.Test(t, builderT.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Builder: &Builder{}, + Template: makeTemplateWithImageId(t), }) } @@ -21,13 +33,26 @@ func testAccPreCheck(t *testing.T) { } } +func makeTemplateWithImageId(t *testing.T) string { + token := os.Getenv("DIGITALOCEAN_API_TOKEN") + client := godo.NewClient(oauth2.NewClient(context.TODO(), &apiTokenSource{ + AccessToken: token, + })) + image, _, err := client.Images.GetBySlug(context.TODO(), "ubuntu-20-04-x64") + if err != nil { + t.Fatalf("failed to retrieve image ID: %s", err) + } + + return fmt.Sprintf(testBuilderAccBasic, image.ID) +} + const testBuilderAccBasic = ` { "builders": [{ "type": "test", "region": "nyc2", "size": "s-1vcpu-1gb", - "image": "ubuntu-20-04-x64", + "image": "%v", "ssh_username": "root", "user_data": "", "user_data_file": ""