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