github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azurerm/resource_arm_subnet_test.go (about)

     1  package azurerm
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccAzureRMSubnet_basic(t *testing.T) {
    13  
    14  	resource.Test(t, resource.TestCase{
    15  		PreCheck:     func() { testAccPreCheck(t) },
    16  		Providers:    testAccProviders,
    17  		CheckDestroy: testCheckAzureRMSubnetDestroy,
    18  		Steps: []resource.TestStep{
    19  			resource.TestStep{
    20  				Config: testAccAzureRMSubnet_basic,
    21  				Check: resource.ComposeTestCheckFunc(
    22  					testCheckAzureRMSubnetExists("azurerm_subnet.test"),
    23  				),
    24  			},
    25  		},
    26  	})
    27  }
    28  
    29  func testCheckAzureRMSubnetExists(name string) resource.TestCheckFunc {
    30  	return func(s *terraform.State) error {
    31  		// Ensure we have enough information in state to look up in API
    32  		rs, ok := s.RootModule().Resources[name]
    33  		if !ok {
    34  			return fmt.Errorf("Not found: %s", name)
    35  		}
    36  
    37  		name := rs.Primary.Attributes["name"]
    38  		vnetName := rs.Primary.Attributes["virtual_network_name"]
    39  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
    40  		if !hasResourceGroup {
    41  			return fmt.Errorf("Bad: no resource group found in state for subnet: %s", name)
    42  		}
    43  
    44  		conn := testAccProvider.Meta().(*ArmClient).subnetClient
    45  
    46  		resp, err := conn.Get(resourceGroup, vnetName, name, "")
    47  		if err != nil {
    48  			return fmt.Errorf("Bad: Get on subnetClient: %s", err)
    49  		}
    50  
    51  		if resp.StatusCode == http.StatusNotFound {
    52  			return fmt.Errorf("Bad: Subnet %q (resource group: %q) does not exist", name, resourceGroup)
    53  		}
    54  
    55  		return nil
    56  	}
    57  }
    58  
    59  func testCheckAzureRMSubnetDestroy(s *terraform.State) error {
    60  	conn := testAccProvider.Meta().(*ArmClient).subnetClient
    61  
    62  	for _, rs := range s.RootModule().Resources {
    63  		if rs.Type != "azurerm_subnet" {
    64  			continue
    65  		}
    66  
    67  		name := rs.Primary.Attributes["name"]
    68  		vnetName := rs.Primary.Attributes["virtual_network_name"]
    69  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
    70  
    71  		resp, err := conn.Get(resourceGroup, vnetName, name, "")
    72  
    73  		if err != nil {
    74  			return nil
    75  		}
    76  
    77  		if resp.StatusCode != http.StatusNotFound {
    78  			return fmt.Errorf("Subnet still exists:\n%#v", resp.Properties)
    79  		}
    80  	}
    81  
    82  	return nil
    83  }
    84  
    85  var testAccAzureRMSubnet_basic = `
    86  resource "azurerm_resource_group" "test" {
    87      name = "acceptanceTestResourceGroup1"
    88      location = "West US"
    89  }
    90  
    91  resource "azurerm_virtual_network" "test" {
    92      name = "acceptanceTestVirtualNetwork1"
    93      address_space = ["10.0.0.0/16"]
    94      location = "West US"
    95      resource_group_name = "${azurerm_resource_group.test.name}"
    96  }
    97  
    98  resource "azurerm_subnet" "test" {
    99      name = "testsubnet"
   100      resource_group_name = "${azurerm_resource_group.test.name}"
   101      virtual_network_name = "${azurerm_virtual_network.test.name}"
   102      address_prefix = "10.0.2.0/24"
   103  }
   104  `