github.com/aspring/terraform@v0.8.2-0.20161216122603-6a8619a5db2e/builtin/providers/azurerm/resource_arm_network_interface_card_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMNetworkInterface_basic(t *testing.T) { 14 rInt := acctest.RandInt() 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy, 19 Steps: []resource.TestStep{ 20 { 21 Config: testAccAzureRMNetworkInterface_basic(rInt), 22 Check: resource.ComposeTestCheckFunc( 23 testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), 24 ), 25 }, 26 }, 27 }) 28 } 29 30 func TestAccAzureRMNetworkInterface_disappears(t *testing.T) { 31 rInt := acctest.RandInt() 32 resource.Test(t, resource.TestCase{ 33 PreCheck: func() { testAccPreCheck(t) }, 34 Providers: testAccProviders, 35 CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy, 36 Steps: []resource.TestStep{ 37 { 38 Config: testAccAzureRMNetworkInterface_basic(rInt), 39 Check: resource.ComposeTestCheckFunc( 40 testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), 41 testCheckAzureRMNetworkInterfaceDisappears("azurerm_network_interface.test"), 42 ), 43 ExpectNonEmptyPlan: true, 44 }, 45 }, 46 }) 47 } 48 49 func TestAccAzureRMNetworkInterface_enableIPForwarding(t *testing.T) { 50 rInt := acctest.RandInt() 51 resource.Test(t, resource.TestCase{ 52 PreCheck: func() { testAccPreCheck(t) }, 53 Providers: testAccProviders, 54 CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy, 55 Steps: []resource.TestStep{ 56 { 57 Config: testAccAzureRMNetworkInterface_ipForwarding(rInt), 58 Check: resource.ComposeTestCheckFunc( 59 testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), 60 resource.TestCheckResourceAttr( 61 "azurerm_network_interface.test", "enable_ip_forwarding", "true"), 62 ), 63 }, 64 }, 65 }) 66 } 67 68 func TestAccAzureRMNetworkInterface_withTags(t *testing.T) { 69 rInt := acctest.RandInt() 70 resource.Test(t, resource.TestCase{ 71 PreCheck: func() { testAccPreCheck(t) }, 72 Providers: testAccProviders, 73 CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy, 74 Steps: []resource.TestStep{ 75 { 76 Config: testAccAzureRMNetworkInterface_withTags(rInt), 77 Check: resource.ComposeTestCheckFunc( 78 testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), 79 resource.TestCheckResourceAttr( 80 "azurerm_network_interface.test", "tags.%", "2"), 81 resource.TestCheckResourceAttr( 82 "azurerm_network_interface.test", "tags.environment", "Production"), 83 resource.TestCheckResourceAttr( 84 "azurerm_network_interface.test", "tags.cost_center", "MSFT"), 85 ), 86 }, 87 { 88 Config: testAccAzureRMNetworkInterface_withTagsUpdate(rInt), 89 Check: resource.ComposeTestCheckFunc( 90 testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"), 91 resource.TestCheckResourceAttr( 92 "azurerm_network_interface.test", "tags.%", "1"), 93 resource.TestCheckResourceAttr( 94 "azurerm_network_interface.test", "tags.environment", "staging"), 95 ), 96 }, 97 }, 98 }) 99 } 100 101 func testCheckAzureRMNetworkInterfaceExists(name string) resource.TestCheckFunc { 102 return func(s *terraform.State) error { 103 // Ensure we have enough information in state to look up in API 104 rs, ok := s.RootModule().Resources[name] 105 if !ok { 106 return fmt.Errorf("Not found: %s", name) 107 } 108 109 name := rs.Primary.Attributes["name"] 110 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 111 if !hasResourceGroup { 112 return fmt.Errorf("Bad: no resource group found in state for availability set: %s", name) 113 } 114 115 conn := testAccProvider.Meta().(*ArmClient).ifaceClient 116 117 resp, err := conn.Get(resourceGroup, name, "") 118 if err != nil { 119 return fmt.Errorf("Bad: Get on ifaceClient: %s", err) 120 } 121 122 if resp.StatusCode == http.StatusNotFound { 123 return fmt.Errorf("Bad: Network Interface %q (resource group: %q) does not exist", name, resourceGroup) 124 } 125 126 return nil 127 } 128 } 129 130 func testCheckAzureRMNetworkInterfaceDisappears(name string) resource.TestCheckFunc { 131 return func(s *terraform.State) error { 132 // Ensure we have enough information in state to look up in API 133 rs, ok := s.RootModule().Resources[name] 134 if !ok { 135 return fmt.Errorf("Not found: %s", name) 136 } 137 138 name := rs.Primary.Attributes["name"] 139 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 140 if !hasResourceGroup { 141 return fmt.Errorf("Bad: no resource group found in state for availability set: %s", name) 142 } 143 144 conn := testAccProvider.Meta().(*ArmClient).ifaceClient 145 146 _, err := conn.Delete(resourceGroup, name, make(chan struct{})) 147 if err != nil { 148 return fmt.Errorf("Bad: Delete on ifaceClient: %s", err) 149 } 150 151 return nil 152 } 153 } 154 155 func testCheckAzureRMNetworkInterfaceDestroy(s *terraform.State) error { 156 conn := testAccProvider.Meta().(*ArmClient).ifaceClient 157 158 for _, rs := range s.RootModule().Resources { 159 if rs.Type != "azurerm_network_interface" { 160 continue 161 } 162 163 name := rs.Primary.Attributes["name"] 164 resourceGroup := rs.Primary.Attributes["resource_group_name"] 165 166 resp, err := conn.Get(resourceGroup, name, "") 167 168 if err != nil { 169 return nil 170 } 171 172 if resp.StatusCode != http.StatusNotFound { 173 return fmt.Errorf("Network Interface still exists:\n%#v", resp.InterfacePropertiesFormat) 174 } 175 } 176 177 return nil 178 } 179 180 func testAccAzureRMNetworkInterface_basic(rInt int) string { 181 return fmt.Sprintf(` 182 resource "azurerm_resource_group" "test" { 183 name = "acctest-rg-%d" 184 location = "West US" 185 } 186 187 resource "azurerm_virtual_network" "test" { 188 name = "acceptanceTestVirtualNetwork1" 189 address_space = ["10.0.0.0/16"] 190 location = "West US" 191 resource_group_name = "${azurerm_resource_group.test.name}" 192 } 193 194 resource "azurerm_subnet" "test" { 195 name = "testsubnet" 196 resource_group_name = "${azurerm_resource_group.test.name}" 197 virtual_network_name = "${azurerm_virtual_network.test.name}" 198 address_prefix = "10.0.2.0/24" 199 } 200 201 resource "azurerm_network_interface" "test" { 202 name = "acceptanceTestNetworkInterface1" 203 location = "West US" 204 resource_group_name = "${azurerm_resource_group.test.name}" 205 206 ip_configuration { 207 name = "testconfiguration1" 208 subnet_id = "${azurerm_subnet.test.id}" 209 private_ip_address_allocation = "dynamic" 210 } 211 } 212 `, rInt) 213 } 214 215 func testAccAzureRMNetworkInterface_ipForwarding(rInt int) string { 216 return fmt.Sprintf(` 217 resource "azurerm_resource_group" "test" { 218 name = "acctest-rg-%d" 219 location = "West US" 220 } 221 222 resource "azurerm_virtual_network" "test" { 223 name = "acceptanceTestVirtualNetwork1" 224 address_space = ["10.0.0.0/16"] 225 location = "West US" 226 resource_group_name = "${azurerm_resource_group.test.name}" 227 } 228 229 resource "azurerm_subnet" "test" { 230 name = "testsubnet" 231 resource_group_name = "${azurerm_resource_group.test.name}" 232 virtual_network_name = "${azurerm_virtual_network.test.name}" 233 address_prefix = "10.0.2.0/24" 234 } 235 236 resource "azurerm_network_interface" "test" { 237 name = "acceptanceTestNetworkInterface1" 238 location = "West US" 239 resource_group_name = "${azurerm_resource_group.test.name}" 240 enable_ip_forwarding = true 241 242 ip_configuration { 243 name = "testconfiguration1" 244 subnet_id = "${azurerm_subnet.test.id}" 245 private_ip_address_allocation = "dynamic" 246 } 247 } 248 `, rInt) 249 } 250 251 func testAccAzureRMNetworkInterface_withTags(rInt int) string { 252 return fmt.Sprintf(` 253 resource "azurerm_resource_group" "test" { 254 name = "acctest-rg-%d" 255 location = "West US" 256 } 257 258 resource "azurerm_virtual_network" "test" { 259 name = "acceptanceTestVirtualNetwork1" 260 address_space = ["10.0.0.0/16"] 261 location = "West US" 262 resource_group_name = "${azurerm_resource_group.test.name}" 263 } 264 265 resource "azurerm_subnet" "test" { 266 name = "testsubnet" 267 resource_group_name = "${azurerm_resource_group.test.name}" 268 virtual_network_name = "${azurerm_virtual_network.test.name}" 269 address_prefix = "10.0.2.0/24" 270 } 271 272 resource "azurerm_network_interface" "test" { 273 name = "acceptanceTestNetworkInterface1" 274 location = "West US" 275 resource_group_name = "${azurerm_resource_group.test.name}" 276 277 ip_configuration { 278 name = "testconfiguration1" 279 subnet_id = "${azurerm_subnet.test.id}" 280 private_ip_address_allocation = "dynamic" 281 } 282 283 tags { 284 environment = "Production" 285 cost_center = "MSFT" 286 } 287 } 288 `, rInt) 289 } 290 291 func testAccAzureRMNetworkInterface_withTagsUpdate(rInt int) string { 292 return fmt.Sprintf(` 293 resource "azurerm_resource_group" "test" { 294 name = "acctest-rg-%d" 295 location = "West US" 296 } 297 298 resource "azurerm_virtual_network" "test" { 299 name = "acceptanceTestVirtualNetwork1" 300 address_space = ["10.0.0.0/16"] 301 location = "West US" 302 resource_group_name = "${azurerm_resource_group.test.name}" 303 } 304 305 resource "azurerm_subnet" "test" { 306 name = "testsubnet" 307 resource_group_name = "${azurerm_resource_group.test.name}" 308 virtual_network_name = "${azurerm_virtual_network.test.name}" 309 address_prefix = "10.0.2.0/24" 310 } 311 312 resource "azurerm_network_interface" "test" { 313 name = "acceptanceTestNetworkInterface1" 314 location = "West US" 315 resource_group_name = "${azurerm_resource_group.test.name}" 316 317 ip_configuration { 318 name = "testconfiguration1" 319 subnet_id = "${azurerm_subnet.test.id}" 320 private_ip_address_allocation = "dynamic" 321 } 322 323 tags { 324 environment = "staging" 325 } 326 } 327 `, rInt) 328 }