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 `