github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/azurerm/resource_arm_virtual_network_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/Azure/azure-sdk-for-go/core/http" 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMVirtualNetwork_basic(t *testing.T) { 14 15 ri := acctest.RandInt() 16 config := fmt.Sprintf(testAccAzureRMVirtualNetwork_basic, ri, ri) 17 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testCheckAzureRMVirtualNetworkDestroy, 22 Steps: []resource.TestStep{ 23 resource.TestStep{ 24 Config: config, 25 Check: resource.ComposeTestCheckFunc( 26 testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"), 27 ), 28 }, 29 }, 30 }) 31 } 32 33 func TestAccAzureRMVirtualNetwork_withTags(t *testing.T) { 34 35 ri := acctest.RandInt() 36 preConfig := fmt.Sprintf(testAccAzureRMVirtualNetwork_withTags, ri, ri) 37 postConfig := fmt.Sprintf(testAccAzureRMVirtualNetwork_withTagsUpdated, ri, ri) 38 39 resource.Test(t, resource.TestCase{ 40 PreCheck: func() { testAccPreCheck(t) }, 41 Providers: testAccProviders, 42 CheckDestroy: testCheckAzureRMVirtualNetworkDestroy, 43 Steps: []resource.TestStep{ 44 resource.TestStep{ 45 Config: preConfig, 46 Check: resource.ComposeTestCheckFunc( 47 testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"), 48 resource.TestCheckResourceAttr( 49 "azurerm_virtual_network.test", "tags.#", "2"), 50 resource.TestCheckResourceAttr( 51 "azurerm_virtual_network.test", "tags.environment", "Production"), 52 resource.TestCheckResourceAttr( 53 "azurerm_virtual_network.test", "tags.cost_center", "MSFT"), 54 ), 55 }, 56 57 resource.TestStep{ 58 Config: postConfig, 59 Check: resource.ComposeTestCheckFunc( 60 testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"), 61 resource.TestCheckResourceAttr( 62 "azurerm_virtual_network.test", "tags.#", "1"), 63 resource.TestCheckResourceAttr( 64 "azurerm_virtual_network.test", "tags.environment", "staging"), 65 ), 66 }, 67 }, 68 }) 69 } 70 71 func testCheckAzureRMVirtualNetworkExists(name string) resource.TestCheckFunc { 72 return func(s *terraform.State) error { 73 // Ensure we have enough information in state to look up in API 74 rs, ok := s.RootModule().Resources[name] 75 if !ok { 76 return fmt.Errorf("Not found: %s", name) 77 } 78 79 virtualNetworkName := rs.Primary.Attributes["name"] 80 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 81 if !hasResourceGroup { 82 return fmt.Errorf("Bad: no resource group found in state for virtual network: %s", virtualNetworkName) 83 } 84 85 // Ensure resource group/virtual network combination exists in API 86 conn := testAccProvider.Meta().(*ArmClient).vnetClient 87 88 resp, err := conn.Get(resourceGroup, virtualNetworkName, "") 89 if err != nil { 90 return fmt.Errorf("Bad: Get on vnetClient: %s", err) 91 } 92 93 if resp.StatusCode == http.StatusNotFound { 94 return fmt.Errorf("Bad: Virtual Network %q (resource group: %q) does not exist", name, resourceGroup) 95 } 96 97 return nil 98 } 99 } 100 101 func testCheckAzureRMVirtualNetworkDestroy(s *terraform.State) error { 102 conn := testAccProvider.Meta().(*ArmClient).vnetClient 103 104 for _, rs := range s.RootModule().Resources { 105 if rs.Type != "azurerm_virtual_network" { 106 continue 107 } 108 109 name := rs.Primary.Attributes["name"] 110 resourceGroup := rs.Primary.Attributes["resource_group_name"] 111 112 resp, err := conn.Get(resourceGroup, name, "") 113 114 if err != nil { 115 return nil 116 } 117 118 if resp.StatusCode != http.StatusNotFound { 119 return fmt.Errorf("Virtual Network sitll exists:\n%#v", resp.Properties) 120 } 121 } 122 123 return nil 124 } 125 126 var testAccAzureRMVirtualNetwork_basic = ` 127 resource "azurerm_resource_group" "test" { 128 name = "acctestrg-%d" 129 location = "West US" 130 } 131 132 resource "azurerm_virtual_network" "test" { 133 name = "acctestvirtnet%d" 134 address_space = ["10.0.0.0/16"] 135 location = "West US" 136 resource_group_name = "${azurerm_resource_group.test.name}" 137 138 subnet { 139 name = "subnet1" 140 address_prefix = "10.0.1.0/24" 141 } 142 } 143 ` 144 145 var testAccAzureRMVirtualNetwork_withTags = ` 146 resource "azurerm_resource_group" "test" { 147 name = "acctestrg-%d" 148 location = "West US" 149 } 150 151 resource "azurerm_virtual_network" "test" { 152 name = "acctestvirtnet%d" 153 address_space = ["10.0.0.0/16"] 154 location = "West US" 155 resource_group_name = "${azurerm_resource_group.test.name}" 156 157 subnet { 158 name = "subnet1" 159 address_prefix = "10.0.1.0/24" 160 } 161 162 tags { 163 environment = "Production" 164 cost_center = "MSFT" 165 } 166 } 167 ` 168 169 var testAccAzureRMVirtualNetwork_withTagsUpdated = ` 170 resource "azurerm_resource_group" "test" { 171 name = "acctestrg-%d" 172 location = "West US" 173 } 174 175 resource "azurerm_virtual_network" "test" { 176 name = "acctestvirtnet%d" 177 address_space = ["10.0.0.0/16"] 178 location = "West US" 179 resource_group_name = "${azurerm_resource_group.test.name}" 180 181 subnet { 182 name = "subnet1" 183 address_prefix = "10.0.1.0/24" 184 } 185 186 tags { 187 environment = "staging" 188 } 189 } 190 `