github.com/bradfeehan/terraform@v0.7.0-rc3.0.20170529055808-34b45c5ad841/builtin/providers/ovh/resource_ovh_publiccloud_private_network_test.go (about)

     1  package ovh
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  var testAccPublicCloudPrivateNetworkConfig = fmt.Sprintf(`
    13  resource "ovh_vrack_publiccloud_attachment" "attach" {
    14    vrack_id = "%s"
    15    project_id = "%s"
    16  }
    17  
    18  data "ovh_publiccloud_regions" "regions" {
    19    project_id = "${ovh_vrack_publiccloud_attachment.attach.project_id}"
    20  }
    21  
    22  data "ovh_publiccloud_region" "region_attr" {
    23    count = 2
    24    project_id = "${data.ovh_publiccloud_regions.regions.project_id}"
    25    name = "${element(data.ovh_publiccloud_regions.regions.names, count.index)}"
    26  }
    27  
    28  resource "ovh_publiccloud_private_network" "network" {
    29    project_id  = "${ovh_vrack_publiccloud_attachment.attach.project_id}"
    30    vlan_id = 0
    31    name = "terraform_testacc_private_net"
    32    regions     = ["${data.ovh_publiccloud_regions.regions.names}"]
    33  }
    34  `, os.Getenv("OVH_VRACK"), os.Getenv("OVH_PUBLIC_CLOUD"))
    35  
    36  func TestAccPublicCloudPrivateNetwork_basic(t *testing.T) {
    37  	resource.Test(t, resource.TestCase{
    38  		PreCheck:     func() { testAccCheckPublicCloudPrivateNetworkPreCheck(t) },
    39  		Providers:    testAccProviders,
    40  		CheckDestroy: testAccCheckPublicCloudPrivateNetworkDestroy,
    41  		Steps: []resource.TestStep{
    42  			resource.TestStep{
    43  				Config: testAccPublicCloudPrivateNetworkConfig,
    44  				Check: resource.ComposeTestCheckFunc(
    45  					testAccCheckVRackPublicCloudAttachmentExists("ovh_vrack_publiccloud_attachment.attach", t),
    46  					testAccCheckPublicCloudPrivateNetworkExists("ovh_publiccloud_private_network.network", t),
    47  				),
    48  			},
    49  		},
    50  	})
    51  }
    52  
    53  func testAccCheckPublicCloudPrivateNetworkPreCheck(t *testing.T) {
    54  	testAccPreCheck(t)
    55  	testAccCheckPublicCloudExists(t)
    56  }
    57  
    58  func testAccCheckPublicCloudPrivateNetworkExists(n string, t *testing.T) resource.TestCheckFunc {
    59  	return func(s *terraform.State) error {
    60  		config := testAccProvider.Meta().(*Config)
    61  
    62  		rs, ok := s.RootModule().Resources[n]
    63  		if !ok {
    64  			return fmt.Errorf("Not found: %s", n)
    65  		}
    66  
    67  		if rs.Primary.ID == "" {
    68  			return fmt.Errorf("No ID is set")
    69  		}
    70  
    71  		if rs.Primary.Attributes["project_id"] == "" {
    72  			return fmt.Errorf("No Project ID is set")
    73  		}
    74  
    75  		return publicCloudPrivateNetworkExists(rs.Primary.Attributes["project_id"], rs.Primary.ID, config.OVHClient)
    76  	}
    77  }
    78  
    79  func testAccCheckPublicCloudPrivateNetworkDestroy(s *terraform.State) error {
    80  	config := testAccProvider.Meta().(*Config)
    81  	for _, rs := range s.RootModule().Resources {
    82  		if rs.Type != "ovh_publiccloud_private_network" {
    83  			continue
    84  		}
    85  
    86  		err := publicCloudPrivateNetworkExists(rs.Primary.Attributes["project_id"], rs.Primary.ID, config.OVHClient)
    87  		if err == nil {
    88  			return fmt.Errorf("VRack > Public Cloud Private Network still exists")
    89  		}
    90  
    91  	}
    92  	return nil
    93  }