terraform/builtin/providers/openstack/data_source_openstack_image...

137 lines
3.9 KiB
Go

package openstack
import (
"fmt"
"testing"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
)
func TestAccOpenStackImagesV2ImageDataSource_basic(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_cirros,
},
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_basic,
Check: resource.ComposeTestCheckFunc(
testAccCheckImagesV2DataSourceID("data.openstack_images_image_v2.image_1"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "name", "CirrOS-tf"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "container_format", "bare"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "disk_format", "qcow2"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "min_disk_gb", "0"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "min_ram_mb", "0"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "protected", "false"),
resource.TestCheckResourceAttr(
"data.openstack_images_image_v2.image_1", "visibility", "private"),
),
},
},
})
}
func TestAccOpenStackImagesV2ImageDataSource_testQueries(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_cirros,
},
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_queryTag,
Check: resource.ComposeTestCheckFunc(
testAccCheckImagesV2DataSourceID("data.openstack_images_image_v2.image_1"),
),
},
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_querySizeMin,
Check: resource.ComposeTestCheckFunc(
testAccCheckImagesV2DataSourceID("data.openstack_images_image_v2.image_1"),
),
},
resource.TestStep{
Config: testAccOpenStackImagesV2ImageDataSource_querySizeMax,
Check: resource.ComposeTestCheckFunc(
testAccCheckImagesV2DataSourceID("data.openstack_images_image_v2.image_1"),
),
},
},
})
}
func testAccCheckImagesV2DataSourceID(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Can't find image data source: %s", n)
}
if rs.Primary.ID == "" {
return fmt.Errorf("Image data source ID not set")
}
return nil
}
}
// Standard CirrOS image
const testAccOpenStackImagesV2ImageDataSource_cirros = `
resource "openstack_images_image_v2" "image_1" {
name = "CirrOS-tf"
container_format = "bare"
disk_format = "qcow2"
image_source_url = "http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img"
tags = ["cirros-tf"]
}
`
var testAccOpenStackImagesV2ImageDataSource_basic = fmt.Sprintf(`
%s
data "openstack_images_image_v2" "image_1" {
most_recent = true
name = "${openstack_images_image_v2.image_1.name}"
}
`, testAccOpenStackImagesV2ImageDataSource_cirros)
var testAccOpenStackImagesV2ImageDataSource_queryTag = fmt.Sprintf(`
%s
data "openstack_images_image_v2" "image_1" {
most_recent = true
visibility = "private"
tag = "cirros-tf"
}
`, testAccOpenStackImagesV2ImageDataSource_cirros)
var testAccOpenStackImagesV2ImageDataSource_querySizeMin = fmt.Sprintf(`
%s
data "openstack_images_image_v2" "image_1" {
most_recent = true
visibility = "private"
size_min = "13000000"
}
`, testAccOpenStackImagesV2ImageDataSource_cirros)
var testAccOpenStackImagesV2ImageDataSource_querySizeMax = fmt.Sprintf(`
%s
data "openstack_images_image_v2" "image_1" {
most_recent = true
visibility = "private"
size_max = "23000000"
}
`, testAccOpenStackImagesV2ImageDataSource_cirros)