github.com/ggiamarchi/terraform@v0.3.7-0.20150607194748-ed2a66a46a71/builtin/providers/azure/resource_azure_virtual_network_test.go (about) 1 package azure 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/resource" 8 "github.com/hashicorp/terraform/terraform" 9 "github.com/svanharmelen/azure-sdk-for-go/management/virtualnetwork" 10 ) 11 12 func TestAccAzureVirtualNetwork_basic(t *testing.T) { 13 var network virtualnetwork.VirtualNetworkSite 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccCheckAzureVirtualNetworkDestroy, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccAzureVirtualNetwork_basic, 22 Check: resource.ComposeTestCheckFunc( 23 testAccCheckAzureVirtualNetworkExists( 24 "azure_virtual_network.foo", &network), 25 testAccCheckAzureVirtualNetworkAttributes(&network), 26 resource.TestCheckResourceAttr( 27 "azure_virtual_network.foo", "name", "terraform-vnet"), 28 resource.TestCheckResourceAttr( 29 "azure_virtual_network.foo", "location", "West US"), 30 resource.TestCheckResourceAttr( 31 "azure_virtual_network.foo", "address_space.0", "10.1.2.0/24"), 32 resource.TestCheckResourceAttr( 33 "azure_virtual_network.foo", "subnet.1787288781.name", "subnet1"), 34 resource.TestCheckResourceAttr( 35 "azure_virtual_network.foo", "subnet.1787288781.address_prefix", "10.1.2.0/25"), 36 ), 37 }, 38 }, 39 }) 40 } 41 42 func TestAccAzureVirtualNetwork_advanced(t *testing.T) { 43 var network virtualnetwork.VirtualNetworkSite 44 45 resource.Test(t, resource.TestCase{ 46 PreCheck: func() { testAccPreCheck(t) }, 47 Providers: testAccProviders, 48 CheckDestroy: testAccCheckAzureVirtualNetworkDestroy, 49 Steps: []resource.TestStep{ 50 resource.TestStep{ 51 Config: testAccAzureVirtualNetwork_advanced, 52 Check: resource.ComposeTestCheckFunc( 53 testAccCheckAzureVirtualNetworkExists( 54 "azure_virtual_network.foo", &network), 55 testAccCheckAzureVirtualNetworkAttributes(&network), 56 resource.TestCheckResourceAttr( 57 "azure_virtual_network.foo", "name", "terraform-vnet"), 58 resource.TestCheckResourceAttr( 59 "azure_virtual_network.foo", "location", "West US"), 60 resource.TestCheckResourceAttr( 61 "azure_virtual_network.foo", "address_space.0", "10.1.2.0/24"), 62 resource.TestCheckResourceAttr( 63 "azure_virtual_network.foo", "subnet.33778499.name", "subnet1"), 64 resource.TestCheckResourceAttr( 65 "azure_virtual_network.foo", "subnet.33778499.address_prefix", "10.1.2.0/25"), 66 resource.TestCheckResourceAttr( 67 "azure_virtual_network.foo", "subnet.33778499.security_group", "terraform-security-group1"), 68 ), 69 }, 70 }, 71 }) 72 } 73 74 func TestAccAzureVirtualNetwork_update(t *testing.T) { 75 var network virtualnetwork.VirtualNetworkSite 76 77 resource.Test(t, resource.TestCase{ 78 PreCheck: func() { testAccPreCheck(t) }, 79 Providers: testAccProviders, 80 CheckDestroy: testAccCheckAzureVirtualNetworkDestroy, 81 Steps: []resource.TestStep{ 82 resource.TestStep{ 83 Config: testAccAzureVirtualNetwork_advanced, 84 Check: resource.ComposeTestCheckFunc( 85 testAccCheckAzureVirtualNetworkExists( 86 "azure_virtual_network.foo", &network), 87 testAccCheckAzureVirtualNetworkAttributes(&network), 88 resource.TestCheckResourceAttr( 89 "azure_virtual_network.foo", "name", "terraform-vnet"), 90 resource.TestCheckResourceAttr( 91 "azure_virtual_network.foo", "location", "West US"), 92 resource.TestCheckResourceAttr( 93 "azure_virtual_network.foo", "address_space.0", "10.1.2.0/24"), 94 resource.TestCheckResourceAttr( 95 "azure_virtual_network.foo", "subnet.33778499.name", "subnet1"), 96 resource.TestCheckResourceAttr( 97 "azure_virtual_network.foo", "subnet.33778499.address_prefix", "10.1.2.0/25"), 98 resource.TestCheckResourceAttr( 99 "azure_virtual_network.foo", "subnet.33778499.security_group", "terraform-security-group1"), 100 ), 101 }, 102 103 resource.TestStep{ 104 Config: testAccAzureVirtualNetwork_update, 105 Check: resource.ComposeTestCheckFunc( 106 testAccCheckAzureVirtualNetworkExists( 107 "azure_virtual_network.foo", &network), 108 testAccCheckAzureVirtualNetworkAttributes(&network), 109 resource.TestCheckResourceAttr( 110 "azure_virtual_network.foo", "name", "terraform-vnet"), 111 resource.TestCheckResourceAttr( 112 "azure_virtual_network.foo", "location", "West US"), 113 resource.TestCheckResourceAttr( 114 "azure_virtual_network.foo", "address_space.0", "10.1.3.0/24"), 115 resource.TestCheckResourceAttr( 116 "azure_virtual_network.foo", "subnet.514595123.name", "subnet1"), 117 resource.TestCheckResourceAttr( 118 "azure_virtual_network.foo", "subnet.514595123.address_prefix", "10.1.3.128/25"), 119 resource.TestCheckResourceAttr( 120 "azure_virtual_network.foo", "subnet.514595123.security_group", "terraform-security-group2"), 121 ), 122 }, 123 }, 124 }) 125 } 126 127 func testAccCheckAzureVirtualNetworkExists( 128 n string, 129 network *virtualnetwork.VirtualNetworkSite) resource.TestCheckFunc { 130 return func(s *terraform.State) error { 131 rs, ok := s.RootModule().Resources[n] 132 if !ok { 133 return fmt.Errorf("Not found: %s", n) 134 } 135 136 if rs.Primary.ID == "" { 137 return fmt.Errorf("No Virtual Network ID is set") 138 } 139 140 mc := testAccProvider.Meta().(*Client).mgmtClient 141 nc, err := virtualnetwork.NewClient(mc).GetVirtualNetworkConfiguration() 142 if err != nil { 143 return err 144 } 145 146 for _, n := range nc.Configuration.VirtualNetworkSites { 147 if n.Name == rs.Primary.ID { 148 *network = n 149 150 return nil 151 } 152 } 153 154 return fmt.Errorf("Virtual Network not found") 155 } 156 } 157 158 func testAccCheckAzureVirtualNetworkAttributes( 159 network *virtualnetwork.VirtualNetworkSite) resource.TestCheckFunc { 160 return func(s *terraform.State) error { 161 162 if network.Name != "terraform-vnet" { 163 return fmt.Errorf("Bad name: %s", network.Name) 164 } 165 166 if network.Location != "West US" { 167 return fmt.Errorf("Bad location: %s", network.Location) 168 } 169 170 return nil 171 } 172 } 173 174 func testAccCheckAzureVirtualNetworkDestroy(s *terraform.State) error { 175 mc := testAccProvider.Meta().(*Client).mgmtClient 176 177 for _, rs := range s.RootModule().Resources { 178 if rs.Type != "azure_virtual_network" { 179 continue 180 } 181 182 if rs.Primary.ID == "" { 183 return fmt.Errorf("No Virtual Network ID is set") 184 } 185 186 nc, err := virtualnetwork.NewClient(mc).GetVirtualNetworkConfiguration() 187 if err != nil { 188 return fmt.Errorf("Error retrieving Virtual Network Configuration: %s", err) 189 } 190 191 for _, n := range nc.Configuration.VirtualNetworkSites { 192 if n.Name == rs.Primary.ID { 193 return fmt.Errorf("Resource %s still exists", rs.Primary.ID) 194 } 195 } 196 } 197 198 return nil 199 } 200 201 const testAccAzureVirtualNetwork_basic = ` 202 resource "azure_virtual_network" "foo" { 203 name = "terraform-vnet" 204 address_space = ["10.1.2.0/24"] 205 location = "West US" 206 207 subnet { 208 name = "subnet1" 209 address_prefix = "10.1.2.0/25" 210 } 211 }` 212 213 const testAccAzureVirtualNetwork_advanced = ` 214 resource "azure_security_group" "foo" { 215 name = "terraform-security-group1" 216 location = "West US" 217 218 rule { 219 name = "RDP" 220 priority = 101 221 source_cidr = "*" 222 source_port = "*" 223 destination_cidr = "*" 224 destination_port = "3389" 225 protocol = "TCP" 226 } 227 } 228 229 resource "azure_virtual_network" "foo" { 230 name = "terraform-vnet" 231 address_space = ["10.1.2.0/24"] 232 location = "West US" 233 234 subnet { 235 name = "subnet1" 236 address_prefix = "10.1.2.0/25" 237 security_group = "${azure_security_group.foo.name}" 238 } 239 }` 240 241 const testAccAzureVirtualNetwork_update = ` 242 resource "azure_security_group" "foo" { 243 name = "terraform-security-group1" 244 location = "West US" 245 246 rule { 247 name = "RDP" 248 priority = 101 249 source_cidr = "*" 250 source_port = "*" 251 destination_cidr = "*" 252 destination_port = "3389" 253 protocol = "TCP" 254 } 255 } 256 257 resource "azure_security_group" "bar" { 258 name = "terraform-security-group2" 259 location = "West US" 260 261 rule { 262 name = "SSH" 263 priority = 101 264 source_cidr = "*" 265 source_port = "*" 266 destination_cidr = "*" 267 destination_port = "22" 268 protocol = "TCP" 269 } 270 } 271 272 resource "azure_virtual_network" "foo" { 273 name = "terraform-vnet" 274 address_space = ["10.1.3.0/24"] 275 location = "West US" 276 277 subnet { 278 name = "subnet1" 279 address_prefix = "10.1.3.128/25" 280 security_group = "${azure_security_group.bar.name}" 281 } 282 }`